dm: leave a gap for 32-bit PCI hole in E820 map

Guest OS (e.g. Linux) may rely on a gap in E820 map in the 32-bit memory
space to determine the MMIO space for its PCI devices. Leave this gap
when building E820 map to keep the guest's PCI subsystem working.

After commit 7752d5cfe3d11ca0bb9c673ec38bd78ba6578f8e, Linux kernel no
longer requires the MMCONFIG region to be reserved in the E820 map.
Nonetheless, keep it in the reserved region to be on the safe side.

Tracked-On: #2843
Signed-off-by: Peter Fang <peter.fang@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
This commit is contained in:
Peter Fang
2019-03-22 05:22:55 -07:00
committed by ACRN System Integration
parent 3be6c6593f
commit 20164799cb
4 changed files with 10 additions and 16 deletions

View File

@@ -55,8 +55,8 @@ static char bootargs[STR_LEN];
* 1: 0xA0000 - 0x100000 (reserved) 0x60000
* 2: 0x100000 - lowmem RAM lowmem - 1MB
* 3: lowmem - 0x80000000 (reserved) 2GB - lowmem
* 4: 0x80000000 - 0x100000000 PCI hole, MMIO 2GB
* 5: 0x100000000 - 0x140000000 PCI hole 1GB
* 4: 0xE0000000 - 0x100000000 MCFG, MMIO 512MB
* 5: 0x100000000 - 0x140000000 64-bit PCI hole 1GB
* 6: 0x140000000 - highmem RAM highmem - 5GB
*/
const struct e820_entry e820_default_entries[NUM_E820_ENTRIES] = {
@@ -84,9 +84,9 @@ const struct e820_entry e820_default_entries[NUM_E820_ENTRIES] = {
.type = E820_TYPE_RESERVED
},
{ /* lowmem_limit to 4GB */
.baseaddr = 0x80000000,
.length = 0x80000000,
{ /* ECFG_BASE to 4GB */
.baseaddr = PCI_EMUL_ECFG_BASE,
.length = (4 * GB) - PCI_EMUL_ECFG_BASE,
.type = E820_TYPE_RESERVED
},