On 05.09.14 16:31, mihai.cara...@freescale.com wrote: >> -----Original Message----- >> From: qemu-devel-bounces+mihai.caraman=freescale....@nongnu.org >> [mailto:qemu-devel-bounces+mihai.caraman=freescale....@nongnu.org] On >> Behalf Of Alexander Graf >> Sent: Friday, September 05, 2014 12:08 PM >> To: Purcareata Bogdan-B43198; qemu-...@nongnu.org >> Cc: qemu-devel@nongnu.org >> Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 0/2] PPC: kvm: Fix incorrect >> remapping of in-kernel MPIC >> >> >> >> On 03.09.14 20:36, Bogdan Purcareata wrote: >>> On target-ppc, the kvm-openpic memory region is part of the E500-CCSR >> memory >>> region. On the kernel side, the MPIC is mapped at the same offset as >> the >>> kvm-openpic within the address space. >>> >>> When adding the PCI BAR0 memory region, an alias is created to point to >> the >>> E500-CCSR memory region. This results in firing the >> kvm_openpic_region_add once >>> more, since kvm-openpic is part of the latter. Only this time, the >> offset is >>> wrong - it's part of the PCI memory region. This leads to the in-kernel >> MPIC to >>> be remapped at a wrong address, and thus all traps to the kvm-openpic >>> address to be emulated in userspace. >>> >>> The fix consists in an additional filter in >> kvm_openpic_region_{add,del} to >>> consider only addresses matching the start of the kvm-openpic memory >> region. >> >> If this is true, wouldn't vfio and host be broken too? > > You should have put the same question for 87d8354d "PPC: openpic_kvm: Filter > memory events properly". I think vhost and vfio (except for peer to peer PCI) > use region_add memory listener because they need to access the _RAM_ memory > for DMA, so they skip BAR notifications (at least in FSL SDK version of qemu). > Openpic on the other hand uses region_add as a trigger for KVM_SET_DEVICE_ATTR > ioctl (the device base address) so it takes into account non-RAM memory > regions. > > Vhost uses another memory listener, eventfd_add that follows a slightly > different path then region_add, as a trigger to call KVM_IOEVENTFD ioctl. > Though vhost seems to work properly we can further trace the ioctl to double > check. > > Peer to peer PCI might reveal the issue on vfio but this feature is not > supported by the current FSL PAMU driver. If you think of another platform > which supports peer to peer PCI and registers a memory region alias like > this patch do 3eddc1be "Adding BAR0 for e500 PCI controller", then it worth > validating it. > > I see that vfio_listener_skipped_section() changed upstream so vfio may not > skip BAR notifications anymore. What qemu version are you using on FSL boards > like T424QDS, are you using top of the tree? If it works we would like to try > it to validate vfio and vhost.
Yes I'm running pure upstream code. However, I haven't tried to use VFIO on e500 at all yet. Alex