This patch series supports the forward mode='hostdev'. The functionality
of this mode is the same as interface type='hostdev' but with the added
benefit of using interface pools.
The patch series also contains a patch to support use of interface names
and PCI device addresses interchangeably in a network xml, and return
the appropriate one in actualDevice when networkAllocateActualDevice is
called.
At the top level managed attribute can be specified with identical results
as when it's specified for a hostdev.
Currently forward mode='hostdev' does not support USB devices.
Since the hostdev-hybrid patches are dependent on the hostdev patches,
I have also included the support for interface-type="hostdev-hybrid" and
forward mode="hostdev-hybrid" in this patch series.
The hostdev-hybrid mode makes migration possible along with PCI-passthrough.
I had posted a RFC on the hostdev-hybrid methodology earlier on the libvirt
mailing list.
The RFC can be found here:
https://www.redhat.com/archives/libvir-list/2012-February/msg00309.html
Shradha Shah (15):
Prerequisite Patch. virDomainDevicePCIAddress and respective
functions moved to a new file called conf/device_conf.ch
Moved the code to create implicit interface pool from PF to a new
function
RNG updates, new xml parser/formatter code to support forward
mode=hostdev
Code to return interface name or pci_addr of the VF in actualDevice
Forward Mode Hostdev network driver Implementation
Forward Mode 'Hostdev' qemu driver implementation
RNG updates, new xml parser/formatter code to support interface
type=hostdev-hybrid
RNG updates, new xml parser/formatter code to support forward
mode=hostdev-hybrid
Hostdev-hybrid mode requires a direct linkdev and direct mode.
ActualParent is used to store the information about the NETDEV that
contains HOSTDEV in hybrid case.
Hybrid Hostdevs should be marked as ephemeral.
Hostdev-hybrid network driver Implementation
Hostdev-hybrid qemu driver implementation
Using the Ephemeral Flag to prepare for Migration Support.
Migration support for hostdev-hybrid.
docs/formatdomain.html.in | 29 ++
docs/formatnetwork.html.in | 62 +++
docs/schemas/domaincommon.rng | 50 +++
docs/schemas/network.rng | 83 ++++-
include/libvirt/libvirt.h.in | 1 +
include/libvirt/virterror.h | 1 +
src/Makefile.am | 6 +-
src/conf/device_conf.c | 135 ++++++
src/conf/device_conf.h | 65 +++
src/conf/domain_conf.c | 286 +++++++-----
src/conf/domain_conf.h | 33 +-
src/conf/network_conf.c | 131 +++++-
src/conf/network_conf.h | 30 ++-
src/libvirt_private.syms | 11 +-
src/network/bridge_driver.c | 463 ++++++++++++++++----
src/qemu/qemu_command.c | 99 ++++-
src/qemu/qemu_domain.c | 6 +-
src/qemu/qemu_domain.h | 3 +-
src/qemu/qemu_driver.c | 6 +-
src/qemu/qemu_hostdev.c | 97 +++--
src/qemu/qemu_hotplug.c | 35 ++-
src/qemu/qemu_migration.c | 106 +++++-
src/qemu/qemu_monitor.c | 14 +-
src/qemu/qemu_monitor.h | 17 +-
src/qemu/qemu_monitor_json.c | 14 +-
src/qemu/qemu_monitor_json.h | 14 +-
src/qemu/qemu_monitor_text.c | 16 +-
src/qemu/qemu_monitor_text.h | 14 +-
src/qemu/qemu_process.c | 3 +-
src/uml/uml_conf.c | 5 +
src/util/pci.c | 2 +-
src/util/pci.h | 2 +
src/util/virnetdev.c | 65 +++-
src/util/virnetdev.h | 10 +-
src/util/virterror.c | 3 +-
src/xen/xend_internal.c | 3 +-
src/xenxs/xen_sxpr.c | 1 +
tests/networkxml2xmlin/hostdev-hybrid-pf.xml | 11 +
tests/networkxml2xmlin/hostdev-hybrid.xml | 10 +
tests/networkxml2xmlin/hostdev-pf.xml | 11 +
tests/networkxml2xmlin/hostdev.xml | 10 +
tests/networkxml2xmlout/hostdev-hybrid-pf.xml | 7 +
tests/networkxml2xmlout/hostdev-hybrid.xml | 10 +
tests/networkxml2xmlout/hostdev-pf.xml | 7 +
tests/networkxml2xmlout/hostdev.xml | 10 +
tests/networkxml2xmltest.c | 4 +
.../qemuxml2argv-net-hostdevhybrid.args | 6 +
.../qemuxml2argv-net-hostdevhybrid.xml | 35 ++
tests/qemuxml2xmltest.c | 1 +
49 files changed, 1675 insertions(+), 368 deletions(-)
create mode 100644 src/conf/device_conf.c
create mode 100644 src/conf/device_conf.h
create mode 100644 tests/networkxml2xmlin/hostdev-hybrid-pf.xml
create mode 100644 tests/networkxml2xmlin/hostdev-hybrid.xml
create mode 100644 tests/networkxml2xmlin/hostdev-pf.xml
create mode 100644 tests/networkxml2xmlin/hostdev.xml
create mode 100644 tests/networkxml2xmlout/hostdev-hybrid-pf.xml
create mode 100644 tests/networkxml2xmlout/hostdev-hybrid.xml
create mode 100644 tests/networkxml2xmlout/hostdev-pf.xml
create mode 100644 tests/networkxml2xmlout/hostdev.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdevhybrid.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdevhybrid.xml
--
1.7.4.4