Message ID | 84321264-D994-4CB4-8D55-CD238AA504F7@suse.de |
---|---|
State | New |
Headers | show |
On 21 February 2014 10:49, Alexander Graf <agraf@suse.de> wrote: > > On 21.02.2014, at 11:36, Peter Maydell <peter.maydell@linaro.org> wrote: > >> On 21 February 2014 09:41, Alexander Graf <agraf@suse.de> wrote: >>> This fixes a build breakage on win32 hosts. >> >> Unfortunately it doesn't: >> >> cam-vm-266:precise:qemu$ make -C build/w32 >> make: Entering directory `/home/petmay01/linaro/qemu-from-laptop/qemu/build/w32' >> CC ppc64-softmmu/hw/ppc/spapr_pci.o >> cc1: warnings being treated as errors >> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c: In >> function ‘spapr_pci_msi_init’: >> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c:486: >> warning: implicit declaration of function ‘getpagesize’ >> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c:486: >> warning: nested extern declaration of ‘getpagesize’ >> >> The compiler complains that there's no declaration >> of the function you're trying to call before it gets >> around to deciding whether it can eliminate the code >> as unreachable. > > Meh. How about this? Yep, CONFIG_KVM is a sufficiently big hammer to fix this :-) thanks -- PMM
> Am 21.02.2014 um 11:56 schrieb Peter Maydell <peter.maydell@linaro.org>: > >> On 21 February 2014 10:49, Alexander Graf <agraf@suse.de> wrote: >> >>> On 21.02.2014, at 11:36, Peter Maydell <peter.maydell@linaro.org> wrote: >>> >>>> On 21 February 2014 09:41, Alexander Graf <agraf@suse.de> wrote: >>>> This fixes a build breakage on win32 hosts. >>> >>> Unfortunately it doesn't: >>> >>> cam-vm-266:precise:qemu$ make -C build/w32 >>> make: Entering directory `/home/petmay01/linaro/qemu-from-laptop/qemu/build/w32' >>> CC ppc64-softmmu/hw/ppc/spapr_pci.o >>> cc1: warnings being treated as errors >>> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c: In >>> function ‘spapr_pci_msi_init’: >>> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c:486: >>> warning: implicit declaration of function ‘getpagesize’ >>> /home/petmay01/linaro/qemu-from-laptop/qemu/hw/ppc/spapr_pci.c:486: >>> warning: nested extern declaration of ‘getpagesize’ >>> >>> The compiler complains that there's no declaration >>> of the function you're trying to call before it gets >>> around to deciding whether it can eliminate the code >>> as unreachable. >> >> Meh. How about this? > > Yep, CONFIG_KVM is a sufficiently big hammer to fix this :-) Awesome. Queued to ppc-next. Alex > > thanks > -- PMM
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 66ddf10..5f302ba 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -469,6 +469,8 @@ static const MemoryRegionOps spapr_msi_ops = { void spapr_pci_msi_init(sPAPREnvironment *spapr, hwaddr addr) { + uint64_t window_size = 4096; + /* * As MSI/MSIX interrupts trigger by writing at MSI/MSIX vectors, * we need to allocate some memory to catch those writes coming @@ -476,10 +478,19 @@ void spapr_pci_msi_init(sPAPREnvironment *spapr, hwaddr addr) * As MSIMessage:addr is going to be the same and MSIMessage:data * is going to be a VIRQ number, 4 bytes of the MSI MR will only * be used. + * + * For KVM we want to ensure that this memory is a full page so that + * our memory slot is of page size granularity. */ +#ifdef CONFIG_KVM + if (kvm_enabled()) { + window_size = getpagesize(); + } +#endif + spapr->msi_win_addr = addr; memory_region_init_io(&spapr->msiwindow, NULL, &spapr_msi_ops, spapr, - "msi", getpagesize()); + "msi", window_size); memory_region_add_subregion(get_system_memory(), spapr->msi_win_addr, &spapr->msiwindow); }