On Wed, 7 May 2014, Paolo Bonzini wrote: > Il 07/05/2014 17:12, Peter Maydell ha scritto: > > > > - if (memory_access_is_direct(mr, is_write)) { > > > > + if (xen_enabled() && memory_access_is_direct(mr, is_write)) { > > > > hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - > > > addr; > > > > len = MIN(page, len); > > > > } > > We should put this patch in (both as an efficiency thing and an > > expedient fix) but we really need to either track down which > > callers of this API are relying on the returned plen not being > > truncated, or we need to fix Xen to not truncate either. This > > is just a bandaid IMHO. > > Fixing Xen to not truncate is not possible because of the Xen mapcache, unless > of course QEMU is changed to avoid the mapcache completely on 64-bit hosts. > I'm not sure if that makes sense from the Xen point of view.
Right, it makes sense, however we would still need to keep the 32-bit mapcache code path working. > Regarding fixing callers, a known one is virtio-scsi which is a bug and on my > todo list. But another is VFIO, which cannot accept truncation if the IOMMU > page size is greater than TARGET_PAGE_SIZE.