vfio: Filter out bogus mappings
authorAlex Williamson <alex.williamson@redhat.com>
Thu, 16 Jan 2014 16:22:07 +0000 (09:22 -0700)
committerAlex Williamson <alex.williamson@redhat.com>
Thu, 16 Jan 2014 16:22:07 +0000 (09:22 -0700)
commitd3a2fd9b29e43e202315d5e99399b99622469c4a
tree290b0c3d589f75a8dff793688bd715b9e1b00352
parente638073c569e801ce9def2016a84f955cbbca779
vfio: Filter out bogus mappings

Since 57271d63 we now see spurious mappings with the upper bits set
if 64bit PCI BARs are sized while enabled.  The guest writes a mask
of 0xffffffff to the lower BAR to size it, then restores it, then
writes the same mask to the upper BAR resulting in a spurious BAR
mapping into the last 4G of the 64bit address space.  Most
architectures do not support or make use of the full 64bits address
space for PCI BARs, so we filter out mappings with the high bit set.
Long term, we probably need to think about vfio telling us the
address width limitations of the IOMMU.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
hw/misc/vfio.c