On 11/02/12 06:42, Xudong Hao wrote:
64 bit bar sizing and MMIO allocation. The 64 bit window is placed above high memory, top down from the end of guest physical address space.
What problem you are trying to fix? The existing code should handle 64bit bars just fine. By default they are placed below 4G though for compatibility reasons (make old 32bit guests happy). When running out of address space seabios will try map them above 4G though to make room below 4G.
Mapping your 64bit PCI bars above 4G unconditionally (for testing or other reasons) can simply be done this way:
--- a/src/pciinit.c +++ b/src/pciinit.c @@ -599,7 +599,7 @@ static void pci_bios_map_devices(struct pci_bus *busses) { pcimem_start = RamSize;
- if (pci_bios_init_root_regions(busses)) { + if (1 /* pci_bios_init_root_regions(busses) */) { struct pci_region r64_mem, r64_pref; r64_mem.list = NULL; r64_pref.list = NULL;
We might want add a config option for this.
cheers, Gerd