[Intel-gfx] [Qemu-devel] [IGDVFIO] [PATCH 3/8] RFC and help completing: Intel IGD Direct Assignment with VFIO

Alex Williamson alex.williamson at redhat.com
Wed Sep 24 22:57:22 CEST 2014


On Wed, 2014-09-24 at 22:31 +0200, Paolo Bonzini wrote:
> Il 24/09/2014 21:47, Alex Williamson ha scritto:
> > So the opregion is mapped by a config write on the IGD device itself and
> > the other 3 regions, that we know about so far, are mapped via writes to
> > the host bridge.
> 
> AFAIU the opregion is mapped by the (host) BIOS, that writes the address
> to a well-known scratch dword in the configuration space.  The host
> reads from the dword and finds the opregion that way.

Right, that's the physical mapping, Andy's patches are mimicking that
behavior virtually.  Seabios reserves memory, creates e820 entries, and
"maps" the hardware by writing to these registers.  That triggers QEMU
to adjust the MemoryRegion in the guest address space which is an mmap
to the host address space, using /dev/mem for now, but hopefully the
vfio file descriptor in the future (I should be careful what I hope
for).

The opregion is pretty trivial because the write is to the IGD itself.
The others are to the host bridge, so we need to figure out what sort of
abstraction makes sense to get that back into vfio code.

Perhaps vfio creates all the memory regions and registers them into an
igd service and the host bridge can make calls like:

gtt = igd_get_gtt_mr();

which returns NULL and nothing happens or the registered MemoryRegion
and the host bridge places it into the address space.  Thanks,

Alex




More information about the Intel-gfx mailing list