From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: Linux PM <linux-pm@vger.kernel.org>,
Linux PCI <linux-pci@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Bjorn Helgaas <helgaas@kernel.org>, Armin Wolf <w_armin@gmx.de>
Subject: [PATCH v1 1/2] PCI: ACPI: PM: Rework root bus notification setup
Date: Mon, 08 Dec 2025 13:11:58 +0100 [thread overview]
Message-ID: <2249851.irdbgypaU6@rafael.j.wysocki> (raw)
In-Reply-To: <2395536.ElGaqSPkdT@rafael.j.wysocki>
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Since pci_acpi_add_bus_pm_notifier() is only suitable for adding ACPI
PM notifiers to root buses, rename it to pci_acpi_add_root_pm_notifier()
and modify it to take an additional "root" argument, which is then used
for passing a PCI root bridge device pointer to acpi_add_pm_notifier().
That function uses it to populate the "dev" field in the context
structure attached to the ACPI device object that will receive the
ACPI "wake" notifications on behalf of the given PCI root bus. The
context structure in question is passed to pci_acpi_wake_bus(), so
the latter can be simplified quite a bit now because the target PCI
host bridge structure address can be derived from "dev".
No intentional functional impact.
This change will also facilitate a subsequent update related to the
registration of wakeup sources.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/pci_root.c | 2 +-
drivers/pci/pci-acpi.c | 15 ++++++---------
include/linux/pci-acpi.h | 3 ++-
3 files changed, 9 insertions(+), 11 deletions(-)
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -738,7 +738,7 @@ static int acpi_pci_root_add(struct acpi
if (no_aspm)
pcie_no_aspm();
- pci_acpi_add_bus_pm_notifier(device);
+ pci_acpi_add_root_pm_notifier(device, root);
device_set_wakeup_capable(root->bus->bridge, device->wakeup.flags.valid);
if (hotadd) {
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -847,12 +847,7 @@ bool shpchp_is_native(struct pci_dev *br
*/
static void pci_acpi_wake_bus(struct acpi_device_wakeup_context *context)
{
- struct acpi_device *adev;
- struct acpi_pci_root *root;
-
- adev = container_of(context, struct acpi_device, wakeup.context);
- root = acpi_driver_data(adev);
- pci_pme_wakeup_bus(root->bus);
+ pci_pme_wakeup_bus(to_pci_host_bridge(context->dev)->bus);
}
/**
@@ -885,12 +880,14 @@ static void pci_acpi_wake_dev(struct acp
}
/**
- * pci_acpi_add_bus_pm_notifier - Register PM notifier for root PCI bus.
+ * pci_acpi_add_root_pm_notifier - Register PM notifier for root PCI bus.
* @dev: PCI root bridge ACPI device.
+ * @pci_root: PCI root corresponding to @dev.
*/
-acpi_status pci_acpi_add_bus_pm_notifier(struct acpi_device *dev)
+acpi_status pci_acpi_add_root_pm_notifier(struct acpi_device *dev,
+ struct acpi_pci_root *root)
{
- return acpi_add_pm_notifier(dev, NULL, pci_acpi_wake_bus);
+ return acpi_add_pm_notifier(dev, root->bus->bridge, pci_acpi_wake_bus);
}
/**
--- a/include/linux/pci-acpi.h
+++ b/include/linux/pci-acpi.h
@@ -12,7 +12,8 @@
#include <linux/acpi.h>
#ifdef CONFIG_ACPI
-extern acpi_status pci_acpi_add_bus_pm_notifier(struct acpi_device *dev);
+extern acpi_status pci_acpi_add_root_pm_notifier(struct acpi_device *dev,
+ struct acpi_pci_root *pci_root);
static inline acpi_status pci_acpi_remove_bus_pm_notifier(struct acpi_device *dev)
{
return acpi_remove_pm_notifier(dev);
next prev parent reply other threads:[~2025-12-08 12:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-08 12:09 [PATCH v1 0/2] PCI: ACPI: PM: Rework root bus wakeup notification setup and wakeup source registration Rafael J. Wysocki
2025-12-08 12:11 ` Rafael J. Wysocki [this message]
2025-12-08 12:13 ` [PATCH v1 2/2] ACPI: PM: Register wakeup sources under physical devices Rafael J. Wysocki
2025-12-08 20:01 ` [PATCH v1 0/2] PCI: ACPI: PM: Rework root bus wakeup notification setup and wakeup source registration Armin Wolf
2025-12-09 11:31 ` Rafael J. Wysocki
2025-12-09 13:56 ` Armin Wolf
2025-12-09 21:59 ` Armin Wolf
2025-12-09 22:18 ` Rafael J. Wysocki
2025-12-10 0:29 ` Armin Wolf
2025-12-10 1:56 ` Rafael J. Wysocki
2025-12-20 12:56 ` Armin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2249851.irdbgypaU6@rafael.j.wysocki \
--to=rafael@kernel.org \
--cc=helgaas@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=w_armin@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox