get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 748050,
    "url": "http://patchwork.ozlabs.org/api/patches/748050/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/skiboot/patch/1491544877.4166.152.camel@kernel.crashing.org/",
    "project": {
        "id": 44,
        "url": "http://patchwork.ozlabs.org/api/projects/44/?format=api",
        "name": "skiboot firmware development",
        "link_name": "skiboot",
        "list_id": "skiboot.lists.ozlabs.org",
        "list_email": "skiboot@lists.ozlabs.org",
        "web_url": "http://github.com/open-power/skiboot",
        "scm_url": "http://github.com/open-power/skiboot",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1491544877.4166.152.camel@kernel.crashing.org>",
    "list_archive_url": null,
    "date": "2017-04-07T06:01:17",
    "name": "[1/2] interrupts: Add an \"irq_for_each_source\" iterator",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "93442f8178a7d2a3fc0a4357168de8077a97138a",
    "submitter": {
        "id": 38,
        "url": "http://patchwork.ozlabs.org/api/people/38/?format=api",
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/skiboot/patch/1491544877.4166.152.camel@kernel.crashing.org/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/748050/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/748050/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "skiboot@lists.ozlabs.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "skiboot@lists.ozlabs.org"
        ],
        "Received": [
            "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3vzpqc2b34z9s2s\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  7 Apr 2017 16:01:32 +1000 (AEST)",
            "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3vzpqc1bBXzDqJw\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  7 Apr 2017 16:01:32 +1000 (AEST)",
            "from gate.crashing.org (gate.crashing.org [63.228.1.57])\n\t(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3vzpqR604lzDqGv\n\tfor <skiboot@lists.ozlabs.org>; Fri,  7 Apr 2017 16:01:23 +1000 (AEST)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby gate.crashing.org (8.14.1/8.13.8) with ESMTP id v3761H1N014127\n\tfor <skiboot@lists.ozlabs.org>; Fri, 7 Apr 2017 01:01:18 -0500"
        ],
        "Message-ID": "<1491544877.4166.152.camel@kernel.crashing.org>",
        "From": "Benjamin Herrenschmidt <benh@kernel.crashing.org>",
        "To": "skiboot@lists.ozlabs.org",
        "Date": "Fri, 07 Apr 2017 16:01:17 +1000",
        "X-Mailer": "Evolution 3.22.6 (3.22.6-1.fc25) ",
        "Mime-Version": "1.0",
        "Subject": "[Skiboot] [PATCH 1/2] interrupts: Add an \"irq_for_each_source\"\n\titerator",
        "X-BeenThere": "skiboot@lists.ozlabs.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "Mailing list for skiboot development <skiboot.lists.ozlabs.org>",
        "List-Unsubscribe": "<https://lists.ozlabs.org/options/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.ozlabs.org/pipermail/skiboot/>",
        "List-Post": "<mailto:skiboot@lists.ozlabs.org>",
        "List-Help": "<mailto:skiboot-request@lists.ozlabs.org?subject=help>",
        "List-Subscribe": "<https://lists.ozlabs.org/listinfo/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org",
        "Sender": "\"Skiboot\"\n\t<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>"
    },
    "content": "This will be used by subsequent XIVE reset improvements\n\nSigned-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>\n---\n core/interrupts.c    | 12 ++++++++++++\n include/interrupts.h |  6 ++++++\n 2 files changed, 18 insertions(+)",
    "diff": "diff --git a/core/interrupts.c b/core/interrupts.c\nindex 006d555..b9f4d14 100644\n--- a/core/interrupts.c\n+++ b/core/interrupts.c\n@@ -126,6 +126,18 @@ struct irq_source *irq_find_source(uint32_t isn)\n \treturn NULL;\n }\n \n+void irq_for_each_source(void (*cb)(struct irq_source *, void *), void *data)\n+{\n+\tstruct irq_source *is;\n+\n+\tlock(&irq_lock);\n+\tlist_for_each(&irq_sources, is, link)\n+\t\tcb(is, data);\n+\tlist_for_each(&irq_sources2, is, link)\n+\t\tcb(is, data);\n+\tunlock(&irq_lock);\n+}\n+\n /*\n  * This takes a 6-bit chip id and returns a 20 bit value representing\n  * the PSI interrupt. This includes all the fields above, ie, is a\ndiff --git a/include/interrupts.h b/include/interrupts.h\nindex 7576610..0376e8f 100644\n--- a/include/interrupts.h\n+++ b/include/interrupts.h\n@@ -301,6 +301,12 @@ extern void register_irq_source(const struct irq_source_ops *ops, void *data,\n extern void unregister_irq_source(uint32_t start, uint32_t count);\n extern struct irq_source *irq_find_source(uint32_t isn);\n \n+/* Warning: callback is called with internal source lock held\n+ * so don't call back into any of our irq_ APIs from it\n+ */\n+extern void irq_for_each_source(void (*cb)(struct irq_source *, void *),\n+\t\t\t\tvoid *data);\n+\n extern uint32_t get_psi_interrupt(uint32_t chip_id);\n \n extern struct dt_node *add_ics_node(void);\n",
    "prefixes": [
        "1/2"
    ]
}