soc/intel/skylake: Fix ACPI exception AE_NOT_FOUND

Make sure to match devices on the root bus only. This fixes an issue
where the SoC returned "MCHC" as ACPI name for devices behind bridge
devices, as the DEVFN matched.

Fixes observed "ACPI exception: AE_NOT_FOUND" in dmesg, as the ACPI
path no longer contains invalid names.

Tested on Supermicro X11SSH-TF.

Change-Id: I6eca37a1792287502a46a90144f2f0d8e12ae5d4
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35621
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Patrick Rudolph 2019-09-26 14:45:29 +02:00 committed by Patrick Georgi
parent 6ba9b5a86f
commit 45ffee8346
1 changed files with 4 additions and 0 deletions

View File

@ -760,6 +760,10 @@ const char *soc_acpi_name(const struct device *dev)
if (dev->path.type != DEVICE_PATH_PCI) if (dev->path.type != DEVICE_PATH_PCI)
return NULL; return NULL;
/* Only match devices on the root bus */
if (dev->bus && dev->bus->secondary > 0)
return NULL;
switch (dev->path.pci.devfn) { switch (dev->path.pci.devfn) {
case SA_DEVFN_ROOT: return "MCHC"; case SA_DEVFN_ROOT: return "MCHC";
case SA_DEVFN_IGD: return "GFX0"; case SA_DEVFN_IGD: return "GFX0";