diff options
author | Patrick Rudolph <patrick.rudolph@9elements.com> | 2024-01-31 11:38:38 +0100 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2024-02-09 13:47:00 +0000 |
commit | 344ebf1f81db4219ad44b5d578c464b4bd8820a5 (patch) | |
tree | 306a71ba491897b70e8aaa42f75b37e348678e03 /src/soc/intel | |
parent | f25d58c9a59aa5ccdc5a8b6afeccc7afa0d9d364 (diff) |
acpi/acpi: Pass struct device to acpi_create_srat_gia_pci
Instead of S:B:D:F numbers pass the struct device to
acpi_create_srat_gia_pci and let it extract the information needed.
This also adds support for PCI multi segment groups.
Change-Id: Iafe32e98f0c85f14347695ccaa0225e43fad99e7
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80258
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/intel')
-rw-r--r-- | src/soc/intel/xeon_sp/uncore_acpi_cxl.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/soc/intel/xeon_sp/uncore_acpi_cxl.c b/src/soc/intel/xeon_sp/uncore_acpi_cxl.c index 5bd13d0211..40a5f12496 100644 --- a/src/soc/intel/xeon_sp/uncore_acpi_cxl.c +++ b/src/soc/intel/xeon_sp/uncore_acpi_cxl.c @@ -1,6 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ -#include <device/pci_ops.h> #include <soc/acpi.h> #include <soc/numa.h> #include <soc/util.h> @@ -13,19 +12,14 @@ unsigned long cxl_fill_srat(unsigned long current) * In the pds (Proximity Domains structure), Generic Initiator domains * are after processor domains. */ - uint16_t seg = 0; - uint8_t bus, dev, func; uint32_t base, size; for (uint8_t i = soc_get_num_cpus(); i < pds.num_pds; i++) { - bus = PCI_BDF(pds.pds[i].dev) >> 20; - dev = (PCI_BDF(pds.pds[i].dev) >> 15) & 0x1f; - func = (PCI_BDF(pds.pds[i].dev) >> 12) & 0x07; - printk(BIOS_DEBUG, - "adding srat GIA ID: %d, seg: 0x%x, bus: 0x%x, dev: 0x%x, func: 0x%x\n", - i, seg, bus, dev, func); + if (!pds.pds[i].dev) + continue; + + printk(BIOS_DEBUG, "adding srat GIA ID: %d, dev: %s\n", i, dev_path(pds.pds[i].dev)); /* flags: 1 (enabled) */ - current += acpi_create_srat_gia_pci((acpi_srat_gia_t *)current, i, seg, bus, - dev, func, 1); + current += acpi_create_srat_gia_pci((acpi_srat_gia_t *)current, i, pds.pds[i].dev, 1); base = pds.pds[i].base << 16; size = pds.pds[i].size << 16; printk(BIOS_DEBUG, |