> >> 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. > > 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. > >>>> > >>>> > >>> > >> > >