On Thu, Jul 12, 2012 at 09:22:14AM +0200, Gerd Hoffmann wrote: > On 07/11/12 18:45, Vasilis Liaskovitis wrote: > > Hi, > > > > On Wed, Jul 11, 2012 at 01:56:19PM +0200, Gerd Hoffmann wrote: > >> On 07/11/12 12:31, Vasilis Liaskovitis wrote: > >>> In order to hotplug memory between RamSize and BUILD_PCIMEM_START, the pci > >>> window needs to start at BUILD_PCIMEM_START (0xe0000000). > >>> Otherwise, the guest cannot online new dimms at those ranges due to pci_root > >>> window conflicts. (workaround for linux guest is booting with pci=nocrs) > >> > >>> static void pci_bios_map_devices(struct pci_bus *busses) > >>> { > >>> - pcimem_start = RamSize; > >>> + pcimem_start = BUILD_PCIMEM_START; > >> > >> It isn't that simple. For the 32bit pci window it will work, but will > >> leaves address space unused instead of assigning it to the 32bit pci > >> window. For the 64bit pci window it will not work. > >> > >> You have to walk the dimms and figure what the highest used address is, > >> for both below-4g and above-4g. Then fill two variable with it and make > >> the pci init code use that instead of RamSize and RamSizeOver4G. > > > > I see. I already have these values values computed in qemu-kvm, so I can pass > > them in a paravirt struct, or infer them from the dimm/srat paravirt info that I > > already pass to seabios. > > I'd suggest to infer from the dimm info, to limit the amout of > information which needs to be passed from qemu to seabios. ok.Currently dimm info is processed in bios_init_tables(), which is called after pci_setup(). I 'll see if i can do the processing earlier. > > > If i understand correctly, we would like the pcimem windows to use the maximum > > possible address space (constrained by the exact dimms/ranges which are defined) > > instead of leaving unused space. > > Yes, for the 32bit pci window. > > The 64bit pci window is mapped above all memory, and it must likewise > consider defined+unfilled dimms so the start address doesn't collide > with memory hot-plugged above 4G later on. yes, understood. thanks, - Vasilis -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html