-----Original Message----- From: Gerd Hoffmann [mailto:kraxel@redhat.com] Sent: Friday, November 02, 2012 5:00 PM To: Hao, Xudong Cc: kevin@koconnor.net; seabios@seabios.org; kvm@vger.kernel.org; avi@redhat.com Subject: Re: [PATCH] seabios/pci: enable 64 bit bar on seabios
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.
I just want to enable 64 bit bars for KVM usage, seabios 1.7.0 is used in current qemu-kvm, which not handle 64 bit bars yet. I cloned seabios code from kernel.org(seems no 64 bit bars supporting), but I was not taking notice of the tree on http://git.qemu.org/, yes it has already done 64 bit bars handling. So you may ignore this patch.
Btw, when will the latest seabios(especially 64 bits bars) be involved qemu-kvm?
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