Hi Alex, Eric, > -----Original Message----- > From: Qemu-devel [mailto:qemu-devel- > bounces+bharat.bhushan=nxp....@nongnu.org] On Behalf Of Bharat > Bhushan > Sent: Friday, October 06, 2017 9:16 AM > To: Auger Eric <eric.au...@redhat.com>; Linu Cherian > <linuc.dec...@gmail.com> > Cc: peter.mayd...@linaro.org; kevin.t...@intel.com; m...@redhat.com; > marc.zyng...@arm.com; t...@semihalf.com; will.dea...@arm.com; > drjo...@redhat.com; qemu-devel@nongnu.org; > alex.william...@redhat.com; qemu-...@nongnu.org; > linu.cher...@cavium.com; eric.auger....@gmail.com; > robin.mur...@arm.com; christoffer.d...@linaro.org; > bharatb.ya...@gmail.com > Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH v4 0/5] virtio-iommu: VFIO > integration > > > > > >> Thanks > > >> > > >> Eric > > >>> > > >>> However you should be allowed to map 1 sg element of 5 pages and > > >>> then notify the host about this event I think. Still looking at the > > >>> code... > > >>> > > >>> I still can't reproduce the issue at the moment. What kind of > > >>> device are you assigning? > > >>> > > >>> Thanks > > >>> > > >>> Eric > > >>>> > > >>>> Atleast vfio_get_vaddr called from vfio_iommu_map_notify in Qemu > > >>>> expects the map size to be a power of 2. > > > > > > Actually I missed the most important here ;-) > > >>>> > > >>>> if (len & iotlb->addr_mask) { > > > This check looks suspiscious to me. In our case the len is not > > > modified by the previous translation and it fails, I don't see why. > > > It should be valid to be able to notify 5 granules. > > > > So after discussion with Alex, looks the way we notify the host > > currently is wrong. we set the addr_mask to the mapping/unmapping size > > -1 whereas this should be a page mask instead (granule size or block size?). > > So if the guest maps 5 x 4kB pages we should send 5 notifications for > > each page and not a single one. It is unclear to me if we can notify > > with hugepage/block page size mask. Peter may confirm/infirm this. in > > vsmmuv3 code I notify by granule or block size.
My understanding is that host provides supported page sizes (page_size_mask), and Size of each notification to host should be exactly best fit of supported page-size and/or multiples of supported page-sizes. So if guest maps 20K size (single request), and supported page size is 4K, so we can still send one 20K size request. Not sure I get it, why multiples of supported page-size cannot be provided in one notification to host. Thanks -Bharat > > > > Bharat, please can you add this to your TODO list? > > > > Linu, thanks a lot for the time you spent debugging this issue. > > Curiously on my side, it is really seldom hit but it is ... > > Thanks Linu and Eric, I added this to my todo list. > While I am still not able to reproduce the issue. I tried with e1000 and now > try with ixgbe device. May I know which device can be used to reproduce this > issue? > > Thanks > -Bharat > > > > > Thanks! > > > > Eric > > > > > > Thanks > > > > > > Eric > > >>>> error_report("iommu has granularity incompatible with target > AS"); > > >>>> return false; > > >>>> } > > >>>> > > >>>> Just trying to understand how this is not hitting in your case. > > >>>> > > >>>> > > >>> > > >> > > >