From: "Michael S. Tsirkin" <mst@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: aik@ozlabs.ru, bsd@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] vfio: Filter out bogus mappings
Date: Thu, 16 Jan 2014 00:07:02 +0200 [thread overview]
Message-ID: <20140115220702.GA7971@redhat.com> (raw)
In-Reply-To: <20140115194348.21785.76357.stgit@bling.home>
On Wed, Jan 15, 2014 at 12:44:08PM -0700, Alex Williamson wrote:
> 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>
> ---
> hw/misc/vfio.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
> index 30b1a78..c8f63a6 100644
> --- a/hw/misc/vfio.c
> +++ b/hw/misc/vfio.c
> @@ -2156,7 +2156,9 @@ static int vfio_dma_map(VFIOContainer *container, hwaddr iova,
>
> static bool vfio_listener_skipped_section(MemoryRegionSection *section)
> {
> - return !memory_region_is_ram(section->mr);
> + return !memory_region_is_ram(section->mr) ||
> + section->offset_within_address_space >
> + ~section->offset_within_address_space;
I personally find this a very un-intuitive way to test it.
section->offset_within_address_space >= 0x1ULL << 63
would be more readable I think.
A comment in code explaining what this hack does won't hurt too.
> }
>
> static void vfio_listener_region_add(MemoryListener *listener,
prev parent reply other threads:[~2014-01-15 22:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-15 19:44 [Qemu-devel] [PATCH] vfio: Filter out bogus mappings Alex Williamson
2014-01-15 22:07 ` Michael S. Tsirkin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140115220702.GA7971@redhat.com \
--to=mst@redhat.com \
--cc=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=bsd@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.