mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
ACPI: PCI: Avoid misleading _OSC messages for non-PCIe host bridges without _OSC
After commit7d703df7f4("ACPI: bus: Split _OSC evaluation out of acpi_run_osc()"), the _OSC evaluation path now returns AE_ERROR to negotiate_os_control() instead of propagating AE_NOT_FOUND from acpi_evaluate_object(). This has not caused any functional issues so far, but it produces additional misleading messages for non-PCIe host bridges without _OSC on some Intel servers: kernel: ACPI: Enabled 2 GPEs in block 00 to 7F kernel: ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus fe]) kernel: acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3] + kernel: acpi PNP0A03:00: _OSC: OS requested [PCIeHotplug SHPCHotplug PME AER PCIeCapability LTR DPC] + kernel: acpi PNP0A03:00: _OSC: platform willing to grant [PCIeHotplug SHPCHotplug PME AER PCIeCapability LTR DPC] + kernel: acpi PNP0A03:00: _OSC: platform retains control of PCIe features (AE_ERROR) kernel: PCI host bridge to bus 0000:fe Previously, negotiate_os_control() silently ignored AE_NOT_FOUND for non-PCIe host bridges without _OSC, but after the above change, it no longer does so. As a result, negotiate_os_control() logs messages as if the OS had negotiated with the platform via _OSC, even though the non-PCIe host bridge has no _OSC method and no such negotiation actually occurs. Skip _OSC negotiation for non-PCIe host bridges that do not define an _OSC method before attempting to evaluate it. Fixes:7d703df7f4("ACPI: bus: Split _OSC evaluation out of acpi_run_osc()") Link: https://lore.kernel.org/linux-acpi/d0be949d-0e21-472e-a44b-cedb1dd8695d@nec.com/ Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Kazuma Kondo <kazuma-kondo@nec.com> [ rjw: Adjust white space, drop comment and tweak the new message ] Link: https://patch.msgid.link/20260806112052.857684-1-kazuma-kondo@nec.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
1c24aa1bb2
commit
fa608d2875
@@ -571,6 +571,13 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_pcie(root) && !is_cxl(root) && !acpi_has_method(handle, "_OSC")) {
|
||||
dev_dbg(&device->dev, "Non-PCIe host bridge without _OSC, skipping\n");
|
||||
|
||||
*no_aspm = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
support = calculate_support();
|
||||
|
||||
decode_osc_support(root, "OS supports", support);
|
||||
@@ -612,10 +619,6 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm)
|
||||
*/
|
||||
*no_aspm = 1;
|
||||
|
||||
/* _OSC is optional for PCI host bridges */
|
||||
if (status == AE_NOT_FOUND && !is_pcie(root))
|
||||
return;
|
||||
|
||||
if (control) {
|
||||
decode_osc_control(root, "OS requested", requested);
|
||||
decode_osc_control(root, "platform willing to grant", control);
|
||||
|
||||
Reference in New Issue
Block a user