get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 703144,
    "url": "http://patchwork.ozlabs.org/api/patches/703144/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1481047767-60255-7-git-send-email-xinhui.pan@linux.vnet.ibm.com/",
    "project": {
        "id": 2,
        "url": "http://patchwork.ozlabs.org/api/projects/2/?format=api",
        "name": "Linux PPC development",
        "link_name": "linuxppc-dev",
        "list_id": "linuxppc-dev.lists.ozlabs.org",
        "list_email": "linuxppc-dev@lists.ozlabs.org",
        "web_url": "https://github.com/linuxppc/wiki/wiki",
        "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git",
        "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/",
        "list_archive_url": "https://lore.kernel.org/linuxppc-dev/",
        "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/",
        "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}"
    },
    "msgid": "<1481047767-60255-7-git-send-email-xinhui.pan@linux.vnet.ibm.com>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/1481047767-60255-7-git-send-email-xinhui.pan@linux.vnet.ibm.com/",
    "date": "2016-12-06T18:09:27",
    "name": "[v9,6/6] powerpc/pv-qspinlock: Optimise native unlock path",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "1e9dedaab4a441729cd1ece2430a0dd57520a559",
    "submitter": {
        "id": 67833,
        "url": "http://patchwork.ozlabs.org/api/people/67833/?format=api",
        "name": "xinhui",
        "email": "xinhui.pan@linux.vnet.ibm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1481047767-60255-7-git-send-email-xinhui.pan@linux.vnet.ibm.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/703144/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/703144/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>",
        "X-Original-To": [
            "patchwork-incoming@ozlabs.org",
            "linuxppc-dev@lists.ozlabs.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@ozlabs.org",
            "linuxppc-dev@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 3tY2Ms1QRpz9vd3\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed,  7 Dec 2016 00:21:45 +1100 (AEDT)",
            "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3tY2Ms0fgHzDwNK\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed,  7 Dec 2016 00:21:45 +1100 (AEDT)",
            "from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n\t[148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3tY2B61DFgzDvxR\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tWed,  7 Dec 2016 00:13:17 +1100 (AEDT)",
            "from pps.filterd (m0098413.ppops.net [127.0.0.1])\n\tby mx0b-001b2d01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id\n\tuB6D5WuY029924\n\tfor <linuxppc-dev@lists.ozlabs.org>; Tue, 6 Dec 2016 08:13:16 -0500",
            "from e23smtp08.au.ibm.com (e23smtp08.au.ibm.com [202.81.31.141])\n\tby mx0b-001b2d01.pphosted.com with ESMTP id 275w2uunjm-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <linuxppc-dev@lists.ozlabs.org>; Tue, 06 Dec 2016 08:13:15 -0500",
            "from localhost\n\tby e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <linuxppc-dev@lists.ozlabs.org> from\n\t<xinhui.pan@linux.vnet.ibm.com>; Tue, 6 Dec 2016 23:13:12 +1000",
            "from d23dlp01.au.ibm.com (202.81.31.203)\n\tby e23smtp08.au.ibm.com (202.81.31.205) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tTue, 6 Dec 2016 23:13:11 +1000",
            "from d23relay10.au.ibm.com (d23relay10.au.ibm.com [9.190.26.77])\n\tby d23dlp01.au.ibm.com (Postfix) with ESMTP id 3E6042CE805A\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tWed,  7 Dec 2016 00:13:11 +1100 (EST)",
            "from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138])\n\tby d23relay10.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n\tuB6DDBm15243256\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 7 Dec 2016 00:13:11 +1100",
            "from d23av02.au.ibm.com (localhost [127.0.0.1])\n\tby d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id\n\tuB6DDA1R000630\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 7 Dec 2016 00:13:11 +1100",
            "from ltcalpine2-lp13.aus.stglabs.ibm.com\n\t(ltcalpine2-lp13.aus.stglabs.ibm.com [9.40.195.196])\n\tby d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id\n\tuB6DCnZ1032667; Wed, 7 Dec 2016 00:13:07 +1100"
        ],
        "From": "Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>",
        "To": "linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org",
        "Subject": "[PATCH v9 6/6] powerpc/pv-qspinlock: Optimise native unlock path",
        "Date": "Tue,  6 Dec 2016 13:09:27 -0500",
        "X-Mailer": "git-send-email 2.4.11",
        "In-Reply-To": "<1481047767-60255-1-git-send-email-xinhui.pan@linux.vnet.ibm.com>",
        "References": "<1481047767-60255-1-git-send-email-xinhui.pan@linux.vnet.ibm.com>",
        "X-TM-AS-MML": "disable",
        "X-Content-Scanned": "Fidelis XPS MAILER",
        "x-cbid": "16120613-0048-0000-0000-000001E7FF7E",
        "X-IBM-AV-DETECTION": "SAVI=unused REMOTE=unused XFE=unused",
        "x-cbparentid": "16120613-0049-0000-0000-0000471F4774",
        "Message-Id": "<1481047767-60255-7-git-send-email-xinhui.pan@linux.vnet.ibm.com>",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2016-12-06_07:, , signatures=0",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000\n\tdefinitions=main-1612060208",
        "X-BeenThere": "linuxppc-dev@lists.ozlabs.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>",
        "List-Unsubscribe": "<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.ozlabs.org/pipermail/linuxppc-dev/>",
        "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>",
        "List-Help": "<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>",
        "List-Subscribe": "<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>",
        "Cc": "xinhui.pan@linux.vnet.ibm.com, peterz@infradead.org, boqun.feng@gmail.com,\n\tvirtualization@lists.linux-foundation.org, mingo@redhat.com,\n\tpaulus@samba.org, longman@redhat.com, paulmck@linux.vnet.ibm.com",
        "Errors-To": "linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org",
        "Sender": "\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"
    },
    "content": "Avoid a function call under native version of qspinlock. On powerNV,\nbafore applying this patch, every unlock is expensive. This small\noptimizes enhance the performance.\n\nWe use static_key with jump_lable which removes unnecessary loads of\nlppaca and its stuff.\n\nSigned-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>\n---\n arch/powerpc/include/asm/qspinlock_paravirt.h | 18 +++++++++++++++++-\n arch/powerpc/kernel/paravirt.c                |  4 ++++\n 2 files changed, 21 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/arch/powerpc/include/asm/qspinlock_paravirt.h b/arch/powerpc/include/asm/qspinlock_paravirt.h\nindex d87cda0..8d39446 100644\n--- a/arch/powerpc/include/asm/qspinlock_paravirt.h\n+++ b/arch/powerpc/include/asm/qspinlock_paravirt.h\n@@ -6,12 +6,14 @@\n #define _ASM_QSPINLOCK_PARAVIRT_H\n \n #include  <asm/qspinlock_paravirt_types.h>\n+#include  <linux/jump_label.h>\n \n extern void pv_lock_init(void);\n extern void native_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val);\n extern void __pv_init_lock_hash(void);\n extern void __pv_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val);\n extern void __pv_queued_spin_unlock(struct qspinlock *lock);\n+extern struct static_key_true sharedprocessor_key;\n \n static inline void pv_queued_spin_lock(struct qspinlock *lock, u32 val)\n {\n@@ -20,7 +22,21 @@ static inline void pv_queued_spin_lock(struct qspinlock *lock, u32 val)\n \n static inline void pv_queued_spin_unlock(struct qspinlock *lock)\n {\n-\tpv_lock_op.unlock(lock);\n+\t/*\n+\t * on powerNV and pSeries with jump_label, code will be\n+\t *\tPowerNV:\t\tpSeries:\n+\t *\tnop;\t\t\tb 2f;\n+\t *\tnative unlock\t\t2:\n+\t *\t\t\t\tpv unlock;\n+\t * In this way, we can do unlock quick in native case.\n+\t *\n+\t * IF jump_label is not enabled, we fall back into\n+\t * if condition, IOW, ld && cmp && bne.\n+\t */\n+\tif (static_branch_likely(&sharedprocessor_key))\n+\t\tnative_queued_spin_unlock(lock);\n+\telse\n+\t\tpv_lock_op.unlock(lock);\n }\n \n static inline void pv_wait(u8 *ptr, u8 val)\ndiff --git a/arch/powerpc/kernel/paravirt.c b/arch/powerpc/kernel/paravirt.c\nindex e697b17..a0a000e 100644\n--- a/arch/powerpc/kernel/paravirt.c\n+++ b/arch/powerpc/kernel/paravirt.c\n@@ -140,6 +140,9 @@ struct pv_lock_ops pv_lock_op = {\n };\n EXPORT_SYMBOL(pv_lock_op);\n \n+struct static_key_true sharedprocessor_key = STATIC_KEY_TRUE_INIT;\n+EXPORT_SYMBOL(sharedprocessor_key);\n+\n void __init pv_lock_init(void)\n {\n \tif (SHARED_PROCESSOR) {\n@@ -149,5 +152,6 @@ void __init pv_lock_init(void)\n \t\tpv_lock_op.unlock = __pv_queued_spin_unlock;\n \t\tpv_lock_op.wait = __pv_wait;\n \t\tpv_lock_op.kick = __pv_kick;\n+\t\tstatic_branch_disable(&sharedprocessor_key);\n \t}\n }\n",
    "prefixes": [
        "v9",
        "6/6"
    ]
}