Jim Fehlig wrote: > Chunyan Liu wrote: > >> Extract code from qemu_hostdev.c and make it reusable for multiple drivers, >> meanwhile maintain a global hostdev state to solve conflict between different >> drivers. >> >> Signed-off-by: Chunyan Liu <cyliu@xxxxxxxx> >> --- >> .gnulib | 2 +- >> po/POTFILES.in | 1 + >> src/Makefile.am | 1 + >> src/libvirt_private.syms | 21 + >> src/lxc/lxc_hostdev.c | 11 +- >> src/qemu/qemu_driver.c | 4 +- >> src/qemu/qemu_hostdev.c | 42 +- >> src/util/virhostdev.c | 1691 ++++++++++++++++++++++++++++++++++++++++++++++ >> src/util/virhostdev.h | 134 ++++ >> src/util/virpci.c | 30 +- >> src/util/virpci.h | 9 +- >> src/util/virscsi.c | 28 +- >> src/util/virscsi.h | 8 +- >> src/util/virusb.c | 29 +- >> src/util/virusb.h | 8 +- >> 15 files changed, 1970 insertions(+), 49 deletions(-) >> create mode 100644 src/util/virhostdev.c >> create mode 100644 src/util/virhostdev.h >> >> diff --git a/.gnulib b/.gnulib >> index d18d1b8..831b84c 160000 >> --- a/.gnulib >> +++ b/.gnulib >> @@ -1 +1 @@ >> -Subproject commit d18d1b8023822220bb8f0a079c7312a1adffdce0 >> +Subproject commit 831b84c59ef413c57a36b67344467d66a8a2ba70 >> >> > > Oops, looks like you needed to update gnulib. > [...] >> diff --git a/src/util/virhostdev.h b/src/util/virhostdev.h >> new file mode 100644 >> index 0000000..e15a70d >> --- /dev/null >> +++ b/src/util/virhostdev.h >> @@ -0,0 +1,134 @@ >> +/* virhostdev.h: hostdev management >> + * >> + * Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. >> + * Copyright (C) 2006-2007, 2009-2014 Red Hat, Inc. >> + * Copyright (C) 2006 Daniel P. Berrange >> + * >> + * This library is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU Lesser General Public >> + * License as published by the Free Software Foundation; either >> + * version 2.1 of the License, or (at your option) any later version. >> + * >> + * This library is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> + * Lesser General Public License for more details. >> + * >> + * You should have received a copy of the GNU Lesser General Public >> + * License along with this library. If not, see >> + * <http://www.gnu.org/licenses/>. >> + * >> + * Author: Chunyan Liu <cyliu@xxxxxxxx> >> + * Author: Daniel P. Berrange <berrange@xxxxxxxxxx> >> + */ >> + >> +#ifndef __VIR_HOSTDEV_H__ >> +# define __VIR_HOSTDEV_H__ >> + >> +# include "internal.h" >> + >> +# include "domain_conf.h" >> +# include "virpci.h" >> +# include "virusb.h" >> +# include "virscsi.h" >> + >> +typedef enum { >> + VIR_SP_PCI_HOSTDEV = (1 << 0), /* support pci passthrough */ >> + VIR_SP_USB_HOSTDEV = (1 << 1), /* support usb passthrough */ >> + VIR_SP_SCSI_HOSTDEV = (1 << 2), /* support scsi passthrough */ >> + >> + VIR_COLD_BOOT = (1 << 8), /* cold boot */ >> + VIR_STRICT_ACS_CHECK = (1 << 9), /* strict acs check */ >> +} virHostdevManagerFlag; >> + >> +typedef struct _virHostdevManager virHostdevManager; >> +typedef virHostdevManager *virHostdevManagerPtr; >> +struct _virHostdevManager{ >> + char *stateDir; >> + >> + virPCIDeviceListPtr activePciHostdevs; >> + virPCIDeviceListPtr inactivePciHostdevs; >> + virUSBDeviceListPtr activeUsbHostdevs; >> + virSCSIDeviceListPtr activeScsiHostdevs; >> +}; >> + >> +virHostdevManagerPtr virHostdevManagerGetDefault(void); >> + >> +bool virHostdevHostSupportsPassthroughVFIO(void); >> +bool virHostdevHostSupportsPassthroughKVM(void); >> While rebasing 3/6, noticed the name change here from SupportsPassthroughLegacy to SupportsPassthroughKVM. IMO, we should stick with the existing name. Regards, Jim -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list