diff --git a/src/device/Kconfig b/src/device/Kconfig index 6096a38b6f..2976a61a8f 100644 --- a/src/device/Kconfig +++ b/src/device/Kconfig @@ -585,6 +585,21 @@ 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 + 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 1189207539..f04d865152 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;