linux/drivers/acpi
Rafael J. Wysocki 131d91b5d3 PCI/ACPI: Account for _S0W of the target bridge in acpi_pci_bridge_d3()
[ Upstream commit 8133844a8f ]

It is questionable to allow a PCI bridge to go into D3 if it has _S0W
returning D2 or a shallower power state, so modify acpi_pci_bridge_d3(() to
always take the return value of _S0W for the target bridge into account.
That is, make it return 'false' if _S0W returns D2 or a shallower power
state for the target bridge regardless of its ancestor Root Port
properties.  Of course, this also causes 'false' to be returned if the Root
Port itself is the target and its _S0W returns D2 or a shallower power
state.

However, still allow bridges without _S0W that are power-manageable via
ACPI to enter D3 to retain the current code behavior in that case.

This fixes problems where a hotplug notification is missed because a bridge
is in D3.  That means hot-added devices such as USB4 docks (and the devices
they contain) and Thunderbolt 3 devices may not work.

Link: https://lore.kernel.org/linux-pci/20221031223356.32570-1-mario.limonciello@amd.com/
Link: https://lore.kernel.org/r/12155458.O9o76ZdvQC@kreacher
Reported-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-03-11 13:50:38 +01:00
..
acpica ACPI: Don't build ACPICA with '-Os' 2023-03-10 09:29:09 +01:00
apei treewide: Convert del_timer*() to timer_shutdown*() 2022-12-25 13:38:09 -08:00
arm64 ACPI: APMT: Fix kerneldoc and indentation 2022-11-15 13:09:44 +00:00
dptf ACPI: DPTF: Drop stale link from Kconfig help 2022-09-28 17:26:25 +02:00
nfit ACPI: NFIT: fix a potential deadlock during NFIT teardown 2023-01-25 12:55:33 -08:00
numa MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
pmic ACPI: PMIC: xpower: Fix _TMP ACPI errors 2021-12-08 15:34:57 +01:00
x86 ACPI: x86: s2idle: Stop using AMD specific codepath for Rembrandt+ 2022-12-22 17:39:31 +01:00
ac.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
acpi_adxl.c ACPI/ADXL: Add address translation interface using an ACPI DSM 2018-10-16 10:03:00 +02:00
acpi_amba.c Merge branches 'acpi-ec', 'acpi-ac', 'acpi-fan', 'acpi-video' and 'acpi-amba' 2022-10-03 19:59:47 +02:00
acpi_apd.c ACPI: APD: Use the helper acpi_dev_get_memory_resources() 2022-09-10 18:22:24 +02:00
acpi_cmos_rtc.c ACPI: cmos_rtc: Using pr_fmt() and remove PREFIX 2021-06-07 15:36:45 +02:00
acpi_configfs.c ACPI: configfs: Make get_header() to return error pointer 2021-07-16 19:20:28 +02:00
acpi_dbg.c ACPI: debug: Remove the not used function 2020-11-17 18:12:34 +01:00
acpi_extlog.c ACPI: extlog: Handle multiple records 2022-10-13 20:43:10 +02:00
acpi_ffh.c ACPI: Implement a generic FFH Opregion handler 2022-11-14 19:09:07 +01:00
acpi_fpdt.c ACPI: tables: FPDT: Don't call acpi_os_map_memory() on invalid phys address 2022-09-10 18:18:34 +02:00
acpi_ipmi.c ACPI: IPMI: replace usage of found with dedicated list iterator variable 2022-03-25 18:01:40 +01:00
acpi_lpat.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_lpit.c Revert "ACPI / PM: LPIT: Register sysfs attributes based on FADT" 2022-07-15 20:04:07 +02:00
acpi_lpss.c Merge branch 'acpi-uid' 2022-10-03 20:09:22 +02:00
acpi_memhotplug.c ACPI: memhotplug: use a single static memory group for a single memory device 2021-09-08 11:50:23 -07:00
acpi_pad.c Merge branches 'acpi-fan', 'acpi-pcc', 'acpi-misc' and 'pnp' 2022-12-12 15:24:15 +01:00
acpi_pcc.c ACPI: PCC: Setup PCC Opregion handler only if platform interrupt is available 2022-11-23 19:06:56 +01:00
acpi_platform.c Merge branches 'acpi-scan', 'acpi-bus' and 'acpi-platform' 2022-09-30 20:28:22 +02:00
acpi_pnp.c ACPI: PNP: remove duplicated BRI0A49 and BDP3336 entries 2021-09-24 18:12:15 +02:00
acpi_processor.c ACPI: processor: Replace deprecated CPU-hotplug functions 2021-08-04 20:25:54 +02:00
acpi_tad.c ACPI: Use DEVICE_ATTR_<RW|RO|WO> macros 2021-01-22 16:17:19 +01:00
acpi_video.c ACPI: video: Don't enable fallback path for creating ACPI backlight by default 2022-12-22 17:26:42 +01:00
acpi_watchdog.c ACPI: watchdog: Replace open coded variant of resource_union() 2020-11-17 18:06:29 +01:00
battery.c ACPI: battery: Fix missing NUL-termination with large strings 2023-03-10 09:28:09 +01:00
bgrt.c ACPI: BGRT: use static for BGRT_SHOW kobj_attribute defines 2022-04-22 16:55:33 +02:00
blacklist.c ACPI: blacklist: Unify the message printing 2021-06-07 15:36:45 +02:00
bus.c ACPI updates for 6.2-rc1 2022-12-12 13:38:17 -08:00
button.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
container.c ACPI: container: Use acpi_dev_for_each_child() 2022-06-20 20:33:05 +02:00
cppc_acpi.c ACPI: use sysfs_emit() instead of scnprintf() 2022-12-02 20:24:55 +01:00
custom_method.c ACPI: custom_method: fix a possible memory leak 2021-04-28 19:17:54 +02:00
debugfs.c ACPI: debugfs: Remove dead ACPICA debug code 2020-09-25 18:25:51 +02:00
device_pm.c PCI/ACPI: Account for _S0W of the target bridge in acpi_pci_bridge_d3() 2023-03-11 13:50:38 +01:00
device_sysfs.c ACPI: bus: Drop driver member of struct acpi_device 2022-06-30 14:11:21 +02:00
dock.c ACPI: Use acpi_fetch_acpi_dev() instead of acpi_bus_get_device() 2021-12-17 18:45:51 +01:00
ec.c Merge branch 'acpi-ec' 2022-12-15 18:38:22 +01:00
ec_sys.c ACPI: EC: Mark the ec_sys write_support param as module_param_hw() 2021-12-01 20:19:30 +01:00
event.c Merge branches 'acpi-ec', 'acpi-apei', 'acpi-soc' and 'acpi-misc' 2021-06-29 15:51:25 +02:00
evged.c ACPI: GED: fix -Wformat 2020-11-09 19:25:20 +01:00
fan.h ACPI: DPTF: Support Meteor Lake 2022-05-25 15:37:07 +02:00
fan_attr.c ACPI: fan: Convert to use sysfs_emit_at() API 2022-12-06 12:44:14 +01:00
fan_core.c ACPI: fan: Bail out if extract package failed 2022-11-23 19:31:57 +01:00
glue.c ACPI: Fix selecting wrong ACPI fwnode for the iGPU on some Dell laptops 2023-01-10 20:23:48 +01:00
hed.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
internal.h ACPI: EC: Fix EC address space handler unregistration 2022-12-08 17:42:12 +01:00
ioapic.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
irq.c ACPI: irq: Fix some kernel-doc issues 2022-11-10 20:21:35 +01:00
Kconfig ACPI updates for 6.2-rc1 2022-12-12 13:38:17 -08:00
Makefile ACPI: Implement a generic FFH Opregion handler 2022-11-14 19:09:07 +01:00
nvs.c Merge branches 'acpi-ec', 'acpi-apei', 'acpi-soc' and 'acpi-misc' 2021-06-29 15:51:25 +02:00
osi.c ACPI: OSI: Remove Linux-HPI-Hybrid-Graphics _OSI string 2022-08-25 20:18:17 +02:00
osl.c ACPI: OSL: Remove the helper for deactivating memory region 2022-04-27 20:44:55 +02:00
pci_irq.c ACPI / PCI: fix LPIC IRQ model default PCI IRQ polarity 2022-11-26 12:57:18 +00:00
pci_link.c ACPI/PCI: Remove useless NULL pointer checks 2022-07-27 21:21:27 +02:00
pci_mcfg.c PCI: loongson: Add ACPI init support 2022-07-14 15:25:36 -05:00
pci_root.c cxl/acpi: Set ACPI's CXL _OSC to indicate RCD mode support 2022-12-05 10:32:26 -08:00
pci_slot.c ACPI: PCI: Remove unused ACPICA debug code 2020-09-25 18:25:51 +02:00
pfr_telemetry.c ACPI: pfr_telemetry: use ACPI_FREE() to free acpi_object 2022-11-23 19:23:25 +01:00
pfr_update.c iov_iter work; most of that is about getting rid of 2022-12-12 18:29:54 -08:00
platform_profile.c ACPI: platform-profile: call sysfs_notify() from platform_profile_store() 2021-08-16 18:32:02 +02:00
power.c ACPI: PM: Print full name path while adding power resource 2022-11-10 20:43:30 +01:00
pptt.c ACPI: PPTT: Leave the table mapped for the runtime usage 2022-07-22 10:04:43 +02:00
prmt.c ACPI: PRM: Check whether EFI runtime is available 2023-01-18 19:58:15 +01:00
proc.c proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
processor_core.c ACPI: processor: Remove dead ACPICA debug code 2020-09-25 18:25:51 +02:00
processor_driver.c ACPI: processor: Split out thermal initialization from ACPI PSS 2022-06-29 18:51:22 +02:00
processor_idle.c ACPI: processor: idle: Drop unnecessary statements and parens 2022-12-07 18:07:15 +01:00
processor_pdc.c ACPI: processor: Get rid of ACPICA message printing 2021-03-08 16:51:19 +01:00
processor_perflib.c ACPI: processor: perflib: Adjust acpi_processor_notify_smm() return value 2022-12-07 18:09:39 +01:00
processor_thermal.c ACPI: processor: Remove freq Qos request for all CPUs 2022-08-23 18:09:06 +02:00
processor_throttling.c ACPI: processor: throttling: remove variable count 2022-10-28 19:02:45 +02:00
property.c Merge branch 'acpi-dev' 2022-09-30 20:05:16 +02:00
reboot.c ACPI: reboot: Unify the message printing 2021-06-07 15:36:46 +02:00
resource.c ACPI: resource: Do IRQ override on all TongFang GMxRGxx 2023-03-10 09:28:20 +01:00
sbs.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
sbshc.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
sbshc.h ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00
scan.c ACPI: Fix selecting wrong ACPI fwnode for the iGPU on some Dell laptops 2023-01-10 20:23:48 +01:00
sleep.c acpi: Fix suspend with Xen PV 2023-01-19 13:52:05 -08:00
sleep.h ACPI: s2idle: Add a new ->check() callback for platform_s2idle_ops 2022-09-09 17:37:40 +02:00
spcr.c ACPI: SPCR: Add support for NVIDIA 16550-compatible port subtype 2022-04-13 20:37:29 +02:00
sysfs.c ACPI: sysfs: use sysfs_emit() to instead of scnprintf() 2022-11-10 20:24:49 +01:00
tables.c ACPI: tables: Fix the stale comments for acpi_locate_initial_tables() 2022-11-10 20:15:55 +01:00
thermal.c Merge branches 'acpi-scan', 'acpi-bus', 'acpi-tables' and 'acpi-sysfs' 2022-12-12 14:55:44 +01:00
tiny-power-button.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
utils.c Merge branch 'acpi-uid' 2022-10-03 20:09:22 +02:00
video_detect.c ACPI: video: Fix Lenovo Ideapad Z570 DMI match 2023-03-10 09:29:11 +01:00
viot.c iommu/dma: Make header private 2022-09-09 09:26:22 +02:00
wakeup.c ACPI: Fix whitespace inconsistencies 2020-11-09 19:08:06 +01:00