From b53280ab53e19746be04b67f73f9ce230038b1ee Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Wed, 25 Nov 2020 14:30:15 -0800 Subject: [PATCH] soc/intel/common/systemagent: Reserve window used for extended BIOS decoding This change reserves the window used for extended BIOS decoding as a fixed MMIO resource using read_resources callback in systemagent driver. This ensures that the resource allocator does not allocate from this window. Additionally, this window is also marked as fixed memory region in _CRS for PNP0C02 device. BUG=b:171534504 Signed-off-by: Furquan Shaikh Change-Id: I42b5a0ebda2627f72b825551c566cd22dbc5cca7 Reviewed-on: https://review.coreboot.org/c/coreboot/+/48184 Tested-by: build bot (Jenkins) Reviewed-by: Tim Wawrzynczak --- src/soc/intel/common/block/acpi/acpi/northbridge.asl | 5 +++++ src/soc/intel/common/block/systemagent/systemagent.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/soc/intel/common/block/acpi/acpi/northbridge.asl b/src/soc/intel/common/block/acpi/acpi/northbridge.asl index b4b746542e..5780f4c799 100644 --- a/src/soc/intel/common/block/acpi/acpi/northbridge.asl +++ b/src/soc/intel/common/block/acpi/acpi/northbridge.asl @@ -276,6 +276,11 @@ Device (PDRC) /* FLASH range */ Memory32Fixed (ReadOnly, 0, CONFIG_ROM_SIZE, FIOH) +#if CONFIG(FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW) + /* Extended BIOS window */ + Memory32Fixed (ReadOnly, CONFIG_EXT_BIOS_WIN_BASE, CONFIG_EXT_BIOS_WIN_SIZE) +#endif + /* Local APIC range(0xFEE0_0000 to 0xFEEF_FFFF) */ Memory32Fixed (ReadOnly, 0xFEE00000, 0x100000) diff --git a/src/soc/intel/common/block/systemagent/systemagent.c b/src/soc/intel/common/block/systemagent/systemagent.c index 4c5731f9ca..6b039e1c01 100644 --- a/src/soc/intel/common/block/systemagent/systemagent.c +++ b/src/soc/intel/common/block/systemagent/systemagent.c @@ -287,6 +287,11 @@ static void systemagent_read_resources(struct device *dev) if (CONFIG(SA_ENABLE_IMR)) /* Add the isolated memory ranges (IMRs). */ sa_add_imr_resources(dev, &index); + + /* Reserve the window used for extended BIOS decoding. */ + if (CONFIG(FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW)) + mmio_resource(dev, index++, CONFIG_EXT_BIOS_WIN_BASE / KiB, + CONFIG_EXT_BIOS_WIN_SIZE / KiB); } void enable_power_aware_intr(void)