Hi all,
Recently, more and more people are interesting in gfx passthrough. But now
xen-unstable doesn't support it, although some guys (Jean Guyader, Beng Heng,
Ng) posted gfx passthrough patches. If xen-unstable includes gfx passthrough
support, people can be easy to try it.
gfx passthrough is more complicated than other PCI device passthrough such as
NIC, and is hard to use a generic approach for all gfx passthrough. But there
are some necessary changes for gfx passthrough:
1. disable emulated VGA adapter, instead use passthroughed gfx
2. load VGA bios of the gfx to guest
3. passthrough legacy VGA IO ports and MMIOs to guest
This patchset implements above common changes. Based on the common changes, we
are investigating to support more gfx cards and guest OSs. We will post the
hacks in future.
The patchset supports to passthrough the primary gfx and discrete gfx. With the
patchset, virtualization friendly gfx cards can be passthroughed (e.g. Nvidia
FX3800), IGD and many discrete gfx cards are not supported yet.
This is easy to use, the only difference from other PCI passthrough is to add
following lines to hvm configure file:
#----------------------------------------------------------------------------------------
# 0: no gfx passthru, 1: IGD passthru, 2: discrete gfx passthru, default is 0
gfx_passthru=2
and also pls passthrough a USB controller for keyboard/mouse use in guest. (Now
there are some issues on USB controller passthrough with pv-ops dom0, so
currently prefer to use 2.6.18 dom0.) In future, Jean said he would like to
commit the patch to share the host keyboard/mouse with multiple vms. At that
time, USB controller assignment is not needed.
v1 -> v2 changelogs:
- Removed the code to nnlarge guest MMIO range to contain gfx card's large
memory, because hvmloader will auto-size the MMIO hole
- Implemented the VGA bios mapping and copying inside qemu, so that don't
need to modify xc_hvm_build functions
The patchset is as follows:
1. PATCH 1/2: changes in xen-unstable
- add a VGA type for gfx passthrough, and get the size of VGA bios of
passthrouged gfx in hvmloader
- add a config option 'gfx_passthru' for gfx passthrough
2. PATCH 2/2: changes in QEMU
- disable emulated VGA adapter if there is a passthroughed gfx
- retrieves VGA bios from host VGA BIOS address (0xC0000), then load it
to guest VGA BIOS address
- register/unregister legacy VGA I/O ports and MMIOs for passthroughed
gfx
Signed-off-by: Ben Lin <ben.y.lin@xxxxxxxxx>
Signed-off-by: Weidong Han <weidong.han@xxxxxxxxx>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|