From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: Re: [RFC PATCH v2 05/21][SeaBIOS] pciinit: Fix pcimem_start value Date: Thu, 12 Jul 2012 09:22:14 +0200 Message-ID: <4FFE7B26.1060906@redhat.com> References: <1342002726-18258-1-git-send-email-vasilis.liaskovitis@profitbricks.com> <1342002726-18258-6-git-send-email-vasilis.liaskovitis@profitbricks.com> <4FFD69E3.2030903@redhat.com> <20120711164528.GC15407@dhcp-192-168-178-175.profitbricks.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, gleb@redhat.com, seabios@seabios.org, qemu-devel@nongnu.org, kevin@koconnor.net, avi@redhat.com, anthony@codemonkey.ws, imammedo@redhat.com To: Vasilis Liaskovitis Return-path: In-Reply-To: <20120711164528.GC15407@dhcp-192-168-178-175.profitbricks.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org 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. > 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. cheers, Gerd