get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/1238835/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 1238835,
    "url": "http://patchwork.ozlabs.org/api/patches/1238835/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20200216193005.144157-19-jolsa@kernel.org/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20200216193005.144157-19-jolsa@kernel.org>",
    "list_archive_url": null,
    "date": "2020-02-16T19:30:05",
    "name": "[18/18] perf annotate: Add base support for bpf_image",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "ce09bd75d48477e92a328246220a797e61059256",
    "submitter": {
        "id": 73687,
        "url": "http://patchwork.ozlabs.org/api/people/73687/?format=api",
        "name": "Jiri Olsa",
        "email": "jolsa@kernel.org"
    },
    "delegate": {
        "id": 77147,
        "url": "http://patchwork.ozlabs.org/api/users/77147/?format=api",
        "username": "bpf",
        "first_name": "BPF",
        "last_name": "Maintainers",
        "email": "bpf@iogearbox.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20200216193005.144157-19-jolsa@kernel.org/mbox/",
    "series": [
        {
            "id": 158829,
            "url": "http://patchwork.ozlabs.org/api/series/158829/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=158829",
            "date": "2020-02-16T19:29:47",
            "name": "bpf: Add trampoline and dispatcher to /proc/kallsyms",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/158829/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1238835/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1238835/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming-netdev@ozlabs.org",
        "Delivered-To": "patchwork-incoming-netdev@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org; spf=none (no SPF record)\n\tsmtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67;\n\thelo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=kernel.org"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 48LHLW5vlDz9sP7\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n\tMon, 17 Feb 2020 06:32:03 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1728065AbgBPTcD convert rfc822-to-8bit (ORCPT\n\t<rfc822;patchwork-incoming-netdev@ozlabs.org>);\n\tSun, 16 Feb 2020 14:32:03 -0500",
            "from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:60567 \"EHLO\n\tus-smtp-1.mimecast.com\" rhost-flags-OK-OK-OK-FAIL) by\n\tvger.kernel.org with ESMTP id S1727668AbgBPTcC (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sun, 16 Feb 2020 14:32:02 -0500",
            "from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com\n\t[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id\n\tus-mta-217-M4y6KAKvO5aL9vvS_ikQCA-1; Sun, 16 Feb 2020 14:31:57 -0500",
            "from smtp.corp.redhat.com\n\t(int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mimecast-mx01.redhat.com (Postfix) with ESMTPS id E15DE1005516;\n\tSun, 16 Feb 2020 19:31:54 +0000 (UTC)",
            "from krava.redhat.com (ovpn-204-28.brq.redhat.com [10.40.204.28])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 7269F8574E;\n\tSun, 16 Feb 2020 19:31:47 +0000 (UTC)"
        ],
        "From": "Jiri Olsa <jolsa@kernel.org>",
        "To": "Alexei Starovoitov <ast@kernel.org>,\n\tDaniel Borkmann <daniel@iogearbox.net>",
        "Cc": "netdev@vger.kernel.org, bpf@vger.kernel.org, Andrii Nakryiko\n\t<andriin@fb.com>, Yonghong Song <yhs@fb.com>, Song Liu\n\t<songliubraving@fb.com>,         Martin KaFai Lau <kafai@fb.com>,\n\tJakub Kicinski <kuba@kernel.org>, David Miller <davem@redhat.com>,\n\t=?utf-8?b?QmrDtnJuIFTDtnBlbA==?= <bjorn.topel@intel.com>,\n\tJohn Fastabend <john.fastabend@gmail.com>, Jesper Dangaard Brouer\n\t<hawk@kernel.org>,         Arnaldo Carvalho de Melo <acme@redhat.com>",
        "Subject": "[PATCH 18/18] perf annotate: Add base support for bpf_image",
        "Date": "Sun, 16 Feb 2020 20:30:05 +0100",
        "Message-Id": "<20200216193005.144157-19-jolsa@kernel.org>",
        "In-Reply-To": "<20200216193005.144157-1-jolsa@kernel.org>",
        "References": "<20200216193005.144157-1-jolsa@kernel.org>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.11",
        "X-MC-Unique": "M4y6KAKvO5aL9vvS_ikQCA-1",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "kernel.org",
        "Content-Type": "text/plain; charset=WINDOWS-1252",
        "Content-Transfer-Encoding": "8BIT",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Adding the DSO_BINARY_TYPE__BPF_IMAGE dso binary type\nto recognize bpf images that carry trampoline or dispatcher.\n\nUpcoming patches will add support to read the image data,\nstore it within the BPF feature in perf.data and display\nit for annotation purposes.\n\nCurrently we only display following message:\n\n  # ./perf annotate bpf_trampoline_24456 --stdio\n   Percent |      Source code & Disassembly of . for cycles (504  ...\n  --------------------------------------------------------------- ...\n           :       to be implemented\n\nSigned-off-by: Jiri Olsa <jolsa@kernel.org>\n---\n tools/perf/util/annotate.c | 20 ++++++++++++++++++++\n tools/perf/util/dso.c      |  1 +\n tools/perf/util/dso.h      |  1 +\n tools/perf/util/machine.c  | 11 +++++++++++\n tools/perf/util/symbol.c   |  1 +\n 5 files changed, 34 insertions(+)",
    "diff": "diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c\nindex ca73fb74ad03..d9e606e11936 100644\n--- a/tools/perf/util/annotate.c\n+++ b/tools/perf/util/annotate.c\n@@ -1843,6 +1843,24 @@ static int symbol__disassemble_bpf(struct symbol *sym __maybe_unused,\n }\n #endif // defined(HAVE_LIBBFD_SUPPORT) && defined(HAVE_LIBBPF_SUPPORT)\n \n+static int\n+symbol__disassemble_bpf_image(struct symbol *sym,\n+\t\t\t      struct annotate_args *args)\n+{\n+\tstruct annotation *notes = symbol__annotation(sym);\n+\tstruct disasm_line *dl;\n+\n+\targs->offset = -1;\n+\targs->line = strdup(\"to be implemented\");\n+\targs->line_nr = 0;\n+\tdl = disasm_line__new(args);\n+\tif (dl)\n+\t\tannotation_line__add(&dl->al, &notes->src->source);\n+\n+\tfree(args->line);\n+\treturn 0;\n+}\n+\n /*\n  * Possibly create a new version of line with tabs expanded. Returns the\n  * existing or new line, storage is updated if a new line is allocated. If\n@@ -1942,6 +1960,8 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args)\n \n \tif (dso->binary_type == DSO_BINARY_TYPE__BPF_PROG_INFO) {\n \t\treturn symbol__disassemble_bpf(sym, args);\n+\t} else if (dso->binary_type == DSO_BINARY_TYPE__BPF_IMAGE) {\n+\t\treturn symbol__disassemble_bpf_image(sym, args);\n \t} else if (dso__is_kcore(dso)) {\n \t\tkce.kcore_filename = symfs_filename;\n \t\tkce.addr = map__rip_2objdump(map, sym->start);\ndiff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c\nindex 91f21239608b..f338990e0fe6 100644\n--- a/tools/perf/util/dso.c\n+++ b/tools/perf/util/dso.c\n@@ -191,6 +191,7 @@ int dso__read_binary_type_filename(const struct dso *dso,\n \tcase DSO_BINARY_TYPE__GUEST_KALLSYMS:\n \tcase DSO_BINARY_TYPE__JAVA_JIT:\n \tcase DSO_BINARY_TYPE__BPF_PROG_INFO:\n+\tcase DSO_BINARY_TYPE__BPF_IMAGE:\n \tcase DSO_BINARY_TYPE__NOT_FOUND:\n \t\tret = -1;\n \t\tbreak;\ndiff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h\nindex 2db64b79617a..9553a1fd9e8a 100644\n--- a/tools/perf/util/dso.h\n+++ b/tools/perf/util/dso.h\n@@ -40,6 +40,7 @@ enum dso_binary_type {\n \tDSO_BINARY_TYPE__GUEST_KCORE,\n \tDSO_BINARY_TYPE__OPENEMBEDDED_DEBUGINFO,\n \tDSO_BINARY_TYPE__BPF_PROG_INFO,\n+\tDSO_BINARY_TYPE__BPF_IMAGE,\n \tDSO_BINARY_TYPE__NOT_FOUND,\n };\n \ndiff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c\nindex 463ada5117f8..372ed147bed5 100644\n--- a/tools/perf/util/machine.c\n+++ b/tools/perf/util/machine.c\n@@ -719,6 +719,12 @@ int machine__process_switch_event(struct machine *machine __maybe_unused,\n \treturn 0;\n }\n \n+static int is_bpf_image(const char *name)\n+{\n+\treturn strncmp(name, \"bpf_trampoline_\", sizeof(\"bpf_trampoline_\") - 1) ||\n+\t       strncmp(name, \"bpf_dispatcher_\", sizeof(\"bpf_dispatcher_\") - 1);\n+}\n+\n static int machine__process_ksymbol_register(struct machine *machine,\n \t\t\t\t\t     union perf_event *event,\n \t\t\t\t\t     struct perf_sample *sample __maybe_unused)\n@@ -743,6 +749,11 @@ static int machine__process_ksymbol_register(struct machine *machine,\n \t\tmap->end = map->start + event->ksymbol.len;\n \t\tmaps__insert(&machine->kmaps, map);\n \t\tdso__set_loaded(dso);\n+\n+\t\tif (is_bpf_image(event->ksymbol.name)) {\n+\t\t\tdso->binary_type = DSO_BINARY_TYPE__BPF_IMAGE;\n+\t\t\tdso__set_long_name(dso, \"\", false);\n+\t\t}\n \t}\n \n \tsym = symbol__new(map->map_ip(map, map->start),\ndiff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c\nindex 3b379b1296f1..e6caec4b6054 100644\n--- a/tools/perf/util/symbol.c\n+++ b/tools/perf/util/symbol.c\n@@ -1537,6 +1537,7 @@ static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod,\n \t\treturn true;\n \n \tcase DSO_BINARY_TYPE__BPF_PROG_INFO:\n+\tcase DSO_BINARY_TYPE__BPF_IMAGE:\n \tcase DSO_BINARY_TYPE__NOT_FOUND:\n \tdefault:\n \t\treturn false;\n",
    "prefixes": [
        "18/18"
    ]
}