[libvirt] [PATCHv2 00/17] Support for <interface type='hostdev'>

Laine Stump laine at laine.org
Tue Feb 28 20:14:31 UTC 2012

This series of patches enhances the <interface device to support a
sort of "intelligent hostdev", i.e. PCI passthrough where device-type
specific initialization is done prior to assigning the device to the
guest, in particular to allow setting the MAC address and do 802.1QbX
setup for network devices.

The first posting of this patch only supported parsing and formatting
of these devices. This version also supports them in persistent
config, as well as hotplug (both persistent and live-only).

The only piece that isn't in this patchset (because it is coming from
another author) is the code that actually 

Rather than adding all of the device-type specific config to
<hostdev>, this is accomplished through adding a new type of
<interface> element, type='hostdev'. When an interface is
type='hostdev' the following is changed:

  * in the toplevel device, the managed attribute can be specified
    (with identical results as when it's specified in a <hostdev>

  * The <source> element can specify a pci address or usb address,
    just as can be done in <hostdev>. One notable difference is that
    the type of the address is specified directly in the source
    <address> element, rather than as an attribute of the toplevel
    device (that's how it's done for <hostdev>, but for <interface>,
    the toplevel element's type attribute is already used).

NB: a type=hostdev interface will reside in both the interface list
(for configuration and memory management) and hostdev list (for PCI
attach/detach, and tracking of which devices are assigned)).

This entire series is available on gitorious:


in the "passthrough8" branch.

Patches 1-7, 9-12, and 15-16 are just setup for the new
functionality - they reorder and refactor existing code to allow
greater re-use of existing code and easier plugin of the new
code. Those marked with "X" are unchanged from V1 (as far as my
git logs tell me). Those marked "+" are new patches that weren't
in V1.

+ [PATCH 01/17] conf: add missing device types to
  [PATCH 02/17] conf: relocate virDomainDeviceDef and
X [PATCH 03/17] conf: reorder static functions in domain_conf.c
+ [PATCH 04/17] qemu: rename virDomainDeviceInfoPtr variables to avoid
+ [PATCH 05/17] conf: add device pointer to args of
  [PATCH 06/17] conf: make hostdev info a separate object
X [PATCH 07/17] conf: HostdevDef parse/format helper functions

+ [PATCH 09/17] conf: put subsys part of virDomainHostdevDef into its
+ [PATCH 10/17] conf: hostdev utility functions
+ [PATCH 11/17] qemu: re-order functions in qemu_hotplug.c
+ [PATCH 12/17] qemu: refactor hotplug detach of hostdevs

+ [PATCH 15/17] conf: change virDomainNetRemove from static to global
+ [PATCH 16/17] qemu: use virDomainNetRemove instead of inline code

Patch 8 is just a couple lines:

 [PATCH 08/17] conf: give each hostdevdef a parent pointer

  [PATCH 13/17] conf: parse/format type='hostdev' network interfaces
+ [PATCH 14/17] qemu: support type='hostdev' network devices at domain start
+ [PATCH 17/17] qemu: support type=hostdev network device live hotplug

More information about the libvir-list mailing list