get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2215904,
    "url": "http://patchwork.ozlabs.org/api/patches/2215904/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260325143555.451852-4-herve.codina@bootlin.com/",
    "project": {
        "id": 42,
        "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api",
        "name": "Linux GPIO development",
        "link_name": "linux-gpio",
        "list_id": "linux-gpio.vger.kernel.org",
        "list_email": "linux-gpio@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260325143555.451852-4-herve.codina@bootlin.com>",
    "list_archive_url": null,
    "date": "2026-03-25T14:35:30",
    "name": "[v6,03/27] driver core: Avoid warning when removing a device while its supplier is unbinding",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3d7a4cf1758ea2da4e53753935c73187228f5dd1",
    "submitter": {
        "id": 81983,
        "url": "http://patchwork.ozlabs.org/api/people/81983/?format=api",
        "name": "Herve Codina",
        "email": "herve.codina@bootlin.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260325143555.451852-4-herve.codina@bootlin.com/mbox/",
    "series": [
        {
            "id": 497454,
            "url": "http://patchwork.ozlabs.org/api/series/497454/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497454",
            "date": "2026-03-25T14:35:29",
            "name": "lan966x pci device: Add support for SFPs",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/497454/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2215904/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2215904/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-gpio+bounces-34139-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-gpio@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=bootlin.com header.i=@bootlin.com header.a=rsa-sha256\n header.s=dkim header.b=FFGPN5nV;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34139-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com\n header.b=\"FFGPN5nV\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=185.171.202.116",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=bootlin.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=bootlin.com"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\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 4fgqTV2G4xz1xy3\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 01:45:50 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 6C5A1310326D\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 14:37:45 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 4ABC53E4C8D;\n\tWed, 25 Mar 2026 14:37:15 +0000 (UTC)",
            "from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116])\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 3D3473E2770;\n\tWed, 25 Mar 2026 14:37:12 +0000 (UTC)",
            "from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233])\n\tby smtpout-04.galae.net (Postfix) with ESMTPS id CBB23C580B1;\n\tWed, 25 Mar 2026 14:37:38 +0000 (UTC)",
            "from mail.galae.net (mail.galae.net [212.83.136.155])\n\tby smtpout-01.galae.net (Postfix) with ESMTPS id 0EDB9601FA;\n\tWed, 25 Mar 2026 14:37:11 +0000 (UTC)",
            "from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)\n with ESMTPSA id CEB51104513C1;\n\tWed, 25 Mar 2026 15:36:52 +0100 (CET)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774449435; cv=none;\n b=Z1/+oSnpyFhcnwCFAnwaBqX6cIoYPXg/NCAGI9E3htYWuGCx3Z8vbypxsKAvxPnBEByyuyiUCX5Mhx+pGOeHW1F4a6H8ok6WPanNeVxqhWB10ao+w64Pev9klYvJuEQnPNCKLexfNtGtvLrTuACnuUxjahhVB7qdDJ46PupsFo8=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774449435; c=relaxed/simple;\n\tbh=+4o3wPaMwan2MCfaea1vEsPxc09waB5Zo6tFRpwWVm0=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=D84lTjDNnGoY3GBqIf42xoGK5ejsOa8NadZ9ebIEs+IsJdPxZHTnnSEuxrh4roAKCoSBsD6KJu8qtz9E+UllOGxlOnBMwiQv3mm/Q9PW6ARgNKSqIrikZaahnZ9ZsiclBwd9EjHko53la6g6JrP4owGig5GVRf9OEZzGrtYFC0s=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=bootlin.com;\n spf=pass smtp.mailfrom=bootlin.com;\n dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com\n header.b=FFGPN5nV; arc=none smtp.client-ip=185.171.202.116",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim;\n\tt=1774449428; h=from:subject:date:message-id:to:cc:mime-version:\n\t content-transfer-encoding:in-reply-to:references;\n\tbh=U0+APqYNxOm5BrIt/rkc9+bR4FWNwWtem6DAlTFw1es=;\n\tb=FFGPN5nVEzUE/C8alp2Y3x0pOsDaiW6bIsM+7p+PbLkuBxxT59XGJBEl1roxot4uvVgXbI\n\t//DxIJt+WmgFpZ4EsD/3v3lPNOLVccZCMXTL6r+ZmIkKoMPUl3I8kA1NaIcqljxG1r3woQ\n\tqTwJYgCC6MKUTfwMb2oSfh1kIcsQM+O83g2M8ekeEovZ+vrMG7dQ02YJANblxD/hbd6P17\n\ttrRjtx6mltWXztorri0PKGTWdZqxadhZl9ZEZGDE1RcgmLW+Yqh/J+w+Tqyd8I4feKYyqO\n\t3vfvwRvCxE+SB7UgA8ugLwLjeuMJlndhTFZ/nTTSYYWmj2g3DaJVKWsQukj48w==",
        "From": "Herve Codina <herve.codina@bootlin.com>",
        "To": "Andrew Lunn <andrew@lunn.ch>,\n\tRob Herring <robh@kernel.org>,\n\tKrzysztof Kozlowski <krzk+dt@kernel.org>,\n\tConor Dooley <conor+dt@kernel.org>,\n\tGeert Uytterhoeven <geert+renesas@glider.be>,\n\tKalle Niemi <kaleposti@gmail.com>,\n\tMatti Vaittinen <mazziesaccount@gmail.com>,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\t\"Rafael J. Wysocki\" <rafael@kernel.org>,\n\tDanilo Krummrich <dakr@kernel.org>,\n\tFrank Li <Frank.Li@nxp.com>,\n\tSascha Hauer <s.hauer@pengutronix.de>,\n\tPengutronix Kernel Team <kernel@pengutronix.de>,\n\tFabio Estevam <festevam@gmail.com>,\n\tMichael Turquette <mturquette@baylibre.com>,\n\tStephen Boyd <sboyd@kernel.org>,\n\tAndi Shyti <andi.shyti@kernel.org>,\n\tWolfram Sang <wsa+renesas@sang-engineering.com>,\n\tPeter Rosin <peda@axentia.se>,\n\tArnd Bergmann <arnd@arndb.de>,\n\tHerve Codina <herve.codina@bootlin.com>,\n\tSaravana Kannan <saravanak@kernel.org>,\n\tBjorn Helgaas <bhelgaas@google.com>,\n\tCharles Keepax <ckeepax@opensource.cirrus.com>,\n\tRichard Fitzgerald <rf@opensource.cirrus.com>,\n\tDavid Rhodes <david.rhodes@cirrus.com>,\n\tLinus Walleij <linusw@kernel.org>,\n\tUlf Hansson <ulf.hansson@linaro.org>,\n\tMark Brown <broonie@kernel.org>,\n\tLen Brown <lenb@kernel.org>,\n\tAndy Shevchenko <andriy.shevchenko@linux.intel.com>,\n\tDaniel Scally <djrscally@gmail.com>,\n\tHeikki Krogerus <heikki.krogerus@linux.intel.com>,\n\tSakari Ailus <sakari.ailus@linux.intel.com>,\n\tDavidlohr Bueso <dave@stgolabs.net>,\n\tJonathan Cameron <jonathan.cameron@huawei.com>,\n\tDave Jiang <dave.jiang@intel.com>,\n\tAlison Schofield <alison.schofield@intel.com>,\n\tVishal Verma <vishal.l.verma@intel.com>,\n\tIra Weiny <ira.weiny@intel.com>,\n\tDan Williams <dan.j.williams@intel.com>,\n\tShawn Guo <shawnguo@kernel.org>",
        "Cc": "Wolfram Sang <wsa@kernel.org>,\n\tlinux-kernel@vger.kernel.org,\n\tdriver-core@lists.linux.dev,\n\timx@lists.linux.dev,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-clk@vger.kernel.org,\n\tlinux-i2c@vger.kernel.org,\n\tdevicetree@vger.kernel.org,\n\tlinux-pci@vger.kernel.org,\n\tlinux-sound@vger.kernel.org,\n\tpatches@opensource.cirrus.com,\n\tlinux-gpio@vger.kernel.org,\n\tlinux-pm@vger.kernel.org,\n\tlinux-spi@vger.kernel.org,\n\tlinux-acpi@vger.kernel.org,\n\tlinux-cxl@vger.kernel.org,\n\tAllan Nielsen <allan.nielsen@microchip.com>,\n\tHoratiu Vultur <horatiu.vultur@microchip.com>,\n\tSteen Hegelund <steen.hegelund@microchip.com>,\n\tLuca Ceresoli <luca.ceresoli@bootlin.com>,\n\tThomas Petazzoni <thomas.petazzoni@bootlin.com>,\n\tSaravana Kannan <saravanak@google.com>",
        "Subject": "[PATCH v6 03/27] driver core: Avoid warning when removing a device\n while its supplier is unbinding",
        "Date": "Wed, 25 Mar 2026 15:35:30 +0100",
        "Message-ID": "<20260325143555.451852-4-herve.codina@bootlin.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260325143555.451852-1-herve.codina@bootlin.com>",
        "References": "<20260325143555.451852-1-herve.codina@bootlin.com>",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-gpio@vger.kernel.org",
        "List-Id": "<linux-gpio.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-gpio+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-gpio+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Last-TLS-Session-Version": "TLSv1.3"
    },
    "content": "During driver removal, the following warning can appear:\n   WARNING: CPU: 1 PID: 139 at drivers/base/core.c:1497 __device_links_no_driver+0xcc/0xfc\n   ...\n   Call trace:\n     __device_links_no_driver+0xcc/0xfc (P)\n     device_links_driver_cleanup+0xa8/0xf0\n     device_release_driver_internal+0x208/0x23c\n     device_links_unbind_consumers+0xe0/0x108\n     device_release_driver_internal+0xec/0x23c\n     device_links_unbind_consumers+0xe0/0x108\n     device_release_driver_internal+0xec/0x23c\n     device_links_unbind_consumers+0xe0/0x108\n     device_release_driver_internal+0xec/0x23c\n     driver_detach+0xa0/0x12c\n     bus_remove_driver+0x6c/0xbc\n     driver_unregister+0x30/0x60\n     pci_unregister_driver+0x20/0x9c\n     lan966x_pci_driver_exit+0x18/0xa90 [lan966x_pci]\n\nThis warning is triggered when a consumer is removed because the links\nstatus of its supplier is not DL_DEV_DRIVER_BOUND and the link flag\nDL_FLAG_SYNC_STATE_ONLY is not set.\n\nThe topology in terms of consumers/suppliers used was the following\n(consumer ---> supplier):\n\n      i2c -----------> OIC ----> PCI device\n       |                ^\n       |                |\n       +---> pinctrl ---+\n\nWhen the PCI device is removed, the OIC (interrupt controller) has to be\nremoved. In order to remove the OIC, pinctrl and i2c need to be removed\nand to remove pinctrl, i2c need to be removed. The removal order is:\n  1) i2c\n  2) pinctrl\n  3) OIC\n  4) PCI device\n\nIn details, the removal sequence is the following (with 0000:01:00.0 the\nPCI device):\n  driver_detach: call device_release_driver_internal(0000:01:00.0)...\n    device_links_busy(0000:01:00.0):\n      links->status = DL_DEV_UNBINDING\n    device_links_unbind_consumers(0000:01:00.0):\n      0000:01:00.0--oic link->status = DL_STATE_SUPPLIER_UNBIND\n      call device_release_driver_internal(oic)...\n        device_links_busy(oic):\n          links->status = DL_DEV_UNBINDING\n        device_links_unbind_consumers(oic):\n          oic--pinctrl link->status = DL_STATE_SUPPLIER_UNBIND\n          call device_release_driver_internal(pinctrl)...\n            device_links_busy(pinctrl):\n              links->status = DL_DEV_UNBINDING\n            device_links_unbind_consumers(pinctrl):\n              pinctrl--i2c link->status = DL_STATE_SUPPLIER_UNBIND\n              call device_release_driver_internal(i2c)...\n                device_links_busy(i2c): links->status = DL_DEV_UNBINDING\n                __device_links_no_driver(i2c)...\n                  pinctrl--i2c link->status is DL_STATE_SUPPLIER_UNBIND\n                  oic--i2c link->status is DL_STATE_ACTIVE\n                  oic--i2c link->supplier->links.status is DL_DEV_UNBINDING\n\nThe warning is triggered by the i2c removal because the OIC (supplier)\nlinks status is not DL_DEV_DRIVER_BOUND. Its links status is indeed set\nto DL_DEV_UNBINDING.\n\nIt is perfectly legit to have the links status set to DL_DEV_UNBINDING\nin that case. Indeed we had started to unbind the OIC which triggered\nthe consumer unbinding and didn't finish yet when the i2c is unbound.\n\nAvoid the warning when the supplier links status is set to\nDL_DEV_UNBINDING and thus support this removal sequence without any\nwarnings.\n\nSigned-off-by: Herve Codina <herve.codina@bootlin.com>\nReviewed-by: Rafael J. Wysocki <rafael@kernel.org>\nReviewed-by: Saravana Kannan <saravanak@google.com>\n---\n drivers/base/core.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/base/core.c b/drivers/base/core.c\nindex 019fda47d089..cc6b84f8cdfb 100644\n--- a/drivers/base/core.c\n+++ b/drivers/base/core.c\n@@ -1500,7 +1500,8 @@ static void __device_links_no_driver(struct device *dev)\n \t\tif (link->supplier->links.status == DL_DEV_DRIVER_BOUND) {\n \t\t\tWRITE_ONCE(link->status, DL_STATE_AVAILABLE);\n \t\t} else {\n-\t\t\tWARN_ON(!device_link_test(link, DL_FLAG_SYNC_STATE_ONLY));\n+\t\t\tWARN_ON(link->supplier->links.status != DL_DEV_UNBINDING &&\n+\t\t\t\t!device_link_test(link, DL_FLAG_SYNC_STATE_ONLY));\n \t\t\tWRITE_ONCE(link->status, DL_STATE_DORMANT);\n \t\t}\n \t}\n",
    "prefixes": [
        "v6",
        "03/27"
    ]
}