get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2220430,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2220430/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260407083247.965539525@kernel.org/",
    "project": {
        "id": 26,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/26/?format=api",
        "name": "Netfilter Development",
        "link_name": "netfilter-devel",
        "list_id": "netfilter-devel.vger.kernel.org",
        "list_email": "netfilter-devel@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20260407083247.965539525@kernel.org>",
    "date": "2026-04-07T08:54:48",
    "name": "[07/12] alarmtimer: Provide alarmtimer_start()",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "44b6e200ab8222a5632c4cc0f2449d43d721073d",
    "submitter": {
        "id": 92397,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/92397/?format=api",
        "name": "Thomas Gleixner",
        "email": "tglx@kernel.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260407083247.965539525@kernel.org/mbox/",
    "series": [
        {
            "id": 498944,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/498944/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=498944",
            "date": "2026-04-07T08:54:12",
            "name": "hrtimers: Prevent hrtimer interrupt starvation",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498944/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2220430/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2220430/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <netfilter-devel+bounces-11649-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "netfilter-devel@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=B0+sjaJI;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-11649-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"B0+sjaJI\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"
        ],
        "Received": [
            "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqg9H4NRJz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 07 Apr 2026 18:58:59 +1000 (AEST)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id BDFFC308001E\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  7 Apr 2026 08:54:53 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 4208639B95E;\n\tTue,  7 Apr 2026 08:54:52 +0000 (UTC)",
            "from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id B9E7F39A7E5;\n\tTue,  7 Apr 2026 08:54:51 +0000 (UTC)",
            "by smtp.kernel.org (Postfix) with ESMTPSA id D49B7C116C6;\n\tTue,  7 Apr 2026 08:54:50 +0000 (UTC)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775552091; cv=none;\n b=n4fA6ubmxN5AwIPxILYTBy84FmnMJRierInFvV0AQwPeE99BfwpbGJlOA/fTtcXIPV2RExXScnincRtQXD16iE7G4seUjNWtERxFcol3QaGTqfEEbUzR9mkfg5c0pKCDUW8ft72M0UWNvxx8PKR6AjGSr8kpsJyg/R75B3atqs0=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775552091; c=relaxed/simple;\n\tbh=HVbYIByFSN+TWQMQtOO5s/XrlbdzeKGowXqhoZ1SPWU=;\n\th=Date:Message-ID:From:To:Cc:Subject:References:MIME-Version:\n\t Content-Type;\n b=hZQXmiFDS0AfbGm8fH5gl1kdtmN8/RT3TyvGs8vjyjJuCBoREb/9RH2GFP6GPctVTHLhcg4U9CSLzmW1Y/l0fHDU1Sko8DkYSUmwtExZ/w3y0eYantiQIQoRELVa7M1pdQP3x5oUmE4VqpNKAyBpyO33ZFREY5WkM3VfX1CjYWw=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=B0+sjaJI; arc=none smtp.client-ip=10.30.226.201",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775552091;\n\tbh=HVbYIByFSN+TWQMQtOO5s/XrlbdzeKGowXqhoZ1SPWU=;\n\th=Date:From:To:Cc:Subject:References:From;\n\tb=B0+sjaJIuGE4mFMigwRoPUvZUWwbO5cH8Gdbg09DMFOnVTG0FQYDSTQHLNVCXdK3V\n\t X7O+NDyKp+SaDBp730XnWN+59hG8wavraM+vUSg8bnAmLjFJjd0KnrE+R8aZ7SOSh3\n\t +FPJKIEsg7lQehOafwPnpQvypqLZw4RelwCUHOcXB2U7YtKIxEgKcPeVVgJxOw7nRd\n\t dHrwRPHNxLOXTuvAmvm4le081QJSzMJ54bfotCe/hQBkehWK4cyFt1iqt4sW3DNoFN\n\t B2+lYl5z30N9T5m8C991EZPdLx1BrYZ+f8vLdcVmk4YAPdhSNX+OTxM3wvSow9vxeH\n\t 8yBNvJKIew7eQ==",
        "Date": "Tue, 07 Apr 2026 10:54:48 +0200",
        "Message-ID": "<20260407083247.965539525@kernel.org>",
        "User-Agent": "quilt/0.68",
        "From": "Thomas Gleixner <tglx@kernel.org>",
        "To": "LKML <linux-kernel@vger.kernel.org>",
        "Cc": "John Stultz <jstultz@google.com>,\n Stephen Boyd <sboyd@kernel.org>,\n Calvin Owens <calvin@wbinvd.org>,\n Peter Zijlstra <peterz@infradead.org>,\n Anna-Maria Behnsen <anna-maria@linutronix.de>,\n Frederic Weisbecker <frederic@kernel.org>,\n Ingo Molnar <mingo@kernel.org>,\n Alexander Viro <viro@zeniv.linux.org.uk>,\n Christian Brauner <brauner@kernel.org>,\n Jan Kara <jack@suse.cz>,\n linux-fsdevel@vger.kernel.org,\n Sebastian Reichel <sre@kernel.org>,\n linux-pm@vger.kernel.org,\n Pablo Neira Ayuso <pablo@netfilter.org>,\n Florian Westphal <fw@strlen.de>,\n Phil Sutter <phil@nwl.cc>,\n netfilter-devel@vger.kernel.org,\n coreteam@netfilter.org",
        "Subject": "[patch 07/12] alarmtimer: Provide alarmtimer_start()",
        "References": "<20260407083219.478203185@kernel.org>",
        "Precedence": "bulk",
        "X-Mailing-List": "netfilter-devel@vger.kernel.org",
        "List-Id": "<netfilter-devel.vger.kernel.org>",
        "List-Subscribe": "<mailto:netfilter-devel+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:netfilter-devel+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8"
    },
    "content": "Alarm timers utilize hrtimers for normal operation and only switch to the\nRTC on suspend. In order to catch already expired timers early and without\ngoing through a timer interrupt cycle, provide a new start function which\ninternally uses hrtimer_start_range_ns_user().\n\nIf hrtimer_start_range_ns_user() detects an already expired timer, it does\nnot queue it. In that case remove the timer from the alarm base as well.\n\nReturn the status queued or not back to the caller to handle the early\nexpiry.\n\nSigned-off-by: Thomas Gleixner <tglx@kernel.org>\nCc: John Stultz <jstultz@google.com>\nCc: Stephen Boyd <sboyd@kernel.org>\n---\n include/linux/alarmtimer.h |    6 ++++++\n kernel/time/alarmtimer.c   |   28 ++++++++++++++++++++++++++++\n 2 files changed, 34 insertions(+)",
    "diff": "--- a/include/linux/alarmtimer.h\n+++ b/include/linux/alarmtimer.h\n@@ -42,8 +42,14 @@ struct alarm {\n \tvoid\t\t\t*data;\n };\n \n+static __always_inline ktime_t alarm_get_expires(struct alarm *alarm)\n+{\n+\treturn alarm->node.expires;\n+}\n+\n void alarm_init(struct alarm *alarm, enum alarmtimer_type type,\n \t\tvoid (*function)(struct alarm *, ktime_t));\n+bool alarmtimer_start(struct alarm *alarm, ktime_t expires, bool relative);\n void alarm_start(struct alarm *alarm, ktime_t start);\n void alarm_start_relative(struct alarm *alarm, ktime_t start);\n void alarm_restart(struct alarm *alarm);\n--- a/kernel/time/alarmtimer.c\n+++ b/kernel/time/alarmtimer.c\n@@ -365,6 +365,34 @@ void alarm_start_relative(struct alarm *\n }\n EXPORT_SYMBOL_GPL(alarm_start_relative);\n \n+/**\n+ * alarmtimer_start - Sets an alarm to fire\n+ * @alarm:\tPointer to alarm to set\n+ * @expires:\tExpiry time\n+ * @relative:\tTrue if @expires is relative\n+ *\n+ * Returns: True if the alarm was queued. False if it already expired\n+ */\n+bool alarmtimer_start(struct alarm *alarm, ktime_t expires, bool relative)\n+{\n+\tstruct alarm_base *base = &alarm_bases[alarm->type];\n+\n+\tif (relative)\n+\t\texpires = ktime_add_safe(expires, base->get_ktime());\n+\n+\ttrace_alarmtimer_start(alarm, base->get_ktime());\n+\n+\tguard(spinlock_irqsave)(&base->lock);\n+\talarm->node.expires = expires;\n+\talarmtimer_enqueue(base, alarm);\n+\tif (!hrtimer_start_range_ns_user(&alarm->timer, expires, 0, HRTIMER_MODE_ABS)) {\n+\t\talarmtimer_dequeue(base, alarm);\n+\t\treturn false;\n+\t}\n+\treturn true;\n+}\n+EXPORT_SYMBOL_GPL(alarmtimer_start);\n+\n void alarm_restart(struct alarm *alarm)\n {\n \tstruct alarm_base *base = &alarm_bases[alarm->type];\n",
    "prefixes": [
        "07/12"
    ]
}