summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/device/Kconfig16
-rw-r--r--src/device/pciexp_device.c10
2 files changed, 23 insertions, 3 deletions
diff --git a/src/device/Kconfig b/src/device/Kconfig
index 55abfe89b217..79ce77d66eac 100644
--- a/src/device/Kconfig
+++ b/src/device/Kconfig
@@ -583,6 +583,22 @@ config PCIEXP_HOTPLUG_PREFETCH_MEM
child devices. This size should be page-aligned. The default is
256 MiB.
+config PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G
+ bool
+ depends on RESOURCE_ALLOCATOR_V4
+ default y if !PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
+ default n
+ help
+ This enables prefetch memory allocation above 4G boundary for the
+ hotplug resources.
+
+config PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
+ bool "PCI Express Hotplug Prefetch Memory Allocation below 4G boundary"
+ default n
+ help
+ This enables prefetch memory allocation below 4G boundary for the
+ hotplug resources.
+
config PCIEXP_HOTPLUG_IO
hex "PCI Express Hotplug I/O Space"
default 0x2000
diff --git a/src/device/pciexp_device.c b/src/device/pciexp_device.c
index 118920753904..f04d86515273 100644
--- a/src/device/pciexp_device.c
+++ b/src/device/pciexp_device.c
@@ -512,7 +512,7 @@ static void pciexp_hotplug_dummy_read_resources(struct device *dev)
{
struct resource *resource;
- // Add extra memory space
+ /* Add extra memory space */
resource = new_resource(dev, 0x10);
resource->size = CONFIG_PCIEXP_HOTPLUG_MEM;
resource->align = 12;
@@ -520,7 +520,7 @@ static void pciexp_hotplug_dummy_read_resources(struct device *dev)
resource->limit = 0xffffffff;
resource->flags |= IORESOURCE_MEM;
- // Add extra prefetchable memory space
+ /* Add extra prefetchable memory space */
resource = new_resource(dev, 0x14);
resource->size = CONFIG_PCIEXP_HOTPLUG_PREFETCH_MEM;
resource->align = 12;
@@ -528,7 +528,11 @@ static void pciexp_hotplug_dummy_read_resources(struct device *dev)
resource->limit = 0xffffffffffffffff;
resource->flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH;
- // Add extra I/O space
+ /* Set resource flag requesting allocation above 4G boundary. */
+ if (CONFIG(PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G))
+ resource->flags |= IORESOURCE_ABOVE_4G;
+
+ /* Add extra I/O space */
resource = new_resource(dev, 0x18);
resource->size = CONFIG_PCIEXP_HOTPLUG_IO;
resource->align = 12;