qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [Qemu-devel] [PATCH 0/2] PPC: kvm: Fix incorrect remappin


From: address@hidden
Subject: Re: [Qemu-ppc] [Qemu-devel] [PATCH 0/2] PPC: kvm: Fix incorrect remapping of in-kernel MPIC
Date: Fri, 5 Sep 2014 12:59:32 +0000

> -----Original Message-----
> From: address@hidden
> [mailto:address@hidden On
> Behalf Of Alexander Graf
> Sent: Friday, September 05, 2014 12:08 PM
> To: Purcareata Bogdan-B43198; address@hidden
> Cc: address@hidden
> 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.

-Mike



reply via email to

[Prev in Thread] Current Thread [Next in Thread]