get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2219720,
    "url": "http://patchwork.ozlabs.org/api/patches/2219720/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260403170432.v4.9.I897d478b4a9361d79cd5073207c1062fd4d0d0e4@changeid/",
    "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": "<20260403170432.v4.9.I897d478b4a9361d79cd5073207c1062fd4d0d0e4@changeid>",
    "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260403170432.v4.9.I897d478b4a9361d79cd5073207c1062fd4d0d0e4@changeid/",
    "date": "2026-04-04T00:05:03",
    "name": "[v4,9/9] driver core: Replace dev->offline + ->offline_disabled with accessors",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "e06f35fd79e8e5137b9b82a10bebd56a3ba94f80",
    "submitter": {
        "id": 9763,
        "url": "http://patchwork.ozlabs.org/api/people/9763/?format=api",
        "name": "Douglas Anderson",
        "email": "dianders@chromium.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260403170432.v4.9.I897d478b4a9361d79cd5073207c1062fd4d0d0e4@changeid/mbox/",
    "series": [
        {
            "id": 498687,
            "url": "http://patchwork.ozlabs.org/api/series/498687/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=498687",
            "date": "2026-04-04T00:04:54",
            "name": "driver core: Fix some race conditions",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/498687/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2219720/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2219720/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linuxppc-dev+bounces-19296-incoming=patchwork.ozlabs.org@lists.ozlabs.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linuxppc-dev@lists.ozlabs.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=bMF5mZ/u;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19296-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)",
            "lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2607:f8b0:4864:20::132d\"",
            "lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=chromium.org",
            "lists.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=bMF5mZ/u;\n\tdkim-atps=neutral",
            "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=chromium.org\n (client-ip=2607:f8b0:4864:20::132d; helo=mail-dy1-x132d.google.com;\n envelope-from=dianders@chromium.org; receiver=lists.ozlabs.org)"
        ],
        "Received": [
            "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\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 4fnbWm6GbXz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 04 Apr 2026 11:07:48 +1100 (AEDT)",
            "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fnbWm4wDvz2yhP;\n\tSat, 04 Apr 2026 11:07:48 +1100 (AEDT)",
            "from mail-dy1-x132d.google.com (mail-dy1-x132d.google.com\n [IPv6:2607:f8b0:4864:20::132d])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4fnbWl4mtmz2yL8\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sat, 04 Apr 2026 11:07:47 +1100 (AEDT)",
            "by mail-dy1-x132d.google.com with SMTP id\n 5a478bee46e88-2b6b0500e06so3552569eec.1\n        for <linuxppc-dev@lists.ozlabs.org>;\n Fri, 03 Apr 2026 17:07:47 -0700 (PDT)",
            "from dianders.sjc.corp.google.com\n ([2a00:79e0:2e7c:8:a8b6:55b2:3eb6:2c0e])\n        by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2ca79e1d93bsm6520716eec.12.2026.04.03.17.07.42\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Fri, 03 Apr 2026 17:07:44 -0700 (PDT)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1775261268;\n\tcv=none;\n b=oM/dfxdD9D4PiRKaTJp78IoQmCXphhOLyM82XwzsBoCvmpkix/YX7WYWhy3B/mCcE8dEhkymgO9/ZeW0lBH8bx66bR7yQCjLfAFUlWXaOoc25oK6Quw/PrjOofhF2U9bzA2nFT6nIn3JE0sTRM47y4e9uR+ZqgMuLMjHU0Kb1VVUzPC+j9+NNTIn1IFBQmhjdJDHZCJmfsMkUQe6rawOydLZIowNidTIbp+asN/KNKcYMp5RPlMjH4qgnQJVzXkaSnwFOWW7PVSCPBX2iWbaW4ki0GUTRdcJ3V/2Jgk3QQqMtJtfGLBfgPrFChIoVmDu24GbXd9FsmZ/R6y/YrK4uw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1775261268; c=relaxed/relaxed;\n\tbh=5WbWNOKgJimgI9xjyvoHzw2TjM6jyvThEk+IUd6YUTg=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=YK+M+Nk7wNeESPz4qLb/Xi2nHMlZR1szRW2+tBzpG76rjf8r5LJYbgnZQONohoummebKrzwBTApkAPcpJP5FH9jc6hEe50HdJBhqy/vD4bIHcAj1ZMkA8Oqc3Pl/Qum3lwSVNEkxbUJJ0WvjeNWsSqwc8q4RzlZ5J/2DlHA1lGS6ZvPvj3w4NijHmWMOWkip8iwtP4OKAmU7tGuSg9pMNF6PTOwXrAe6WJ4W7eLVKcki4dFfsc2wL7f8xtcD0/QfWseRIZRtPTGB5FnhRKfCDRslwdEYCDlga4XHYyGft4p0evTWk6HVd/zWkhRUGTWLxK2irVyHBCONc0vSqpOBOA==",
        "ARC-Authentication-Results": "i=1; lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=chromium.org;\n dkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=bMF5mZ/u; dkim-atps=neutral;\n spf=pass (client-ip=2607:f8b0:4864:20::132d; helo=mail-dy1-x132d.google.com;\n envelope-from=dianders@chromium.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=chromium.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=chromium.org; s=google; t=1775261266; x=1775866066;\n darn=lists.ozlabs.org;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=5WbWNOKgJimgI9xjyvoHzw2TjM6jyvThEk+IUd6YUTg=;\n        b=bMF5mZ/uHGFj937SIic8PReqQ212smItGzMZNqH3IXD4U3renvxhmtXxp3TfgKnJMy\n         pm0y1S6lN0qJ+s38mmkgH0L2b5SuySQV/AWAHbRF+H6vsDZUoOryB4ahK8/O0NBhEl0t\n         RwNBR5G/q7D9W6aNE3J77Ts2mRZmHjG7sz8Lk=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1775261266; x=1775866066;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n         :to:cc:subject:date:message-id:reply-to;\n        bh=5WbWNOKgJimgI9xjyvoHzw2TjM6jyvThEk+IUd6YUTg=;\n        b=Oj/9MHdEp1ywL9SU0topHpiFFlfrCzt0CjIli9Aq/TyaU3G/eB9yCetvnXOZ7kKbbg\n         L+XAtVHRPtDaVl14bAz5P2HAr/bdq90lxzfMatd2Yo5bGWB2pA615s65hYJhX46FKP7P\n         3FyM3qnC20VmspaWBHqTR5FyEcdO54Q8NJUR5KRAuZCIouzZDNpzdz7iO2E5o706W6Kx\n         2i7hBRBtTZiLh66LYpv8OAohomeqifPf8Ps8hvhZ2XhdW28PkKr1iYAvzQSPpbDFoy/K\n         ksGER+OJdnRKsDPLz+9OgvJdgCWickOESR778y95+8XbZvCBEJng+gKiLHWVC8xR9SiX\n         cMkw==",
        "X-Forwarded-Encrypted": "i=1;\n AJvYcCWUtlIZef59ngVBfLKSFBOdn5et8xS12N5uAY+SuqV90PpgcehUrlOIQl2MJjOG9CPrii0weuj2ir00aBY=@lists.ozlabs.org",
        "X-Gm-Message-State": "AOJu0YyAXoApeUYpMZb0nDBOx+jZUb3CPl2zp4ePg5fKfM4gDEuo/KPH\n\tGLBoNEI+kssOwcgVhj4OypmAffHIMAfrXoRr8P5nDfEJhv2VZfii+1B85Z705Athhw==",
        "X-Gm-Gg": "AeBDietAfcOdMmxmvXqDNFf7lLWyroOsAzmCBvg7a0ekoK4JEISvzAQVazcU9SsVsio\n\t+E7pJwtLJkHWUFf1JmDb/bn6bTp6KW4jPn3YhT0XFXcK1yfsxjw40dnImonqp25sf8yb0JZnyUi\n\tRojTaojDsx9bitSSD0giA6qxlCNf/GV3nRPxH/EhtAi+XlfH2DAburPZ1gF6etSwWhf4r3gf7Ha\n\txmadovZTJXfmjZUxrTW6IZr5E3SGudLbRwsKnkNwSKm44d9AR60oBzCcJmHfgTga9WJgm575rAe\n\tf1ByF2htjrA4rc8LBo/wDtHa1LT8A+7C2WqlPdu5N9f35DKLdXFA/iXcCzyV43kXag19Ah9x7Ik\n\tCUHLa4UfUBxYQTv0mBgM4R6KqITneu9ven9Nlm7aymSFuFWhafanOUcBAt8nqBvvORgcdBKg/WG\n\tojJMBXSCmRLKHm/tM5Qmy/AwMeMxZ7lO6vnzXWpR6pAdTiHgsWlX8fUlTLbVQn7Wtn6Tfpo0DQ3\n\toyENrcTFZe2Zaj+prvORw==",
        "X-Received": "by 2002:a05:7300:dc88:b0:2b7:b7e7:9025 with SMTP id\n 5a478bee46e88-2cbfcb5580fmr2229803eec.31.1775261265791;\n        Fri, 03 Apr 2026 17:07:45 -0700 (PDT)",
        "From": "Douglas Anderson <dianders@chromium.org>",
        "To": "Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\t\"Rafael J . Wysocki\" <rafael@kernel.org>,\n\tDanilo Krummrich <dakr@kernel.org>,\n\tAlan Stern <stern@rowland.harvard.edu>",
        "Cc": "Saravana Kannan <saravanak@kernel.org>,\n\tChristoph Hellwig <hch@lst.de>,\n\tEric Dumazet <edumazet@google.com>,\n\tJohan Hovold <johan@kernel.org>,\n\tLeon Romanovsky <leon@kernel.org>,\n\tAlexander Lobakin <aleksander.lobakin@intel.com>,\n\tAlexey Kardashevskiy <aik@ozlabs.ru>,\n\tRobin Murphy <robin.murphy@arm.com>,\n\tDouglas Anderson <dianders@chromium.org>,\n\tMark Brown <broonie@kernel.org>,\n\tardb@kernel.org,\n\tcatalin.marinas@arm.com,\n\tchleroy@kernel.org,\n\tdavid@kernel.org,\n\tdriver-core@lists.linux.dev,\n\tkees@kernel.org,\n\tkevin.brodsky@arm.com,\n\tlenb@kernel.org,\n\tlinux-acpi@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-cxl@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-mm@kvack.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tmaddy@linux.ibm.com,\n\tmaz@kernel.org,\n\tmiko.lenczewski@arm.com,\n\tmpe@ellerman.id.au,\n\tnpiggin@gmail.com,\n\tosalvador@suse.de,\n\toupton@kernel.org,\n\tpeterz@infradead.org,\n\ttglx@kernel.org,\n\twill@kernel.org,\n\tyangyicong@hisilicon.com,\n\tyeoreum.yun@arm.com",
        "Subject": "[PATCH v4 9/9] driver core: Replace dev->offline + ->offline_disabled\n with accessors",
        "Date": "Fri,  3 Apr 2026 17:05:03 -0700",
        "Message-ID": "\n <20260403170432.v4.9.I897d478b4a9361d79cd5073207c1062fd4d0d0e4@changeid>",
        "X-Mailer": "git-send-email 2.53.0.1213.gd9a14994de-goog",
        "In-Reply-To": "<20260404000644.522677-1-dianders@chromium.org>",
        "References": "<20260404000644.522677-1-dianders@chromium.org>",
        "X-Mailing-List": "linuxppc-dev@lists.ozlabs.org",
        "List-Id": "<linuxppc-dev.lists.ozlabs.org>",
        "List-Help": "<mailto:linuxppc-dev+help@lists.ozlabs.org>",
        "List-Owner": "<mailto:linuxppc-dev+owner@lists.ozlabs.org>",
        "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>",
        "List-Archive": "<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>",
        "List-Subscribe": "<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>",
        "List-Unsubscribe": "<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>",
        "Precedence": "list",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Spam-Status": "No, score=-0.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,\n\tSPF_HELO_NONE,SPF_PASS autolearn=disabled version=4.0.1 OzLabs 8",
        "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"
    },
    "content": "In C, bitfields are not necessarily safe to modify from multiple\nthreads without locking. Switch \"offline\" and \"offline_disabled\" over\nto the \"flags\" field so modifications are safe.\n\nCc: Rafael J. Wysocki <rafael@kernel.org>\nAcked-by: Mark Brown <broonie@kernel.org>\nSigned-off-by: Douglas Anderson <dianders@chromium.org>\n---\nNot fixing any known bugs; problem is theoretical and found by code\ninspection. Change is done somewhat manually and only lightly tested\n(mostly compile-time tested).\n\nChanges in v4:\n- Use accessor functions for flags\n\nChanges in v3:\n- New\n\n arch/arm64/kernel/cpufeature.c                 |  2 +-\n .../powerpc/platforms/pseries/hotplug-memory.c |  4 ++--\n drivers/acpi/scan.c                            |  2 +-\n drivers/base/core.c                            | 18 +++++++++---------\n drivers/base/cpu.c                             |  4 ++--\n drivers/base/memory.c                          |  2 +-\n include/linux/device.h                         | 12 ++++++------\n kernel/cpu.c                                   |  4 ++--\n 8 files changed, 24 insertions(+), 24 deletions(-)",
    "diff": "diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c\nindex 32c2dbcc0c64..c832aa565dc2 100644\n--- a/arch/arm64/kernel/cpufeature.c\n+++ b/arch/arm64/kernel/cpufeature.c\n@@ -4042,7 +4042,7 @@ static int enable_mismatched_32bit_el0(unsigned int cpu)\n \t */\n \tlucky_winner = cpu_32bit ? cpu : cpumask_any_and(cpu_32bit_el0_mask,\n \t\t\t\t\t\t\t cpu_active_mask);\n-\tget_cpu_device(lucky_winner)->offline_disabled = true;\n+\tdev_set_offline_disabled(get_cpu_device(lucky_winner));\n \tsetup_elf_hwcaps(compat_elf_hwcaps);\n \telf_hwcap_fixup();\n \tpr_info(\"Asymmetric 32-bit EL0 support detected on CPU %u; CPU hot-unplug disabled on CPU %u\\n\",\ndiff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c\nindex b2f14db59034..75f85a5da981 100644\n--- a/arch/powerpc/platforms/pseries/hotplug-memory.c\n+++ b/arch/powerpc/platforms/pseries/hotplug-memory.c\n@@ -213,9 +213,9 @@ static int dlpar_change_lmb_state(struct drmem_lmb *lmb, bool online)\n \t\treturn -EINVAL;\n \t}\n \n-\tif (online && mem_block->dev.offline)\n+\tif (online && dev_offline(&mem_block->dev))\n \t\trc = device_online(&mem_block->dev);\n-\telse if (!online && !mem_block->dev.offline)\n+\telse if (!online && !dev_offline(&mem_block->dev))\n \t\trc = device_offline(&mem_block->dev);\n \telse\n \t\trc = 0;\ndiff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c\nindex e8cdbdb46fdb..1353adbcc234 100644\n--- a/drivers/acpi/scan.c\n+++ b/drivers/acpi/scan.c\n@@ -122,7 +122,7 @@ bool acpi_scan_is_offline(struct acpi_device *adev, bool uevent)\n \tmutex_lock_nested(&adev->physical_node_lock, SINGLE_DEPTH_NESTING);\n \n \tlist_for_each_entry(pn, &adev->physical_node_list, node)\n-\t\tif (device_supports_offline(pn->dev) && !pn->dev->offline) {\n+\t\tif (device_supports_offline(pn->dev) && !dev_offline(pn->dev)) {\n \t\t\tif (uevent)\n \t\t\t\tkobject_uevent_env(&pn->dev->kobj, KOBJ_CHANGE, envp);\n \ndiff --git a/drivers/base/core.c b/drivers/base/core.c\nindex f12f3b53b4d0..79c85dbcffad 100644\n--- a/drivers/base/core.c\n+++ b/drivers/base/core.c\n@@ -2788,7 +2788,7 @@ static ssize_t online_show(struct device *dev, struct device_attribute *attr,\n \tbool val;\n \n \tdevice_lock(dev);\n-\tval = !dev->offline;\n+\tval = !dev_offline(dev);\n \tdevice_unlock(dev);\n \treturn sysfs_emit(buf, \"%u\\n\", val);\n }\n@@ -2913,7 +2913,7 @@ static int device_add_attrs(struct device *dev)\n \tif (error)\n \t\tgoto err_remove_type_groups;\n \n-\tif (device_supports_offline(dev) && !dev->offline_disabled) {\n+\tif (device_supports_offline(dev) && !dev_offline_disabled(dev)) {\n \t\terror = device_create_file(dev, &dev_attr_online);\n \t\tif (error)\n \t\t\tgoto err_remove_dev_groups;\n@@ -4178,7 +4178,7 @@ static int device_check_offline(struct device *dev, void *not_used)\n \tif (ret)\n \t\treturn ret;\n \n-\treturn device_supports_offline(dev) && !dev->offline ? -EBUSY : 0;\n+\treturn device_supports_offline(dev) && !dev_offline(dev) ? -EBUSY : 0;\n }\n \n /**\n@@ -4196,7 +4196,7 @@ int device_offline(struct device *dev)\n {\n \tint ret;\n \n-\tif (dev->offline_disabled)\n+\tif (dev_offline_disabled(dev))\n \t\treturn -EPERM;\n \n \tret = device_for_each_child(dev, NULL, device_check_offline);\n@@ -4205,13 +4205,13 @@ int device_offline(struct device *dev)\n \n \tdevice_lock(dev);\n \tif (device_supports_offline(dev)) {\n-\t\tif (dev->offline) {\n+\t\tif (dev_offline(dev)) {\n \t\t\tret = 1;\n \t\t} else {\n \t\t\tret = dev->bus->offline(dev);\n \t\t\tif (!ret) {\n \t\t\t\tkobject_uevent(&dev->kobj, KOBJ_OFFLINE);\n-\t\t\t\tdev->offline = true;\n+\t\t\t\tdev_set_offline(dev);\n \t\t\t}\n \t\t}\n \t}\n@@ -4236,11 +4236,11 @@ int device_online(struct device *dev)\n \n \tdevice_lock(dev);\n \tif (device_supports_offline(dev)) {\n-\t\tif (dev->offline) {\n+\t\tif (dev_offline(dev)) {\n \t\t\tret = dev->bus->online(dev);\n \t\t\tif (!ret) {\n \t\t\t\tkobject_uevent(&dev->kobj, KOBJ_ONLINE);\n-\t\t\t\tdev->offline = false;\n+\t\t\t\tdev_clear_offline(dev);\n \t\t\t}\n \t\t} else {\n \t\t\tret = 1;\n@@ -4714,7 +4714,7 @@ static int device_attrs_change_owner(struct device *dev, kuid_t kuid,\n \tif (error)\n \t\treturn error;\n \n-\tif (device_supports_offline(dev) && !dev->offline_disabled) {\n+\tif (device_supports_offline(dev) && !dev_offline_disabled(dev)) {\n \t\t/* Change online device attributes of @dev to @kuid/@kgid. */\n \t\terror = sysfs_file_change_owner(kobj, dev_attr_online.attr.name,\n \t\t\t\t\t\tkuid, kgid);\ndiff --git a/drivers/base/cpu.c b/drivers/base/cpu.c\nindex 875abdc9942e..19d288a3c80c 100644\n--- a/drivers/base/cpu.c\n+++ b/drivers/base/cpu.c\n@@ -422,8 +422,8 @@ int register_cpu(struct cpu *cpu, int num)\n \tcpu->dev.id = num;\n \tcpu->dev.bus = &cpu_subsys;\n \tcpu->dev.release = cpu_device_release;\n-\tcpu->dev.offline_disabled = !cpu->hotpluggable;\n-\tcpu->dev.offline = !cpu_online(num);\n+\tdev_assign_offline_disabled(&cpu->dev, !cpu->hotpluggable);\n+\tdev_assign_offline(&cpu->dev, !cpu_online(num));\n \tcpu->dev.of_node = of_get_cpu_node(num, NULL);\n \tcpu->dev.groups = common_cpu_attr_groups;\n \tif (cpu->hotpluggable)\ndiff --git a/drivers/base/memory.c b/drivers/base/memory.c\nindex a3091924918b..5005654f44fa 100644\n--- a/drivers/base/memory.c\n+++ b/drivers/base/memory.c\n@@ -697,7 +697,7 @@ static int __add_memory_block(struct memory_block *memory)\n \tmemory->dev.id = memory->start_section_nr / sections_per_block;\n \tmemory->dev.release = memory_block_release;\n \tmemory->dev.groups = memory_memblk_attr_groups;\n-\tmemory->dev.offline = memory->state == MEM_OFFLINE;\n+\tdev_assign_offline(&memory->dev, memory->state == MEM_OFFLINE);\n \n \tret = device_register(&memory->dev);\n \tif (ret) {\ndiff --git a/include/linux/device.h b/include/linux/device.h\nindex 8132aab17e04..65fc6c566cc6 100644\n--- a/include/linux/device.h\n+++ b/include/linux/device.h\n@@ -485,6 +485,8 @@ struct device_physical_location {\n  *\t\tarchitecture supports non-coherent devices.\n  * @DEV_FLAG_OF_NODE_REUSED: Set if the device-tree node is shared with an\n  *\t\tancestor device.\n+ * @DEV_FLAG_OFFLINE_DISABLED: If set, the device is permanently online.\n+ * @DEV_FLAG_OFFLINE: Set after successful invocation of bus type's .offline().\n  */\n enum struct_device_flags {\n \tDEV_FLAG_READY_TO_PROBE = 0,\n@@ -495,6 +497,8 @@ enum struct_device_flags {\n \tDEV_FLAG_STATE_SYNCED = 5,\n \tDEV_FLAG_DMA_COHERENT = 6,\n \tDEV_FLAG_OF_NODE_REUSED = 7,\n+\tDEV_FLAG_OFFLINE_DISABLED = 8,\n+\tDEV_FLAG_OFFLINE = 9,\n \n \tDEV_FLAG_COUNT\n };\n@@ -573,9 +577,6 @@ enum struct_device_flags {\n  * @removable:  Whether the device can be removed from the system. This\n  *              should be set by the subsystem / bus driver that discovered\n  *              the device.\n- *\n- * @offline_disabled: If set, the device is permanently online.\n- * @offline:\tSet after successful invocation of bus type's .offline().\n  * @flags:\tDEV_FLAG_XXX flags. Use atomic bitfield operations to modify.\n  *\n  * At the lowest level, every device in a Linux system is represented by an\n@@ -680,9 +681,6 @@ struct device {\n \n \tenum device_removable\tremovable;\n \n-\tbool\t\t\toffline_disabled:1;\n-\tbool\t\t\toffline:1;\n-\n \tDECLARE_BITMAP(flags, DEV_FLAG_COUNT);\n };\n \n@@ -716,6 +714,8 @@ __create_dev_flag_accessors(dma_ops_bypass, DEV_FLAG_DMA_OPS_BYPASS);\n __create_dev_flag_accessors(state_synced, DEV_FLAG_STATE_SYNCED);\n __create_dev_flag_accessors(dma_coherent, DEV_FLAG_DMA_COHERENT);\n __create_dev_flag_accessors(of_node_reused, DEV_FLAG_OF_NODE_REUSED);\n+__create_dev_flag_accessors(offline_disabled, DEV_FLAG_OFFLINE_DISABLED);\n+__create_dev_flag_accessors(offline, DEV_FLAG_OFFLINE);\n \n /**\n  * struct device_link - Device link representation.\ndiff --git a/kernel/cpu.c b/kernel/cpu.c\nindex bc4f7a9ba64e..f975bb34915b 100644\n--- a/kernel/cpu.c\n+++ b/kernel/cpu.c\n@@ -2639,7 +2639,7 @@ static void cpuhp_offline_cpu_device(unsigned int cpu)\n {\n \tstruct device *dev = get_cpu_device(cpu);\n \n-\tdev->offline = true;\n+\tdev_set_offline(dev);\n \t/* Tell user space about the state change */\n \tkobject_uevent(&dev->kobj, KOBJ_OFFLINE);\n }\n@@ -2648,7 +2648,7 @@ static void cpuhp_online_cpu_device(unsigned int cpu)\n {\n \tstruct device *dev = get_cpu_device(cpu);\n \n-\tdev->offline = false;\n+\tdev_clear_offline(dev);\n \t/* Tell user space about the state change */\n \tkobject_uevent(&dev->kobj, KOBJ_ONLINE);\n }\n",
    "prefixes": [
        "v4",
        "9/9"
    ]
}