Attention is currently required from: Raul Rangel, Mariusz Szafrański, Angel Pons, Patrick Rudolph, Lance Zhao, Jason Glenesk, Martin Roth, Damien Zammit, Marshall Dawson, Suresh Bellampalli, Vanessa Eusebio, Michal Motyl, Felix Held. Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/50666 )
Change subject: [WIP] ACPI: Have common acpi_fill_mcfg() ......................................................................
[WIP] ACPI: Have common acpi_fill_mcfg()
As long as there is only one PCI segment we do not need more complicated MCFG generation.
Change-Id: Ic2a8e84383883039bb7f994227e2e425366f9e13 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/acpi/acpi.c M src/include/acpi/acpi.h M src/mainboard/emulation/qemu-q35/acpi_tables.c M src/northbridge/intel/e7505/northbridge.c M src/northbridge/intel/gm45/acpi.c M src/northbridge/intel/haswell/acpi.c M src/northbridge/intel/i945/Makefile.inc D src/northbridge/intel/i945/acpi.c M src/northbridge/intel/ironlake/Makefile.inc D src/northbridge/intel/ironlake/acpi.c M src/northbridge/intel/pineview/Makefile.inc D src/northbridge/intel/pineview/acpi.c M src/northbridge/intel/sandybridge/acpi.c M src/northbridge/intel/x4x/acpi.c M src/soc/amd/common/block/acpi/tables.c M src/soc/intel/baytrail/acpi.c M src/soc/intel/braswell/acpi.c M src/soc/intel/broadwell/acpi.c M src/soc/intel/common/block/acpi/acpi.c M src/soc/intel/denverton_ns/acpi.c M src/soc/intel/quark/acpi.c M src/soc/intel/skylake/acpi.c M src/southbridge/amd/agesa/hudson/lpc.c M src/southbridge/amd/cimx/sb800/late.c M src/southbridge/amd/pi/hudson/lpc.c M src/southbridge/intel/i82371eb/acpi_tables.c 26 files changed, 9 insertions(+), 184 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/66/50666/1
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index fc13689..e901d02 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -261,6 +261,13 @@ header->checksum = acpi_checksum((void *)madt, header->length); }
+static unsigned long acpi_fill_mcfg(unsigned long current) +{ + current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, + CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); + return current; +} + /* MCFG is defined in the PCI Firmware Specification 3.0. */ void acpi_create_mcfg(acpi_mcfg_t *mcfg) { @@ -282,7 +289,8 @@ header->length = sizeof(acpi_mcfg_t); header->revision = get_acpi_table_revision(MCFG);
- current = acpi_fill_mcfg(current); + if (CONFIG(MMCONF_SUPPORT)) + current = acpi_fill_mcfg(current);
/* (Re)calculate length and checksum. */ header->length = current - (unsigned long)mcfg; diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h index 775fc31..492c3f3 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -953,7 +953,6 @@ /* These are implemented by the target port or north/southbridge. */ unsigned long write_acpi_tables(unsigned long addr); unsigned long acpi_fill_madt(unsigned long current); -unsigned long acpi_fill_mcfg(unsigned long current); unsigned long acpi_fill_ivrs_ioapic(acpi_ivrs_t *ivrs, unsigned long current); void acpi_create_ssdt_generator(acpi_header_t *ssdt, const char *oem_table_id); void acpi_write_bert(acpi_bert_t *bert, uintptr_t region, size_t length); diff --git a/src/mainboard/emulation/qemu-q35/acpi_tables.c b/src/mainboard/emulation/qemu-q35/acpi_tables.c index ccf49c2..e85ce65 100644 --- a/src/mainboard/emulation/qemu-q35/acpi_tables.c +++ b/src/mainboard/emulation/qemu-q35/acpi_tables.c @@ -12,11 +12,3 @@ fadt->acpi_enable = 0; fadt->acpi_disable = 0; } - -unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} diff --git a/src/northbridge/intel/e7505/northbridge.c b/src/northbridge/intel/e7505/northbridge.c index fc771b3..c3ac17c 100644 --- a/src/northbridge/intel/e7505/northbridge.c +++ b/src/northbridge/intel/e7505/northbridge.c @@ -9,12 +9,6 @@
#include "e7505.h"
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* Just a dummy */ - return current; -} - static void mch_domain_read_resources(struct device *dev) { int idx; diff --git a/src/northbridge/intel/gm45/acpi.c b/src/northbridge/intel/gm45/acpi.c index d88fdb7..30d3fed 100644 --- a/src/northbridge/intel/gm45/acpi.c +++ b/src/northbridge/intel/gm45/acpi.c @@ -11,14 +11,6 @@
#include "gm45.h"
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} - static unsigned long acpi_fill_dmar(unsigned long current) { const struct device *dev; diff --git a/src/northbridge/intel/haswell/acpi.c b/src/northbridge/intel/haswell/acpi.c index 96448f3..f88f537 100644 --- a/src/northbridge/intel/haswell/acpi.c +++ b/src/northbridge/intel/haswell/acpi.c @@ -9,14 +9,6 @@ #include "haswell.h" #include <southbridge/intel/lynxpoint/pch.h>
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} - static unsigned long acpi_fill_dmar(unsigned long current) { struct device *const igfx_dev = pcidev_on_root(2, 0); diff --git a/src/northbridge/intel/i945/Makefile.inc b/src/northbridge/intel/i945/Makefile.inc index 8023d47..e970208 100644 --- a/src/northbridge/intel/i945/Makefile.inc +++ b/src/northbridge/intel/i945/Makefile.inc @@ -7,7 +7,6 @@ ramstage-y += memmap.c ramstage-y += northbridge.c ramstage-y += gma.c -ramstage-y += acpi.c
romstage-y += romstage.c romstage-y += memmap.c diff --git a/src/northbridge/intel/i945/acpi.c b/src/northbridge/intel/i945/acpi.c deleted file mode 100644 index 03c85de..0000000 --- a/src/northbridge/intel/i945/acpi.c +++ /dev/null @@ -1,14 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <acpi/acpi.h> -#include <acpi/acpigen.h> -#include <device/device.h> -#include "i945.h" - -unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} diff --git a/src/northbridge/intel/ironlake/Makefile.inc b/src/northbridge/intel/ironlake/Makefile.inc index e3d41f1a..f0d812d 100644 --- a/src/northbridge/intel/ironlake/Makefile.inc +++ b/src/northbridge/intel/ironlake/Makefile.inc @@ -9,8 +9,6 @@ ramstage-y += smi.c ramstage-y += gma.c
-ramstage-y += acpi.c - romstage-y += memmap.c romstage-y += raminit.c romstage-y += raminit_tables.c diff --git a/src/northbridge/intel/ironlake/acpi.c b/src/northbridge/intel/ironlake/acpi.c deleted file mode 100644 index 97676e7..0000000 --- a/src/northbridge/intel/ironlake/acpi.c +++ /dev/null @@ -1,12 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <acpi/acpi.h> -#include "ironlake.h" - -unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} diff --git a/src/northbridge/intel/pineview/Makefile.inc b/src/northbridge/intel/pineview/Makefile.inc index 08e04f2..b231a3e 100644 --- a/src/northbridge/intel/pineview/Makefile.inc +++ b/src/northbridge/intel/pineview/Makefile.inc @@ -8,7 +8,6 @@ ramstage-y += memmap.c ramstage-y += northbridge.c ramstage-y += gma.c -ramstage-y += acpi.c
romstage-y += romstage.c romstage-y += memmap.c diff --git a/src/northbridge/intel/pineview/acpi.c b/src/northbridge/intel/pineview/acpi.c deleted file mode 100644 index a04cb0b..0000000 --- a/src/northbridge/intel/pineview/acpi.c +++ /dev/null @@ -1,13 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <acpi/acpigen.h> -#include <acpi/acpi.h> -#include <device/device.h> - -unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} diff --git a/src/northbridge/intel/sandybridge/acpi.c b/src/northbridge/intel/sandybridge/acpi.c index 608aa3c..c2f6eae 100644 --- a/src/northbridge/intel/sandybridge/acpi.c +++ b/src/northbridge/intel/sandybridge/acpi.c @@ -9,14 +9,6 @@ #include "sandybridge.h" #include <southbridge/intel/bd82x6x/pch.h>
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} - static unsigned long acpi_create_igfx_rmrr(const unsigned long current) { const u32 base_mask = ~(u32)(MiB - 1); diff --git a/src/northbridge/intel/x4x/acpi.c b/src/northbridge/intel/x4x/acpi.c index 8f94b34..44635c7 100644 --- a/src/northbridge/intel/x4x/acpi.c +++ b/src/northbridge/intel/x4x/acpi.c @@ -6,14 +6,6 @@ #include <device/device.h> #include "x4x.h"
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} - unsigned long northbridge_write_acpi_tables(const struct device *device, unsigned long start, struct acpi_rsdp *rsdp) diff --git a/src/soc/amd/common/block/acpi/tables.c b/src/soc/amd/common/block/acpi/tables.c index 88ff252..171feb5 100644 --- a/src/soc/amd/common/block/acpi/tables.c +++ b/src/soc/amd/common/block/acpi/tables.c @@ -13,18 +13,6 @@ return acpi_write_hpet(device, current, rsdp); }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, - 0, - 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - - return current; -} - unsigned long acpi_fill_madt_irqoverride(unsigned long current) { const struct soc_amd_common_config *cfg = soc_get_common_config(); diff --git a/src/soc/intel/baytrail/acpi.c b/src/soc/intel/baytrail/acpi.c index 682f9b4..ef95572 100644 --- a/src/soc/intel/baytrail/acpi.c +++ b/src/soc/intel/baytrail/acpi.c @@ -94,13 +94,6 @@ return sci_irq; }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - unsigned long acpi_fill_madt(unsigned long current) { /* Local APICs */ diff --git a/src/soc/intel/braswell/acpi.c b/src/soc/intel/braswell/acpi.c index 819990a..1944fa6 100644 --- a/src/soc/intel/braswell/acpi.c +++ b/src/soc/intel/braswell/acpi.c @@ -104,13 +104,6 @@ return sci_irq; }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - static acpi_tstate_t soc_tss_table[] = { { 100, 1000, 0, 0x00, 0 }, { 88, 875, 0, 0x1e, 0 }, diff --git a/src/soc/intel/broadwell/acpi.c b/src/soc/intel/broadwell/acpi.c index 5546f27..96401bc 100644 --- a/src/soc/intel/broadwell/acpi.c +++ b/src/soc/intel/broadwell/acpi.c @@ -19,14 +19,6 @@ #include <soc/systemagent.h> #include <soc/intel/broadwell/chip.h>
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - static unsigned long acpi_fill_dmar(unsigned long current) { struct device *const igfx_dev = pcidev_path_on_root(SA_DEVFN_IGD); diff --git a/src/soc/intel/common/block/acpi/acpi.c b/src/soc/intel/common/block/acpi/acpi.c index e7f3f0d..d480a07 100644 --- a/src/soc/intel/common/block/acpi/acpi.c +++ b/src/soc/intel/common/block/acpi/acpi.c @@ -23,15 +23,6 @@
#define CPUID_6_EAX_ISST (1 << 7)
-__attribute__((weak)) unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* PCI Segment Group 0, Start Bus Number 0, End Bus Number is 255 */ - current += acpi_create_mcfg_mmconfig((void *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - static int acpi_sci_irq(void) { int sci_irq = 9; diff --git a/src/soc/intel/denverton_ns/acpi.c b/src/soc/intel/denverton_ns/acpi.c index 921cbc9..f455124 100644 --- a/src/soc/intel/denverton_ns/acpi.c +++ b/src/soc/intel/denverton_ns/acpi.c @@ -81,15 +81,6 @@ return cstate_map; }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* PCI Segment Group 0, Start Bus Number 0, End Bus Number is 255 */ - current += acpi_create_mcfg_mmconfig((void *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - void soc_fill_fadt(acpi_fadt_t *fadt) { u16 pmbase = get_pmbase(); diff --git a/src/soc/intel/quark/acpi.c b/src/soc/intel/quark/acpi.c index fc96fb6..9ea62bb 100644 --- a/src/soc/intel/quark/acpi.c +++ b/src/soc/intel/quark/acpi.c @@ -10,11 +10,6 @@ return current; }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - return current; -} - void acpi_fill_fadt(acpi_fadt_t *fadt) { struct device *dev = pcidev_on_root(PCI_DEVICE_NUMBER_QNC_LPC, diff --git a/src/soc/intel/skylake/acpi.c b/src/soc/intel/skylake/acpi.c index 10ce77e..6e5f997 100644 --- a/src/soc/intel/skylake/acpi.c +++ b/src/soc/intel/skylake/acpi.c @@ -176,14 +176,6 @@ sa_fill_gnvs(gnvs); }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, 0, 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - unsigned long acpi_fill_madt(unsigned long current) { /* Local APICs */ diff --git a/src/southbridge/amd/agesa/hudson/lpc.c b/src/southbridge/amd/agesa/hudson/lpc.c index 89c9a6b..1f64547 100644 --- a/src/southbridge/amd/agesa/hudson/lpc.c +++ b/src/southbridge/amd/agesa/hudson/lpc.c @@ -317,12 +317,6 @@ return NULL; }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* Just a dummy */ - return current; -} - static void lpc_final(struct device *dev) { if (!acpi_is_wakeup_s3()) { diff --git a/src/southbridge/amd/cimx/sb800/late.c b/src/southbridge/amd/cimx/sb800/late.c index 15e6d67..4957550 100644 --- a/src/southbridge/amd/cimx/sb800/late.c +++ b/src/southbridge/amd/cimx/sb800/late.c @@ -121,12 +121,6 @@ printk(BIOS_DEBUG, "SB800 - Late.c - %s - End.\n", __func__); }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* Just a dummy */ - return current; -} - static const char *lpc_acpi_name(const struct device *dev) { if (dev->path.type != DEVICE_PATH_PCI) diff --git a/src/southbridge/amd/pi/hudson/lpc.c b/src/southbridge/amd/pi/hudson/lpc.c index b77548e..77d39c5 100644 --- a/src/southbridge/amd/pi/hudson/lpc.c +++ b/src/southbridge/amd/pi/hudson/lpc.c @@ -318,16 +318,6 @@ hudson_lpc_enable_childrens_resources(dev); }
-unsigned long acpi_fill_mcfg(unsigned long current) -{ - current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, - CONFIG_MMCONF_BASE_ADDRESS, - 0, - 0, - CONFIG_MMCONF_BUS_NUMBER - 1); - return current; -} - static const char *lpc_acpi_name(const struct device *dev) { if (dev->path.type != DEVICE_PATH_PCI) diff --git a/src/southbridge/intel/i82371eb/acpi_tables.c b/src/southbridge/intel/i82371eb/acpi_tables.c index 7507cd5..5e9c064 100644 --- a/src/southbridge/intel/i82371eb/acpi_tables.c +++ b/src/southbridge/intel/i82371eb/acpi_tables.c @@ -38,9 +38,3 @@ } acpigen_pop_len(); } - -unsigned long acpi_fill_mcfg(unsigned long current) -{ - /* chipset doesn't have mmconfig */ - return current; -}