diff options
-rw-r--r-- | src/soc/amd/cezanne/root_complex.c | 4 | ||||
-rw-r--r-- | src/soc/amd/common/block/include/amdblocks/iomap.h | 3 | ||||
-rw-r--r-- | src/soc/amd/glinda/root_complex.c | 4 | ||||
-rw-r--r-- | src/soc/amd/mendocino/root_complex.c | 4 | ||||
-rw-r--r-- | src/soc/amd/phoenix/root_complex.c | 4 | ||||
-rw-r--r-- | src/soc/amd/picasso/root_complex.c | 4 |
6 files changed, 23 insertions, 0 deletions
diff --git a/src/soc/amd/cezanne/root_complex.c b/src/soc/amd/cezanne/root_complex.c index 29070f6d4e..b5bf62c061 100644 --- a/src/soc/amd/cezanne/root_complex.c +++ b/src/soc/amd/cezanne/root_complex.c @@ -5,6 +5,7 @@ #include <amdblocks/alib.h> #include <amdblocks/data_fabric.h> #include <amdblocks/ioapic.h> +#include <amdblocks/iomap.h> #include <amdblocks/memmap.h> #include <arch/ioapic.h> #include <arch/vga.h> @@ -151,6 +152,9 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + /* Reserve fixed IOMMU MMIO region */ + mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); diff --git a/src/soc/amd/common/block/include/amdblocks/iomap.h b/src/soc/amd/common/block/include/amdblocks/iomap.h index 759466b052..d166a833a9 100644 --- a/src/soc/amd/common/block/include/amdblocks/iomap.h +++ b/src/soc/amd/common/block/include/amdblocks/iomap.h @@ -12,4 +12,7 @@ #define FLASH_BELOW_4GB_MAPPING_REGION_BASE ((0xffffffff - 16 * MiB) + 1) #define FLASH_BELOW_4GB_MAPPING_REGION_SIZE (16 * MiB) +#define IOMMU_RESERVED_MMIO_BASE 0xfd00000000 +#define IOMMU_RESERVED_MMIO_SIZE (4ULL * GiB) + #endif /* AMD_BLOCK_IOMAP_H */ diff --git a/src/soc/amd/glinda/root_complex.c b/src/soc/amd/glinda/root_complex.c index b18e948abe..1794d08983 100644 --- a/src/soc/amd/glinda/root_complex.c +++ b/src/soc/amd/glinda/root_complex.c @@ -7,6 +7,7 @@ #include <amdblocks/alib.h> #include <amdblocks/data_fabric.h> #include <amdblocks/ioapic.h> +#include <amdblocks/iomap.h> #include <amdblocks/memmap.h> #include <arch/ioapic.h> #include <arch/vga.h> @@ -166,6 +167,9 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + /* Reserve fixed IOMMU MMIO region */ + mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); diff --git a/src/soc/amd/mendocino/root_complex.c b/src/soc/amd/mendocino/root_complex.c index 7a58f015e6..0dcf2b8a02 100644 --- a/src/soc/amd/mendocino/root_complex.c +++ b/src/soc/amd/mendocino/root_complex.c @@ -7,6 +7,7 @@ #include <amdblocks/alib.h> #include <amdblocks/data_fabric.h> #include <amdblocks/ioapic.h> +#include <amdblocks/iomap.h> #include <amdblocks/memmap.h> #include <arch/ioapic.h> #include <arch/vga.h> @@ -194,6 +195,9 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + /* Reserve fixed IOMMU MMIO region */ + mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); diff --git a/src/soc/amd/phoenix/root_complex.c b/src/soc/amd/phoenix/root_complex.c index 3110ea3ee5..a75de50618 100644 --- a/src/soc/amd/phoenix/root_complex.c +++ b/src/soc/amd/phoenix/root_complex.c @@ -7,6 +7,7 @@ #include <amdblocks/alib.h> #include <amdblocks/data_fabric.h> #include <amdblocks/ioapic.h> +#include <amdblocks/iomap.h> #include <amdblocks/memmap.h> #include <arch/ioapic.h> #include <arch/vga.h> @@ -166,6 +167,9 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + /* Reserve fixed IOMMU MMIO region */ + mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c index cd10fdb762..bf36f6dd50 100644 --- a/src/soc/amd/picasso/root_complex.c +++ b/src/soc/amd/picasso/root_complex.c @@ -6,6 +6,7 @@ #include <amdblocks/data_fabric.h> #include <amdblocks/memmap.h> #include <amdblocks/ioapic.h> +#include <amdblocks/iomap.h> #include <arch/ioapic.h> #include <arch/vga.h> #include <assert.h> @@ -149,6 +150,9 @@ static void read_resources(struct device *dev) gnb_apic->size = 0x00001000; gnb_apic->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; + /* Reserve fixed IOMMU MMIO region */ + mmio_range(dev, idx++, IOMMU_RESERVED_MMIO_BASE, IOMMU_RESERVED_MMIO_SIZE); + if (fsp_hob_iterator_init(&hob_iterator) != CB_SUCCESS) { printk(BIOS_ERR, "%s incomplete because no HOB list was found\n", __func__); return; |