The whole patch series could be get from here: https://github.com/chunyanliu/libvirt/commits/hostdev_passthrough -Chunyan >>> On 3/7/2014 at 06:52 PM, in message <1394189596-22994-1-git-send-email-cyliu@xxxxxxxx>, Chunyan Liu <cyliu@xxxxxxxx> wrote: > These patches implements a separate module for hostdev passthrough so that it > could be shared by different drivers and can maintain a global state of a > host > device. > > Patch 1: fix memory leak in virscsi.c > Patch 2: improve virHostdevManager to use virOject wrapper and keep > reference > > Patches 3~7: switch existing qemu and lxc driver to use virHostdevManager's > lists, so that to maintain a global state of every host device. > > Patches 8~45 are to extract general code from qemu_hostdev.c piece by piece, > make them reusable common APIs. > > Patches 46: unit test for the virhostdev common library > Patches 47: add a hostdev backend type for xen > Patches 48: add pci passthrough to libxl driver based on the common library > Patches 49: change lxc to use common library APIs > > --- > changes to v13: > * change virHostdevManager, use virObject and keep reference, solve 'free' > problem > * add .hostdevMgr to qemu/lxc/libxl driver, get virHostdevManager in > StateInitialize for once and keep reference, instead of getting it every > time virHostdevManager is used. > * fix v13 3/49 "qemu-reuse-hostdev-interfaces-to-avoid-duplicate.patch": > update qemuPrepareHostUSBDevices parameters to specify hostdevs and > nhostdevs, so that could be reused in qemu_hotplug. > * rebase left patches > > Chunyan Liu (49): > virscsi: fix memory leak > virhostdev: use virObject to virHostdevManager to keep reference > update qemuPrepareHostUSBDevices parameters to keep consistency > qemu: reuse hostdev interfaces to avoid duplicate > qemu: remove functions used internally only from qemu_hostdev.h > qemu: use general virhostdev lists instead of its own > lxc: use general virhostdev lists instead of its own > qemu_hostdev: move cfg->relaxedACS as a flag > qemu_hostdev: move ColdBoot as a flag > qemu_hostdev: move netconfig file location to virhostdev stateDir > extract general code from qemuPrepareHostdevPCIDevices > rename qemu*NetConfigRestore/Replace to > virHostdevNetConfigRestore/Replace > rename qemuGet*PciHostDeviceList to virHostdevGet*PciHostDeviceList > pass driver name as a parameter to virHostdevPrepareHostdevPCIDevices > extract general code from qemuDomainReAttachHostdevDevices > pass driver name as a parameter to virHostdevReAttachPCIDevices > rename qemuReAttachPciDevice to virHostdevReAttachPciDevice > move virHostdevPrepare(ReAttach)PCIDevices to virhostdev.c > extract general code from qemuUpdateActivePciHostdevs > extract general code from qemuUpdateActiveUsbHostdevs > extract general code from qemuUpdateActiveScsiHostdevs > pass driver_name as parameter of virHostdevUpdate*Hostdevs functions > move virHostdevUpdate* functions to virhostdev.c > extract general code from qemuPrepareHostUSBDevices > rename qemu*USBDevices to virHostdev*USBDevices > pass driver name to virHostdevPrepareUSBDevices > move virHostdevPrepareHostUSBDevices to virhostdev.c > extract general code from qemuPrepareHostSCSIDevices > pass driver name as parameter to virHostdevPrepareSCSIDevices > move virHostdevPrepareHostSCSIDevices to virhostdev.c > extract general code from qemuDomainReAttachHostUsbDevices > pass driver name as paramter to virHostdevReAttachUsbHostdevs > move virHostdevReAttachUsbHostdevs to virhostdev.c > extract general code from qemuDomainReAttachHostScsiDevices > pass driver name as parameter to virHostdevReAttachScciHostdevs > move virHostdevReAttachHostScsiDevices to virhostdev.c > extract general code of NodeDeviceDetach > extract general code of NodeDeviceReAttach > extract general code of NodeDeviceReset > move virHostdevNodeDevice* to virhostdev.c > improve parameter name to let it more meaningful > rename some function names to keep consistency > improve virHostdevUpdate* parameters to make it more widely used > add 3 wrapper functions for prepare/reattach/update domain hostdevs > add parameter checks to common interfaces > add unit test for new virhostdev common library > change lxc_hostdev.c to use virhostdev common library APIs > add hostdev pci backend type for xen > add pci passthrough to libxl driver > > .gitignore | 1 + > docs/schemas/domaincommon.rng | 1 + > src/conf/domain_conf.c | 3 +- > src/conf/domain_conf.h | 1 + > src/libvirt_private.syms | 15 + > src/libxl/libxl_conf.c | 63 ++ > src/libxl/libxl_conf.h | 7 +- > src/libxl/libxl_domain.c | 9 + > src/libxl/libxl_driver.c | 454 +++++++++++- > src/lxc/lxc_conf.h | 5 +- > src/lxc/lxc_driver.c | 12 +- > src/lxc/lxc_hostdev.c | 307 +------- > src/qemu/qemu_command.c | 3 +- > src/qemu/qemu_conf.h | 9 +- > src/qemu/qemu_driver.c | 76 +- > src/qemu/qemu_hostdev.c | 1203 ++----------------------------- > src/qemu/qemu_hostdev.h | 29 +- > src/qemu/qemu_hotplug.c | 78 +- > src/qemu/qemu_process.c | 8 +- > src/util/virhostdev.c | 1565 > ++++++++++++++++++++++++++++++++++++++++- > src/util/virhostdev.h | 96 +++ > src/util/virscsi.c | 13 +- > tests/Makefile.am | 5 + > tests/virhostdevtest.c | 507 +++++++++++++ > 24 files changed, 2832 insertions(+), 1638 deletions(-) > create mode 100644 tests/virhostdevtest.c -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list