From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
Linux PCI <linux-pci@vger.kernel.org>,
Bjorn Helgaas <helgaas@kernel.org>,
Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: [PATCH v1 3/3] PCI: ACPI: PM: Power up devices in D3cold before scanning them
Date: Mon, 04 Apr 2022 17:25:04 +0200 [thread overview]
Message-ID: <5729439.MhkbZ0Pkbq@kreacher> (raw)
In-Reply-To: <21439956.EfDdHjke4D@kreacher>
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The initial configuration of ACPI power resources on some systems
implies that some PCI devices on them are initially in D3cold.
In some cases, especially for PCIe Root Ports, this is a "logical"
D3cold, meaning that the configuration space of the device is
accessible, but some of its functionality may be missing, but it
very well may be real D3cold, in which case the device will not
be accessible at all. However, the PCI bus type driver will need
to access its configuration space in order to enumerate it.
To prevent possible device enumeration failures that may ensue as
a result of ACPI power resources being initially in the "off"
state, power up all children of the host bridge ACPI device object
that hold valid _ADR objects (which indicates that they will be
enumerated by the PCI bus type driver) and do that to all children
of the ACPI device objects corresponding to PCI bridges (including
PCIe ports).
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
drivers/acpi/pci_root.c | 2 ++
drivers/pci/pci-acpi.c | 3 +++
2 files changed, 5 insertions(+)
Index: linux-pm/drivers/acpi/pci_root.c
===================================================================
--- linux-pm.orig/drivers/acpi/pci_root.c
+++ linux-pm/drivers/acpi/pci_root.c
@@ -927,6 +927,8 @@ struct pci_bus *acpi_pci_root_create(str
host_bridge->preserve_config = 1;
ACPI_FREE(obj);
+ acpi_dev_power_up_children_with_adr(device);
+
pci_scan_child_bus(bus);
pci_set_host_bridge_release(host_bridge, acpi_pci_root_release_info,
info);
Index: linux-pm/drivers/pci/pci-acpi.c
===================================================================
--- linux-pm.orig/drivers/pci/pci-acpi.c
+++ linux-pm/drivers/pci/pci-acpi.c
@@ -1374,6 +1374,9 @@ void pci_acpi_setup(struct device *dev,
acpi_pci_wakeup(pci_dev, false);
acpi_device_power_add_dependent(adev, dev);
+
+ if (pci_is_bridge(pci_dev))
+ acpi_dev_power_up_children_with_adr(adev);
}
void pci_acpi_cleanup(struct device *dev, struct acpi_device *adev)
next prev parent reply other threads:[~2022-04-04 15:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-04 15:20 [PATCH v1 0/3] ACPI: PCI: PM: Power up PCI devices with ACPI companions upfront Rafael J. Wysocki
2022-04-04 15:21 ` [PATCH v1 1/3] ACPI: bus: Introduce acpi_dev_for_each_child() Rafael J. Wysocki
2022-04-04 15:23 ` [PATCH v1 2/3] ACPI: PM: Introduce acpi_dev_power_up_children_with_adr() Rafael J. Wysocki
2022-04-04 15:25 ` Rafael J. Wysocki [this message]
2022-04-07 17:51 ` [PATCH v1 3/3] PCI: ACPI: PM: Power up devices in D3cold before scanning them Bjorn Helgaas
2022-04-05 9:46 ` [PATCH v1 0/3] ACPI: PCI: PM: Power up PCI devices with ACPI companions upfront Mika Westerberg
2022-04-05 12:07 ` Rafael J. Wysocki
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=5729439.MhkbZ0Pkbq@kreacher \
--to=rjw@rjwysocki.net \
--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=mika.westerberg@linux.intel.com \
/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