
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@suse.com> --- .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@suse.com> + * Author: Daniel P. Berrange <berrange@redhat.com> + */ + +#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