[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v2 05/21][SeaBIOS] pciinit: Fix pcimem_start
From: |
Gerd Hoffmann |
Subject: |
Re: [Qemu-devel] [RFC PATCH v2 05/21][SeaBIOS] pciinit: Fix pcimem_start value |
Date: |
Thu, 12 Jul 2012 09:22:14 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120601 Thunderbird/10.0.5 |
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
[Qemu-devel] [RFC PATCH v2 08/21] pc: calculate dimm physical addresses and adjust memory map, Vasilis Liaskovitis, 2012/07/11
[Qemu-devel] [RFC PATCH v2 04/21][SeaBIOS] acpi: generate hotplug memory devices, Vasilis Liaskovitis, 2012/07/11
[Qemu-devel] [RFC PATCH v2 02/21][SeaBIOS] Add SSDT memory device support, Vasilis Liaskovitis, 2012/07/11
[Qemu-devel] [RFC PATCH v2 14/21][SeaBIOS] acpi_dsdt: Support _OST dimm method, Vasilis Liaskovitis, 2012/07/11
[Qemu-devel] [RFC PATCH v2 17/21][SeaBIOS] acpi_dsdt: Revert internal dimm state on _OST failure, Vasilis Liaskovitis, 2012/07/11
[Qemu-devel] [RFC PATCH v2 06/21] dimm: Implement memory device abstraction, Vasilis Liaskovitis, 2012/07/11