This memory range is reserved by the BIOS. When the memory range is reserved by the BIOS, the Windows built-in memory arbiter will attempt to resolve the conflict, under some circumstances when it cannot resolve the memory conflict it will report the memory range as "not available" under PCI Bus properties in the resources tab in Device Manager.
This behavior is by design and can be safely ignored; Windows will use what memory resources are available for the PCI Bus and should not impact functionality. Typically when memory resources are reserved by the BIOS, Windows may not be able to allocate these memory resources for the PCI-Bus; the Windows built in memory arbiter will attempt to resolve the conflict when it can but if it cannot, the memory range may be reported as "not available" under the PCI-Bus resources tab in Device Manager.
In addition to the resource showing up as "not available" under the PCI Bus properties in the PCI bus resources tab, if you have a debugger attached or captured a memory dump you can use the arbiter debugger extension command "!arbiter 2" to dump the memory range conflict.
0: kd> !arbiter 2
DEVNODE 89e5b080 (HTREE\ROOT\0)
Memory Arbiter "RootMemory" at 817677a0
0000000000000000 - 0000000000000fff 00000000 <Not on bus>
00000000000a0000 - 00000000000bffff S 8a0a14c0 (pci)
00000000d0000000 - 00000000fdffffff
00000000d0000000 - 00000000fdffffff SC 8a0a14c0 (pci) <--------------Conflict
00000000e0000000 - 00000000efffffff CB 00000000 <Not on bus>
00000000fed00000 - 00000000fed003ff B 8a0a1308
00000000fed40000 - 00000000fed44fff S 8a0a14c0 (pci)
00000000fed90000 - 00000000fed91fff B 8a0a6f08
0000002000000000 - ffffffffffffffff 00000000 <Not on bus>
< none >
To confirm this memory range is reserved by the BIOS, you can boot into the UEFI shell (in UEFI mode) using a USB key and run the UEFI shell "memmap" command.
EXAMPLE:(note the memory range overlapping the conflict range):
Type Start End # Pages Attributes
reserved 00000000CF369000-00000000CF37EFFF 0000000000000016 0000000000000001
ACPI_recl 00000000CF37F000-00000000CF3BDFFF 000000000000003F 0000000000000008
reserved 00000000CF3BE000-00000000CFFFFFFF 0000000000000C42 0000000000000001 <----
reserved 00000000E0000000-00000000EFFFFFFF 0000000000010000 0000000000000001 <----
reserved 00000000FE000000-00000000FFFFFFFF 0000000000002000 0000000000000001 <----
available 0000000100000000-000000042FFFFFFF 0000000000330000 000000000000000F
Steps to run memmap command from UEFI Shell:
1) Enabled to BOOT from UEFI instead of BIOS
2) On a Fat formatted USB key copy bootx64.efi, shell_full.efi, shell.efi to the root of the USB key
3) Boot into UEFI Boot manager and add a boot option pointing to bootx64.efi
4) Boot selecting the new UEFI boot option
5) At the Shell> command run “memmap –b > fs0:\memmap.txt” this will dump the memory map from the firmware to a memmap.txt file on the root of the usb key.
Steps to determine if MMCFG conflicts with PCI range from the registry:
To determine if MMCFG conflicts with a PCI range, the physical address of MMCFG can be found by looking at the following value in the registry:
- Double click the value and you will see at least one “Memory” value listed, select the value and click “display” to show the reserved range in conflict(or double click again).
For example, on the Windows Server 2008 x64 installation scenario with UEFI BIOS enabled, this would show memory address range 00000000e0000000 to 00000000efffffff listed which corresponds to memmap output which overlaps the conflict memory range 00000000D0000000 - 00000000FDFFFFFF.
Article ID: 2715287 - Last Review: 30 May 2012 - Revision: 1