From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Rename all the pciDeviceXXX and pciXXXDevice APIs to have a fixed virPCIDevice name prefix --- src/conf/node_device_conf.c | 1 - src/conf/node_device_conf.h | 5 +- src/libvirt_private.syms | 74 ++-- src/network/bridge_driver.c | 2 +- src/node_device/node_device_udev.c | 4 +- src/qemu/qemu_agent.c | 1 - src/qemu/qemu_conf.h | 5 +- src/qemu/qemu_driver.c | 52 +-- src/qemu/qemu_hostdev.c | 244 ++++++------- src/qemu/qemu_hostdev.h | 2 +- src/qemu/qemu_hotplug.c | 18 +- src/security/security_apparmor.c | 17 +- src/security/security_dac.c | 32 +- src/security/security_selinux.c | 30 +- src/security/virt-aa-helper.c | 10 +- src/util/virnetdev.c | 34 +- src/util/virnetdev.h | 2 +- src/util/virpci.c | 676 ++++++++++++++++++------------------- src/util/virpci.h | 174 +++++----- src/xen/xen_driver.c | 24 +- 20 files changed, 709 insertions(+), 698 deletions(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 53b6af2..af89fe3 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -36,7 +36,6 @@ #include "virutil.h" #include "virbuffer.h" #include "viruuid.h" -#include "virpci.h" #include "virrandom.h" #define VIR_FROM_THIS VIR_FROM_NODEDEV diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index 12c36d8..03380df 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -28,6 +28,7 @@ # include "internal.h" # include "virutil.h" # include "virthread.h" +# include "virpci.h" # include <libxml/tree.h> @@ -111,8 +112,8 @@ struct _virNodeDevCapsDef { unsigned int class; char *product_name; char *vendor_name; - struct pci_config_address *physical_function; - struct pci_config_address **virtual_functions; + virPCIDeviceAddressPtr physical_function; + virPCIDeviceAddressPtr *virtual_functions; unsigned int num_virtual_functions; unsigned int flags; } pci_dev; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 87171ae..ae0e7a7 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -991,43 +991,43 @@ virNWFilterVarValueGetSimple; # pci.h -pciConfigAddressToSysfsFile; -pciDettachDevice; -pciDeviceFileIterate; -pciDeviceGetManaged; -pciDeviceGetName; -pciDeviceGetRemoveSlot; -pciDeviceGetReprobe; -pciDeviceGetUnbindFromStub; -pciDeviceGetUsedBy; -pciDeviceGetVirtualFunctionInfo; -pciDeviceIsAssignable; -pciDeviceIsVirtualFunction; -pciDeviceListAdd; -pciDeviceListCount; -pciDeviceListDel; -pciDeviceListFind; -pciDeviceListFindIndex; -pciDeviceListFree; -pciDeviceListGet; -pciDeviceListNew; -pciDeviceListSteal; -pciDeviceListStealIndex; -pciDeviceNetName; -pciDeviceReAttachInit; -pciDeviceSetManaged; -pciDeviceSetRemoveSlot; -pciDeviceSetReprobe; -pciDeviceSetUnbindFromStub; -pciDeviceSetUsedBy; -pciFreeDevice; -pciGetDevice; -pciGetPhysicalFunction; -pciGetVirtualFunctionIndex; -pciGetVirtualFunctions; -pciReAttachDevice; -pciResetDevice; -pciWaitForDeviceCleanup; +virPCIDeviceAddressGetSysfsFile; +virPCIDeviceDettach; +virPCIDeviceFileIterate; +virPCIDeviceFree; +virPCIDeviceGetManaged; +virPCIDeviceGetName; +virPCIDeviceGetRemoveSlot; +virPCIDeviceGetReprobe; +virPCIDeviceGetUnbindFromStub; +virPCIDeviceGetUsedBy; +virPCIDeviceIsAssignable; +virPCIDeviceListAdd; +virPCIDeviceListCount; +virPCIDeviceListDel; +virPCIDeviceListFind; +virPCIDeviceListFindIndex; +virPCIDeviceListFree; +virPCIDeviceListGet; +virPCIDeviceListNew; +virPCIDeviceListSteal; +virPCIDeviceListStealIndex; +virPCIDeviceNew; +virPCIDeviceReAttach; +virPCIDeviceReAttachInit; +virPCIDeviceReset; +virPCIDeviceSetManaged; +virPCIDeviceSetRemoveSlot; +virPCIDeviceSetReprobe; +virPCIDeviceSetUnbindFromStub; +virPCIDeviceSetUsedBy; +virPCIDeviceWaitForCleanup; +virPCIGetNetName; +virPCIGetPhysicalFunction; +virPCIGetVirtualFunctionIndex; +virPCIGetVirtualFunctionInfo; +virPCIGetVirtualFunctions; +virPCIIsVirtualFunction; # secret_conf.h diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 21255f0..dadcc6c 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -3622,7 +3622,7 @@ static int networkCreateInterfacePool(virNetworkDefPtr netdef) { unsigned int num_virt_fns = 0; char **vfname = NULL; - struct pci_config_address **virt_fns; + virPCIDeviceAddressPtr *virt_fns; int ret = -1, ii = 0; if ((virNetDevGetVirtualFunctions(netdef->forward.pfs->dev, diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index a9b30b2..566e7ab 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -481,10 +481,10 @@ static int udevProcessPCI(struct udev_device *device, goto out; } - if (!pciGetPhysicalFunction(syspath, &data->pci_dev.physical_function)) + if (!virPCIGetPhysicalFunction(syspath, &data->pci_dev.physical_function)) data->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION; - if (!pciGetVirtualFunctions(syspath, &data->pci_dev.virtual_functions, + if (!virPCIGetVirtualFunctions(syspath, &data->pci_dev.virtual_functions, &data->pci_dev.num_virtual_functions) || data->pci_dev.num_virtual_functions > 0) data->pci_dev.flags |= VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION; diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index ae54228..05641da 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -33,7 +33,6 @@ #include <sys/time.h> #include "qemu_agent.h" -#include "qemu_command.h" #include "viralloc.h" #include "virlog.h" #include "virerror.h" diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 2b27a3e..be45cf0 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -181,11 +181,10 @@ struct _virQEMUDriver { virSecurityManagerPtr securityManager; - pciDeviceList *activePciHostdevs; + virPCIDeviceListPtr activePciHostdevs; + virPCIDeviceListPtr inactivePciHostdevs; usbDeviceList *activeUsbHostdevs; - pciDeviceList *inactivePciHostdevs; - virHashTablePtr sharedDisks; virPortAllocatorPtr remotePorts; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 2d0cd77..ce6df5c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -774,13 +774,13 @@ qemuStartup(bool privileged, if (qemuSecurityInit(qemu_driver) < 0) goto error; - if ((qemu_driver->activePciHostdevs = pciDeviceListNew()) == NULL) + if ((qemu_driver->activePciHostdevs = virPCIDeviceListNew()) == NULL) goto error; if ((qemu_driver->activeUsbHostdevs = usbDeviceListNew()) == NULL) goto error; - if ((qemu_driver->inactivePciHostdevs = pciDeviceListNew()) == NULL) + if ((qemu_driver->inactivePciHostdevs = virPCIDeviceListNew()) == NULL) goto error; if (!(qemu_driver->sharedDisks = virHashCreate(30, NULL))) @@ -1047,8 +1047,8 @@ qemuShutdown(void) { qemuDriverLock(qemu_driver); virNWFilterUnRegisterCallbackDriver(&qemuCallbackDriver); - pciDeviceListFree(qemu_driver->activePciHostdevs); - pciDeviceListFree(qemu_driver->inactivePciHostdevs); + virPCIDeviceListFree(qemu_driver->activePciHostdevs); + virPCIDeviceListFree(qemu_driver->inactivePciHostdevs); usbDeviceListFree(qemu_driver->activeUsbHostdevs); virHashFree(qemu_driver->sharedDisks); virCapabilitiesFree(qemu_driver->caps); @@ -10017,7 +10017,7 @@ static int qemuNodeDeviceDettach(virNodeDevicePtr dev) { virQEMUDriverPtr driver = dev->conn->privateData; - pciDevice *pci; + virPCIDevicePtr pci; unsigned domain, bus, slot, function; int ret = -1; bool in_inactive_list = false; @@ -10025,22 +10025,22 @@ qemuNodeDeviceDettach(virNodeDevicePtr dev) if (qemuNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; qemuDriverLock(driver); - in_inactive_list = pciDeviceListFind(driver->inactivePciHostdevs, pci); + in_inactive_list = virPCIDeviceListFind(driver->inactivePciHostdevs, pci); - if (pciDettachDevice(pci, driver->activePciHostdevs, - driver->inactivePciHostdevs, "pci-stub") < 0) + if (virPCIDeviceDettach(pci, driver->activePciHostdevs, + driver->inactivePciHostdevs, "pci-stub") < 0) goto out; ret = 0; out: qemuDriverUnlock(driver); if (in_inactive_list) - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } @@ -10048,43 +10048,43 @@ static int qemuNodeDeviceReAttach(virNodeDevicePtr dev) { virQEMUDriverPtr driver = dev->conn->privateData; - pciDevice *pci; - pciDevice *other; + virPCIDevicePtr pci; + virPCIDevicePtr other; unsigned domain, bus, slot, function; int ret = -1; if (qemuNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; - other = pciDeviceListFind(driver->activePciHostdevs, pci); + other = virPCIDeviceListFind(driver->activePciHostdevs, pci); if (other) { - const char *other_name = pciDeviceGetUsedBy(other); + const char *other_name = virPCIDeviceGetUsedBy(other); if (other_name) virReportError(VIR_ERR_OPERATION_INVALID, _("PCI device %s is still in use by domain %s"), - pciDeviceGetName(pci), other_name); + virPCIDeviceGetName(pci), other_name); else virReportError(VIR_ERR_OPERATION_INVALID, _("PCI device %s is still in use"), - pciDeviceGetName(pci)); + virPCIDeviceGetName(pci)); } - pciDeviceReAttachInit(pci); + virPCIDeviceReAttachInit(pci); qemuDriverLock(driver); - if (pciReAttachDevice(pci, driver->activePciHostdevs, - driver->inactivePciHostdevs, "pci-stub") < 0) + if (virPCIDeviceReAttach(pci, driver->activePciHostdevs, + driver->inactivePciHostdevs, "pci-stub") < 0) goto out; ret = 0; out: qemuDriverUnlock(driver); - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } @@ -10092,27 +10092,27 @@ static int qemuNodeDeviceReset(virNodeDevicePtr dev) { virQEMUDriverPtr driver = dev->conn->privateData; - pciDevice *pci; + virPCIDevicePtr pci; unsigned domain, bus, slot, function; int ret = -1; if (qemuNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; qemuDriverLock(driver); - if (pciResetDevice(pci, driver->activePciHostdevs, - driver->inactivePciHostdevs) < 0) + if (virPCIDeviceReset(pci, driver->activePciHostdevs, + driver->inactivePciHostdevs) < 0) goto out; ret = 0; out: qemuDriverUnlock(driver); - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index 1b8a9cd..b5d7c5e 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -33,84 +33,84 @@ #define VIR_FROM_THIS VIR_FROM_QEMU -static pciDeviceList * +static virPCIDeviceListPtr qemuGetPciHostDeviceList(virDomainHostdevDefPtr *hostdevs, int nhostdevs) { - pciDeviceList *list; + virPCIDeviceListPtr list; int i; - if (!(list = pciDeviceListNew())) + if (!(list = virPCIDeviceListNew())) return NULL; for (i = 0 ; i < nhostdevs ; i++) { virDomainHostdevDefPtr hostdev = hostdevs[i]; - pciDevice *dev; + virPCIDevicePtr dev; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) continue; if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) continue; - dev = pciGetDevice(hostdev->source.subsys.u.pci.domain, - hostdev->source.subsys.u.pci.bus, - hostdev->source.subsys.u.pci.slot, - hostdev->source.subsys.u.pci.function); + dev = virPCIDeviceNew(hostdev->source.subsys.u.pci.domain, + hostdev->source.subsys.u.pci.bus, + hostdev->source.subsys.u.pci.slot, + hostdev->source.subsys.u.pci.function); if (!dev) { - pciDeviceListFree(list); + virPCIDeviceListFree(list); return NULL; } - if (pciDeviceListAdd(list, dev) < 0) { - pciFreeDevice(dev); - pciDeviceListFree(list); + if (virPCIDeviceListAdd(list, dev) < 0) { + virPCIDeviceFree(dev); + virPCIDeviceListFree(list); return NULL; } - pciDeviceSetManaged(dev, hostdev->managed); + virPCIDeviceSetManaged(dev, hostdev->managed); } return list; } -static pciDeviceList * +static virPCIDeviceListPtr qemuGetActivePciHostDeviceList(virQEMUDriverPtr driver, virDomainHostdevDefPtr *hostdevs, int nhostdevs) { - pciDeviceList *list; + virPCIDeviceListPtr list; int i; - if (!(list = pciDeviceListNew())) + if (!(list = virPCIDeviceListNew())) return NULL; for (i = 0 ; i < nhostdevs ; i++) { virDomainHostdevDefPtr hostdev = hostdevs[i]; - pciDevice *dev; - pciDevice *activeDev; + virPCIDevicePtr dev; + virPCIDevicePtr activeDev; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) continue; if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) continue; - dev = pciGetDevice(hostdev->source.subsys.u.pci.domain, - hostdev->source.subsys.u.pci.bus, - hostdev->source.subsys.u.pci.slot, - hostdev->source.subsys.u.pci.function); + dev = virPCIDeviceNew(hostdev->source.subsys.u.pci.domain, + hostdev->source.subsys.u.pci.bus, + hostdev->source.subsys.u.pci.slot, + hostdev->source.subsys.u.pci.function); if (!dev) { - pciDeviceListFree(list); + virPCIDeviceListFree(list); return NULL; } - if ((activeDev = pciDeviceListFind(driver->activePciHostdevs, dev))) { - if (pciDeviceListAdd(list, activeDev) < 0) { - pciFreeDevice(dev); - pciDeviceListFree(list); + if ((activeDev = virPCIDeviceListFind(driver->activePciHostdevs, dev))) { + if (virPCIDeviceListAdd(list, activeDev) < 0) { + virPCIDeviceFree(dev); + virPCIDeviceListFree(list); return NULL; } } - pciFreeDevice(dev); + virPCIDeviceFree(dev); } return list; @@ -126,7 +126,7 @@ int qemuUpdateActivePciHostdevs(virQEMUDriverPtr driver, return 0; for (i = 0; i < def->nhostdevs; i++) { - pciDevice *dev = NULL; + virPCIDevicePtr dev = NULL; hostdev = def->hostdevs[i]; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) @@ -134,24 +134,24 @@ int qemuUpdateActivePciHostdevs(virQEMUDriverPtr driver, if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) continue; - dev = pciGetDevice(hostdev->source.subsys.u.pci.domain, - hostdev->source.subsys.u.pci.bus, - hostdev->source.subsys.u.pci.slot, - hostdev->source.subsys.u.pci.function); + dev = virPCIDeviceNew(hostdev->source.subsys.u.pci.domain, + hostdev->source.subsys.u.pci.bus, + hostdev->source.subsys.u.pci.slot, + hostdev->source.subsys.u.pci.function); if (!dev) return -1; - pciDeviceSetManaged(dev, hostdev->managed); - pciDeviceSetUsedBy(dev, def->name); + virPCIDeviceSetManaged(dev, hostdev->managed); + virPCIDeviceSetUsedBy(dev, def->name); /* Setup the original states for the PCI device */ - pciDeviceSetUnbindFromStub(dev, hostdev->origstates.states.pci.unbind_from_stub); - pciDeviceSetRemoveSlot(dev, hostdev->origstates.states.pci.remove_slot); - pciDeviceSetReprobe(dev, hostdev->origstates.states.pci.reprobe); + virPCIDeviceSetUnbindFromStub(dev, hostdev->origstates.states.pci.unbind_from_stub); + virPCIDeviceSetRemoveSlot(dev, hostdev->origstates.states.pci.remove_slot); + virPCIDeviceSetReprobe(dev, hostdev->origstates.states.pci.reprobe); - if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0) { - pciFreeDevice(dev); + if (virPCIDeviceListAdd(driver->activePciHostdevs, dev) < 0) { + virPCIDeviceFree(dev); return -1; } } @@ -203,14 +203,14 @@ qemuUpdateActiveUsbHostdevs(virQEMUDriverPtr driver, static int qemuDomainHostdevPciSysfsPath(virDomainHostdevDefPtr hostdev, char **sysfs_path) { - struct pci_config_address config_address; + virPCIDeviceAddress config_address; config_address.domain = hostdev->source.subsys.u.pci.domain; config_address.bus = hostdev->source.subsys.u.pci.bus; config_address.slot = hostdev->source.subsys.u.pci.slot; config_address.function = hostdev->source.subsys.u.pci.function; - return pciConfigAddressToSysfsFile(&config_address, sysfs_path); + return virPCIDeviceAddressGetSysfsFile(&config_address, sysfs_path); } int @@ -222,7 +222,7 @@ qemuDomainHostdevIsVirtualFunction(virDomainHostdevDefPtr hostdev) if (qemuDomainHostdevPciSysfsPath(hostdev, &sysfs_path) < 0) return ret; - ret = pciDeviceIsVirtualFunction(sysfs_path); + ret = virPCIIsVirtualFunction(sysfs_path); VIR_FREE(sysfs_path); @@ -239,12 +239,12 @@ qemuDomainHostdevNetDevice(virDomainHostdevDefPtr hostdev, char **linkdev, if (qemuDomainHostdevPciSysfsPath(hostdev, &sysfs_path) < 0) return ret; - if (pciDeviceIsVirtualFunction(sysfs_path) == 1) { - if (pciDeviceGetVirtualFunctionInfo(sysfs_path, linkdev, - vf) < 0) + if (virPCIIsVirtualFunction(sysfs_path) == 1) { + if (virPCIGetVirtualFunctionInfo(sysfs_path, linkdev, + vf) < 0) goto cleanup; } else { - if (pciDeviceNetName(sysfs_path, linkdev) < 0) + if (virPCIGetNetName(sysfs_path, linkdev) < 0) goto cleanup; *vf = -1; } @@ -406,7 +406,7 @@ int qemuPrepareHostdevPCIDevices(virQEMUDriverPtr driver, virDomainHostdevDefPtr *hostdevs, int nhostdevs) { - pciDeviceList *pcidevs; + virPCIDeviceListPtr pcidevs; int last_processed_hostdev_vf = -1; int i; int ret = -1; @@ -427,48 +427,48 @@ int qemuPrepareHostdevPCIDevices(virQEMUDriverPtr driver, * to pci-stub.ko */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - pciDevice *other; + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + virPCIDevicePtr other; - if (!pciDeviceIsAssignable(dev, !cfg->relaxedACS)) { + if (!virPCIDeviceIsAssignable(dev, !cfg->relaxedACS)) { virReportError(VIR_ERR_OPERATION_INVALID, _("PCI device %s is not assignable"), - pciDeviceGetName(dev)); + virPCIDeviceGetName(dev)); goto cleanup; } /* The device is in use by other active domain if * the dev is in list driver->activePciHostdevs. */ - if ((other = pciDeviceListFind(driver->activePciHostdevs, dev))) { - const char *other_name = pciDeviceGetUsedBy(other); + if ((other = virPCIDeviceListFind(driver->activePciHostdevs, dev))) { + const char *other_name = virPCIDeviceGetUsedBy(other); if (other_name) virReportError(VIR_ERR_OPERATION_INVALID, _("PCI device %s is in use by domain %s"), - pciDeviceGetName(dev), other_name); + virPCIDeviceGetName(dev), other_name); else virReportError(VIR_ERR_OPERATION_INVALID, _("PCI device %s is already in use"), - pciDeviceGetName(dev)); + virPCIDeviceGetName(dev)); goto cleanup; } } /* Loop 2: detach managed devices */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - if (pciDeviceGetManaged(dev) && - pciDettachDevice(dev, driver->activePciHostdevs, NULL, "pci-stub") < 0) + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + if (virPCIDeviceGetManaged(dev) && + virPCIDeviceDettach(dev, driver->activePciHostdevs, NULL, "pci-stub") < 0) goto reattachdevs; } /* Loop 3: Now that all the PCI hostdevs have been detached, we * can safely reset them */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - if (pciResetDevice(dev, driver->activePciHostdevs, - driver->inactivePciHostdevs) < 0) + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + if (virPCIDeviceReset(dev, driver->activePciHostdevs, + driver->inactivePciHostdevs) < 0) goto reattachdevs; } @@ -491,35 +491,35 @@ int qemuPrepareHostdevPCIDevices(virQEMUDriverPtr driver, } /* Loop 5: Now mark all the devices as active */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - if (pciDeviceListAdd(driver->activePciHostdevs, dev) < 0) + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + if (virPCIDeviceListAdd(driver->activePciHostdevs, dev) < 0) goto inactivedevs; } /* Loop 6: Now remove the devices from inactive list. */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - pciDeviceListDel(driver->inactivePciHostdevs, dev); + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + virPCIDeviceListDel(driver->inactivePciHostdevs, dev); } /* Loop 7: Now set the used_by_domain of the device in * driver->activePciHostdevs as domain name. */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev, *activeDev; + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev, activeDev; - dev = pciDeviceListGet(pcidevs, i); - activeDev = pciDeviceListFind(driver->activePciHostdevs, dev); + dev = virPCIDeviceListGet(pcidevs, i); + activeDev = virPCIDeviceListFind(driver->activePciHostdevs, dev); if (activeDev) - pciDeviceSetUsedBy(activeDev, name); + virPCIDeviceSetUsedBy(activeDev, name); } /* Loop 8: Now set the original states for hostdev def */ for (i = 0; i < nhostdevs; i++) { - pciDevice *dev; - pciDevice *pcidev; + virPCIDevicePtr dev; + virPCIDevicePtr pcidev; virDomainHostdevDefPtr hostdev = hostdevs[i]; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) @@ -527,41 +527,41 @@ int qemuPrepareHostdevPCIDevices(virQEMUDriverPtr driver, if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) continue; - dev = pciGetDevice(hostdev->source.subsys.u.pci.domain, - hostdev->source.subsys.u.pci.bus, - hostdev->source.subsys.u.pci.slot, - hostdev->source.subsys.u.pci.function); + dev = virPCIDeviceNew(hostdev->source.subsys.u.pci.domain, + hostdev->source.subsys.u.pci.bus, + hostdev->source.subsys.u.pci.slot, + hostdev->source.subsys.u.pci.function); /* original states "unbind_from_stub", "remove_slot", * "reprobe" were already set by pciDettachDevice in * loop 2. */ - if ((pcidev = pciDeviceListFind(pcidevs, dev))) { + if ((pcidev = virPCIDeviceListFind(pcidevs, dev))) { hostdev->origstates.states.pci.unbind_from_stub = - pciDeviceGetUnbindFromStub(pcidev); + virPCIDeviceGetUnbindFromStub(pcidev); hostdev->origstates.states.pci.remove_slot = - pciDeviceGetRemoveSlot(pcidev); + virPCIDeviceGetRemoveSlot(pcidev); hostdev->origstates.states.pci.reprobe = - pciDeviceGetReprobe(pcidev); + virPCIDeviceGetReprobe(pcidev); } - pciFreeDevice(dev); + virPCIDeviceFree(dev); } /* Loop 9: Now steal all the devices from pcidevs */ - while (pciDeviceListCount(pcidevs) > 0) - pciDeviceListStealIndex(pcidevs, 0); + while (virPCIDeviceListCount(pcidevs) > 0) + virPCIDeviceListStealIndex(pcidevs, 0); ret = 0; goto cleanup; inactivedevs: /* Only steal all the devices from driver->activePciHostdevs. We will - * free them in pciDeviceListFree(). + * free them in virPCIDeviceListFree(). */ - while (pciDeviceListCount(pcidevs) > 0) { - pciDevice *dev = pciDeviceListGet(pcidevs, 0); - pciDeviceListSteal(driver->activePciHostdevs, dev); + while (virPCIDeviceListCount(pcidevs) > 0) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, 0); + virPCIDeviceListSteal(driver->activePciHostdevs, dev); } resetvfnetconfig: @@ -574,13 +574,13 @@ resetvfnetconfig: } reattachdevs: - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - pciReAttachDevice(dev, driver->activePciHostdevs, NULL, "pci-stub"); + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + virPCIDeviceReAttach(dev, driver->activePciHostdevs, NULL, "pci-stub"); } cleanup: - pciDeviceListFree(pcidevs); + virPCIDeviceListFree(pcidevs); virObjectUnref(cfg); return ret; } @@ -813,33 +813,33 @@ int qemuPrepareHostDevices(virQEMUDriverPtr driver, } -void qemuReattachPciDevice(pciDevice *dev, virQEMUDriverPtr driver) +void qemuReattachPciDevice(virPCIDevicePtr dev, virQEMUDriverPtr driver) { int retries = 100; /* If the device is not managed and was attached to guest * successfully, it must have been inactive. */ - if (!pciDeviceGetManaged(dev)) { - if (pciDeviceListAdd(driver->inactivePciHostdevs, dev) < 0) - pciFreeDevice(dev); + if (!virPCIDeviceGetManaged(dev)) { + if (virPCIDeviceListAdd(driver->inactivePciHostdevs, dev) < 0) + virPCIDeviceFree(dev); return; } - while (pciWaitForDeviceCleanup(dev, "kvm_assigned_device") + while (virPCIDeviceWaitForCleanup(dev, "kvm_assigned_device") && retries) { usleep(100*1000); retries--; } - if (pciReAttachDevice(dev, driver->activePciHostdevs, - driver->inactivePciHostdevs, "pci-stub") < 0) { + if (virPCIDeviceReAttach(dev, driver->activePciHostdevs, + driver->inactivePciHostdevs, "pci-stub") < 0) { virErrorPtr err = virGetLastError(); VIR_ERROR(_("Failed to re-attach PCI device: %s"), err ? err->message : _("unknown error")); virResetError(err); } - pciFreeDevice(dev); + virPCIDeviceFree(dev); } @@ -848,7 +848,7 @@ void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, virDomainHostdevDefPtr *hostdevs, int nhostdevs) { - pciDeviceList *pcidevs; + virPCIDeviceListPtr pcidevs; int i; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); @@ -856,7 +856,7 @@ void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, hostdevs, nhostdevs))) { virErrorPtr err = virGetLastError(); - VIR_ERROR(_("Failed to allocate pciDeviceList: %s"), + VIR_ERROR(_("Failed to allocate virPCIDeviceList: %s"), err ? err->message : _("unknown error")); virResetError(err); goto cleanup; @@ -866,22 +866,22 @@ void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, * them and reset all the devices before re-attach. * Attach mac and port profile parameters to devices */ - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - pciDevice *activeDev = NULL; + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + virPCIDevicePtr activeDev = NULL; /* Never delete the dev from list driver->activePciHostdevs * if it's used by other domain. */ - activeDev = pciDeviceListFind(driver->activePciHostdevs, dev); + activeDev = virPCIDeviceListFind(driver->activePciHostdevs, dev); if (activeDev && - STRNEQ_NULLABLE(name, pciDeviceGetUsedBy(activeDev))) { - pciDeviceListSteal(pcidevs, dev); + STRNEQ_NULLABLE(name, virPCIDeviceGetUsedBy(activeDev))) { + virPCIDeviceListSteal(pcidevs, dev); continue; } - /* pciDeviceListFree() will take care of freeing the dev. */ - pciDeviceListSteal(driver->activePciHostdevs, dev); + /* virPCIDeviceListFree() will take care of freeing the dev. */ + virPCIDeviceListSteal(driver->activePciHostdevs, dev); } /* @@ -900,10 +900,10 @@ void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, } } - for (i = 0; i < pciDeviceListCount(pcidevs); i++) { - pciDevice *dev = pciDeviceListGet(pcidevs, i); - if (pciResetDevice(dev, driver->activePciHostdevs, - driver->inactivePciHostdevs) < 0) { + for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) { + virPCIDevicePtr dev = virPCIDeviceListGet(pcidevs, i); + if (virPCIDeviceReset(dev, driver->activePciHostdevs, + driver->inactivePciHostdevs) < 0) { virErrorPtr err = virGetLastError(); VIR_ERROR(_("Failed to reset PCI device: %s"), err ? err->message : _("unknown error")); @@ -911,12 +911,12 @@ void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, } } - while (pciDeviceListCount(pcidevs) > 0) { - pciDevice *dev = pciDeviceListStealIndex(pcidevs, 0); + while (virPCIDeviceListCount(pcidevs) > 0) { + virPCIDevicePtr dev = virPCIDeviceListStealIndex(pcidevs, 0); qemuReattachPciDevice(dev, driver); } - pciDeviceListFree(pcidevs); + virPCIDeviceListFree(pcidevs); cleanup: virObjectUnref(cfg); } diff --git a/src/qemu/qemu_hostdev.h b/src/qemu/qemu_hostdev.h index 9ef2385..8bfd36f 100644 --- a/src/qemu/qemu_hostdev.h +++ b/src/qemu/qemu_hostdev.h @@ -45,7 +45,7 @@ int qemuPrepareHostdevUSBDevices(virQEMUDriverPtr driver, int qemuPrepareHostDevices(virQEMUDriverPtr driver, virDomainDefPtr def, bool coldBoot); -void qemuReattachPciDevice(pciDevice *dev, virQEMUDriverPtr driver); +void qemuReattachPciDevice(virPCIDevicePtr dev, virQEMUDriverPtr driver); void qemuDomainReAttachHostdevDevices(virQEMUDriverPtr driver, const char *name, virDomainHostdevDefPtr *hostdevs, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 6c328d6..d942de5 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2331,8 +2331,8 @@ qemuDomainDetachHostPciDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virDomainHostdevSubsysPtr subsys = &detach->source.subsys; int ret = -1, rv; - pciDevice *pci; - pciDevice *activePci; + virPCIDevicePtr pci; + virPCIDevicePtr activePci; virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); if (qemuIsMultiFunctionDevice(vm->def, detach->info)) { @@ -2368,20 +2368,20 @@ qemuDomainDetachHostPciDevice(virQEMUDriverPtr driver, if (detach->parent.data.net) qemuDomainHostdevNetConfigRestore(detach, cfg->stateDir); - pci = pciGetDevice(subsys->u.pci.domain, subsys->u.pci.bus, - subsys->u.pci.slot, subsys->u.pci.function); + pci = virPCIDeviceNew(subsys->u.pci.domain, subsys->u.pci.bus, + subsys->u.pci.slot, subsys->u.pci.function); if (pci) { - activePci = pciDeviceListSteal(driver->activePciHostdevs, pci); + activePci = virPCIDeviceListSteal(driver->activePciHostdevs, pci); if (activePci && - pciResetDevice(activePci, driver->activePciHostdevs, - driver->inactivePciHostdevs) == 0) { + virPCIDeviceReset(activePci, driver->activePciHostdevs, + driver->inactivePciHostdevs) == 0) { qemuReattachPciDevice(activePci, driver); ret = 0; } else { /* reset of the device failed, treat it as if it was returned */ - pciFreeDevice(activePci); + virPCIDeviceFree(activePci); } - pciFreeDevice(pci); + virPCIDeviceFree(pci); } if (qemuCapsGet(priv->caps, QEMU_CAPS_DEVICE) && diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c index c23ba87..3c87a0f 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -328,8 +328,8 @@ AppArmorSetSecurityUSBLabel(usbDevice *dev ATTRIBUTE_UNUSED, } static int -AppArmorSetSecurityPCILabel(pciDevice *dev ATTRIBUTE_UNUSED, - const char *file, void *opaque) +AppArmorSetSecurityPCILabel(virPCIDevicePtr dev ATTRIBUTE_UNUSED, + const char *file, void *opaque) { struct SDPDOP *ptr = opaque; virDomainDefPtr def = ptr->def; @@ -783,16 +783,17 @@ AppArmorSetSecurityHostdevLabel(virSecurityManagerPtr mgr, } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice(dev->source.subsys.u.pci.domain, - dev->source.subsys.u.pci.bus, - dev->source.subsys.u.pci.slot, - dev->source.subsys.u.pci.function); + virPCIDevicePtr pci = + virPCIDeviceNew(dev->source.subsys.u.pci.domain, + dev->source.subsys.u.pci.bus, + dev->source.subsys.u.pci.slot, + dev->source.subsys.u.pci.function); if (!pci) goto done; - ret = pciDeviceFileIterate(pci, AppArmorSetSecurityPCILabel, ptr); - pciFreeDevice(pci); + ret = virPCIDeviceFileIterate(pci, AppArmorSetSecurityPCILabel, ptr); + virPCIDeviceFree(pci); break; } diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 93a0301..b52bfa1 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -434,7 +434,7 @@ virSecurityDACRestoreSecurityImageLabel(virSecurityManagerPtr mgr, static int -virSecurityDACSetSecurityPCILabel(pciDevice *dev ATTRIBUTE_UNUSED, +virSecurityDACSetSecurityPCILabel(virPCIDevicePtr dev ATTRIBUTE_UNUSED, const char *file, void *opaque) { @@ -507,17 +507,18 @@ virSecurityDACSetSecurityHostdevLabel(virSecurityManagerPtr mgr, } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice(dev->source.subsys.u.pci.domain, - dev->source.subsys.u.pci.bus, - dev->source.subsys.u.pci.slot, - dev->source.subsys.u.pci.function); + virPCIDevicePtr pci = + virPCIDeviceNew(dev->source.subsys.u.pci.domain, + dev->source.subsys.u.pci.bus, + dev->source.subsys.u.pci.slot, + dev->source.subsys.u.pci.function); if (!pci) goto done; - ret = pciDeviceFileIterate(pci, virSecurityDACSetSecurityPCILabel, - params); - pciFreeDevice(pci); + ret = virPCIDeviceFileIterate(pci, virSecurityDACSetSecurityPCILabel, + params); + virPCIDeviceFree(pci); break; } @@ -533,7 +534,7 @@ done: static int -virSecurityDACRestoreSecurityPCILabel(pciDevice *dev ATTRIBUTE_UNUSED, +virSecurityDACRestoreSecurityPCILabel(virPCIDevicePtr dev ATTRIBUTE_UNUSED, const char *file, void *opaque ATTRIBUTE_UNUSED) { @@ -586,16 +587,17 @@ virSecurityDACRestoreSecurityHostdevLabel(virSecurityManagerPtr mgr, } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice(dev->source.subsys.u.pci.domain, - dev->source.subsys.u.pci.bus, - dev->source.subsys.u.pci.slot, - dev->source.subsys.u.pci.function); + virPCIDevicePtr pci = + virPCIDeviceNew(dev->source.subsys.u.pci.domain, + dev->source.subsys.u.pci.bus, + dev->source.subsys.u.pci.slot, + dev->source.subsys.u.pci.function); if (!pci) goto done; - ret = pciDeviceFileIterate(pci, virSecurityDACRestoreSecurityPCILabel, mgr); - pciFreeDevice(pci); + ret = virPCIDeviceFileIterate(pci, virSecurityDACRestoreSecurityPCILabel, mgr); + virPCIDeviceFree(pci); break; } diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index fa2ee57..0676543 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1159,7 +1159,7 @@ virSecuritySELinuxSetSecurityImageLabel(virSecurityManagerPtr mgr, static int -virSecuritySELinuxSetSecurityPCILabel(pciDevice *dev ATTRIBUTE_UNUSED, +virSecuritySELinuxSetSecurityPCILabel(virPCIDevicePtr dev ATTRIBUTE_UNUSED, const char *file, void *opaque) { virSecurityLabelDefPtr secdef; @@ -1213,16 +1213,17 @@ virSecuritySELinuxSetSecurityHostdevSubsysLabel(virDomainDefPtr def, } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice(dev->source.subsys.u.pci.domain, - dev->source.subsys.u.pci.bus, - dev->source.subsys.u.pci.slot, - dev->source.subsys.u.pci.function); + virPCIDevicePtr pci = + virPCIDeviceNew(dev->source.subsys.u.pci.domain, + dev->source.subsys.u.pci.bus, + dev->source.subsys.u.pci.slot, + dev->source.subsys.u.pci.function); if (!pci) goto done; - ret = pciDeviceFileIterate(pci, virSecuritySELinuxSetSecurityPCILabel, def); - pciFreeDevice(pci); + ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxSetSecurityPCILabel, def); + virPCIDeviceFree(pci); break; } @@ -1326,7 +1327,7 @@ virSecuritySELinuxSetSecurityHostdevLabel(virSecurityManagerPtr mgr ATTRIBUTE_UN static int -virSecuritySELinuxRestoreSecurityPCILabel(pciDevice *dev ATTRIBUTE_UNUSED, +virSecuritySELinuxRestoreSecurityPCILabel(virPCIDevicePtr dev ATTRIBUTE_UNUSED, const char *file, void *opaque) { @@ -1374,16 +1375,17 @@ virSecuritySELinuxRestoreSecurityHostdevSubsysLabel(virSecurityManagerPtr mgr, } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice(dev->source.subsys.u.pci.domain, - dev->source.subsys.u.pci.bus, - dev->source.subsys.u.pci.slot, - dev->source.subsys.u.pci.function); + virPCIDevicePtr pci = + virPCIDeviceNew(dev->source.subsys.u.pci.domain, + dev->source.subsys.u.pci.bus, + dev->source.subsys.u.pci.slot, + dev->source.subsys.u.pci.function); if (!pci) goto done; - ret = pciDeviceFileIterate(pci, virSecuritySELinuxRestoreSecurityPCILabel, mgr); - pciFreeDevice(pci); + ret = virPCIDeviceFileIterate(pci, virSecuritySELinuxRestoreSecurityPCILabel, mgr); + virPCIDeviceFree(pci); break; } diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 0aa978e..227d0f1 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -853,8 +853,8 @@ file_iterate_hostdev_cb(usbDevice *dev ATTRIBUTE_UNUSED, } static int -file_iterate_pci_cb(pciDevice *dev ATTRIBUTE_UNUSED, - const char *file, void *opaque) +file_iterate_pci_cb(virPCIDevicePtr dev ATTRIBUTE_UNUSED, + const char *file, void *opaque) { virBufferPtr buf = opaque; return vah_add_file(buf, file, "rw"); @@ -1022,7 +1022,7 @@ get_files(vahControl * ctl) } case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: { - pciDevice *pci = pciGetDevice( + virPCIDevicePtr pci = virPCIDeviceNew( dev->source.subsys.u.pci.domain, dev->source.subsys.u.pci.bus, dev->source.subsys.u.pci.slot, @@ -1031,8 +1031,8 @@ get_files(vahControl * ctl) if (pci == NULL) continue; - rc = pciDeviceFileIterate(pci, file_iterate_pci_cb, &buf); - pciFreeDevice(pci); + rc = virPCIDeviceFileIterate(pci, file_iterate_pci_cb, &buf); + virPCIDeviceFree(pci); break; } diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 295884f..296871c 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -980,7 +980,7 @@ virNetDevSysfsDeviceFile(char **pf_sysfs_device_link, const char *ifname, int virNetDevGetVirtualFunctions(const char *pfname, char ***vfname, - struct pci_config_address ***virt_fns, + virPCIDeviceAddressPtr **virt_fns, unsigned int *n_vfname) { int ret = -1, i; @@ -991,8 +991,8 @@ virNetDevGetVirtualFunctions(const char *pfname, if (virNetDevSysfsFile(&pf_sysfs_device_link, pfname, "device") < 0) return ret; - if (pciGetVirtualFunctions(pf_sysfs_device_link, virt_fns, - n_vfname) < 0) + if (virPCIGetVirtualFunctions(pf_sysfs_device_link, virt_fns, + n_vfname) < 0) goto cleanup; if (VIR_ALLOC_N(*vfname, *n_vfname) < 0) { @@ -1002,22 +1002,22 @@ virNetDevGetVirtualFunctions(const char *pfname, for (i = 0; i < *n_vfname; i++) { - if (pciGetDeviceAddrString((*virt_fns)[i]->domain, - (*virt_fns)[i]->bus, - (*virt_fns)[i]->slot, - (*virt_fns)[i]->function, - &pciConfigAddr) < 0) { + if (virPCIGetAddrString((*virt_fns)[i]->domain, + (*virt_fns)[i]->bus, + (*virt_fns)[i]->slot, + (*virt_fns)[i]->function, + &pciConfigAddr) < 0) { virReportSystemError(ENOSYS, "%s", _("Failed to get PCI Config Address String")); goto cleanup; } - if (pciSysfsFile(pciConfigAddr, &pci_sysfs_device_link) < 0) { + if (virPCIGetSysfsFile(pciConfigAddr, &pci_sysfs_device_link) < 0) { virReportSystemError(ENOSYS, "%s", _("Failed to get PCI SYSFS file")); goto cleanup; } - if (pciDeviceNetName(pci_sysfs_device_link, &((*vfname)[i])) < 0) { + if (virPCIGetNetName(pci_sysfs_device_link, &((*vfname)[i])) < 0) { VIR_INFO("VF does not have an interface name"); } } @@ -1053,7 +1053,7 @@ virNetDevIsVirtualFunction(const char *ifname) if (virNetDevSysfsFile(&if_sysfs_device_link, ifname, "device") < 0) return ret; - ret = pciDeviceIsVirtualFunction(if_sysfs_device_link); + ret = virPCIIsVirtualFunction(if_sysfs_device_link); VIR_FREE(if_sysfs_device_link); @@ -1086,9 +1086,9 @@ virNetDevGetVirtualFunctionIndex(const char *pfname, const char *vfname, return ret; } - ret = pciGetVirtualFunctionIndex(pf_sysfs_device_link, - vf_sysfs_device_link, - vf_index); + ret = virPCIGetVirtualFunctionIndex(pf_sysfs_device_link, + vf_sysfs_device_link, + vf_index); VIR_FREE(pf_sysfs_device_link); VIR_FREE(vf_sysfs_device_link); @@ -1115,7 +1115,7 @@ virNetDevGetPhysicalFunction(const char *ifname, char **pfname) if (virNetDevSysfsDeviceFile(&physfn_sysfs_path, ifname, "physfn") < 0) return ret; - ret = pciDeviceNetName(physfn_sysfs_path, pfname); + ret = virPCIGetNetName(physfn_sysfs_path, pfname); VIR_FREE(physfn_sysfs_path); @@ -1149,7 +1149,7 @@ virNetDevGetVirtualFunctionInfo(const char *vfname, char **pfname, if (virNetDevSysfsFile(&vf_sysfs_path, vfname, "device") < 0) goto cleanup; - ret = pciGetVirtualFunctionIndex(pf_sysfs_path, vf_sysfs_path, vf); + ret = virPCIGetVirtualFunctionIndex(pf_sysfs_path, vf_sysfs_path, vf); cleanup: if (ret < 0) @@ -1165,7 +1165,7 @@ cleanup: int virNetDevGetVirtualFunctions(const char *pfname ATTRIBUTE_UNUSED, char ***vfname ATTRIBUTE_UNUSED, - struct pci_config_address ***virt_fns ATTRIBUTE_UNUSED, + virPCIDeviceAddressPtr **virt_fns ATTRIBUTE_UNUSED, unsigned int *n_vfname ATTRIBUTE_UNUSED) { virReportSystemError(ENOSYS, "%s", diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index d588e89..06d0650 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -104,7 +104,7 @@ int virNetDevGetPhysicalFunction(const char *ifname, char **pfname) int virNetDevGetVirtualFunctions(const char *pfname, char ***vfname, - struct pci_config_address ***virt_fns, + virPCIDeviceAddressPtr **virt_fns, unsigned int *n_vfname) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4) ATTRIBUTE_RETURN_CHECK; diff --git a/src/util/virpci.c b/src/util/virpci.c index 0fb9923..695f372 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -50,7 +50,7 @@ #define SRIOV_NOT_FOUND 1 #define SRIOV_ERROR -1 -struct _pciDevice { +struct _virPCIDevice { unsigned domain; unsigned bus; unsigned slot; @@ -73,9 +73,9 @@ struct _pciDevice { unsigned reprobe : 1; }; -struct _pciDeviceList { +struct _virPCIDeviceList { unsigned count; - pciDevice **devs; + virPCIDevicePtr *devs; }; @@ -160,13 +160,13 @@ struct _pciDeviceList { #define PCI_EXT_CAP_ACS_RR 0x04 #define PCI_EXT_CAP_ACS_CR 0x08 #define PCI_EXT_CAP_ACS_UF 0x10 -#define PCI_EXT_CAP_ACS_ENABLED (PCI_EXT_CAP_ACS_SV | \ - PCI_EXT_CAP_ACS_RR | \ - PCI_EXT_CAP_ACS_CR | \ +#define PCI_EXT_CAP_ACS_ENABLED (PCI_EXT_CAP_ACS_SV | \ + PCI_EXT_CAP_ACS_RR | \ + PCI_EXT_CAP_ACS_CR | \ PCI_EXT_CAP_ACS_UF) static int -pciConfigOpen(pciDevice *dev, bool fatal) +virPCIDeviceConfigOpen(virPCIDevicePtr dev, bool fatal) { int fd; @@ -190,7 +190,7 @@ pciConfigOpen(pciDevice *dev, bool fatal) } static void -pciConfigClose(pciDevice *dev, int cfgfd) +virPCIDeviceConfigClose(virPCIDevicePtr dev, int cfgfd) { if (VIR_CLOSE(cfgfd) < 0) { char ebuf[1024]; @@ -201,11 +201,11 @@ pciConfigClose(pciDevice *dev, int cfgfd) static int -pciRead(pciDevice *dev, - int cfgfd, - unsigned pos, - uint8_t *buf, - unsigned buflen) +virPCIDeviceRead(virPCIDevicePtr dev, + int cfgfd, + unsigned pos, + uint8_t *buf, + unsigned buflen) { memset(buf, 0, buflen); @@ -220,35 +220,35 @@ pciRead(pciDevice *dev, } static uint8_t -pciRead8(pciDevice *dev, int cfgfd, unsigned pos) +virPCIDeviceRead8(virPCIDevicePtr dev, int cfgfd, unsigned pos) { uint8_t buf; - pciRead(dev, cfgfd, pos, &buf, sizeof(buf)); + virPCIDeviceRead(dev, cfgfd, pos, &buf, sizeof(buf)); return buf; } static uint16_t -pciRead16(pciDevice *dev, int cfgfd, unsigned pos) +virPCIDeviceRead16(virPCIDevicePtr dev, int cfgfd, unsigned pos) { uint8_t buf[2]; - pciRead(dev, cfgfd, pos, &buf[0], sizeof(buf)); + virPCIDeviceRead(dev, cfgfd, pos, &buf[0], sizeof(buf)); return (buf[0] << 0) | (buf[1] << 8); } static uint32_t -pciRead32(pciDevice *dev, int cfgfd, unsigned pos) +virPCIDeviceRead32(virPCIDevicePtr dev, int cfgfd, unsigned pos) { uint8_t buf[4]; - pciRead(dev, cfgfd, pos, &buf[0], sizeof(buf)); + virPCIDeviceRead(dev, cfgfd, pos, &buf[0], sizeof(buf)); return (buf[0] << 0) | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); } static int -pciWrite(pciDevice *dev, - int cfgfd, - unsigned pos, - uint8_t *buf, - unsigned buflen) +virPCIDeviceWrite(virPCIDevicePtr dev, + int cfgfd, + unsigned pos, + uint8_t *buf, + unsigned buflen) { if (lseek(cfgfd, pos, SEEK_SET) != pos || safewrite(cfgfd, buf, buflen) != buflen) { @@ -261,20 +261,20 @@ pciWrite(pciDevice *dev, } static void -pciWrite16(pciDevice *dev, int cfgfd, unsigned pos, uint16_t val) +virPCIDeviceWrite16(virPCIDevicePtr dev, int cfgfd, unsigned pos, uint16_t val) { uint8_t buf[2] = { (val >> 0), (val >> 8) }; - pciWrite(dev, cfgfd, pos, &buf[0], sizeof(buf)); + virPCIDeviceWrite(dev, cfgfd, pos, &buf[0], sizeof(buf)); } static void -pciWrite32(pciDevice *dev, int cfgfd, unsigned pos, uint32_t val) +virPCIDeviceWrite32(virPCIDevicePtr dev, int cfgfd, unsigned pos, uint32_t val) { uint8_t buf[4] = { (val >> 0), (val >> 8), (val >> 16), (val >> 24) }; - pciWrite(dev, cfgfd, pos, &buf[0], sizeof(buf)); + virPCIDeviceWrite(dev, cfgfd, pos, &buf[0], sizeof(buf)); } -typedef int (*pciIterPredicate)(pciDevice *, pciDevice *, void *); +typedef int (*virPCIDeviceIterPredicate)(virPCIDevicePtr , virPCIDevicePtr , void *); /* Iterate over available PCI devices calling @predicate * to compare each one to @dev. @@ -282,10 +282,10 @@ typedef int (*pciIterPredicate)(pciDevice *, pciDevice *, void *); * safe to reset if there is an error. */ static int -pciIterDevices(pciIterPredicate predicate, - pciDevice *dev, - pciDevice **matched, - void *data) +virPCIDeviceIterDevices(virPCIDeviceIterPredicate predicate, + virPCIDevicePtr dev, + virPCIDevicePtr *matched, + void *data) { DIR *dir; struct dirent *entry; @@ -304,7 +304,7 @@ pciIterDevices(pciIterPredicate predicate, while ((entry = readdir(dir))) { unsigned int domain, bus, slot, function; - pciDevice *check; + virPCIDevicePtr check; char *tmp; /* Ignore '.' and '..' */ @@ -324,7 +324,7 @@ pciIterDevices(pciIterPredicate predicate, continue; } - check = pciGetDevice(domain, bus, slot, function); + check = virPCIDeviceNew(domain, bus, slot, function); if (!check) { ret = -1; break; @@ -333,7 +333,7 @@ pciIterDevices(pciIterPredicate predicate, rc = predicate(dev, check, data); if (rc < 0) { /* the predicate returned an error, bail */ - pciFreeDevice(check); + virPCIDeviceFree(check); ret = -1; break; } @@ -344,23 +344,23 @@ pciIterDevices(pciIterPredicate predicate, break; } - pciFreeDevice(check); + virPCIDeviceFree(check); } closedir(dir); return ret; } static uint8_t -pciFindCapabilityOffset(pciDevice *dev, int cfgfd, unsigned capability) +virPCIDeviceFindCapabilityOffset(virPCIDevicePtr dev, int cfgfd, unsigned capability) { uint16_t status; uint8_t pos; - status = pciRead16(dev, cfgfd, PCI_STATUS); + status = virPCIDeviceRead16(dev, cfgfd, PCI_STATUS); if (!(status & PCI_STATUS_CAP_LIST)) return 0; - pos = pciRead8(dev, cfgfd, PCI_CAPABILITY_LIST); + pos = virPCIDeviceRead8(dev, cfgfd, PCI_CAPABILITY_LIST); /* Zero indicates last capability, capabilities can't * be in the config space header and 0xff is returned @@ -370,14 +370,14 @@ pciFindCapabilityOffset(pciDevice *dev, int cfgfd, unsigned capability) * capabilities here. */ while (pos >= PCI_CONF_HEADER_LEN && pos != 0xff) { - uint8_t capid = pciRead8(dev, cfgfd, pos); + uint8_t capid = virPCIDeviceRead8(dev, cfgfd, pos); if (capid == capability) { VIR_DEBUG("%s %s: found cap 0x%.2x at 0x%.2x", dev->id, dev->name, capability, pos); return pos; } - pos = pciRead8(dev, cfgfd, pos + 1); + pos = virPCIDeviceRead8(dev, cfgfd, pos + 1); } VIR_DEBUG("%s %s: failed to find cap 0x%.2x", dev->id, dev->name, capability); @@ -386,9 +386,9 @@ pciFindCapabilityOffset(pciDevice *dev, int cfgfd, unsigned capability) } static unsigned int -pciFindExtendedCapabilityOffset(pciDevice *dev, - int cfgfd, - unsigned capability) +virPCIDeviceFindExtendedCapabilityOffset(virPCIDevicePtr dev, + int cfgfd, + unsigned capability) { int ttl; unsigned int pos; @@ -399,7 +399,7 @@ pciFindExtendedCapabilityOffset(pciDevice *dev, pos = PCI_EXT_CAP_BASE; while (ttl > 0 && pos >= PCI_EXT_CAP_BASE) { - header = pciRead32(dev, cfgfd, pos); + header = virPCIDeviceRead32(dev, cfgfd, pos); if ((header & PCI_EXT_CAP_ID_MASK) == capability) return pos; @@ -415,7 +415,7 @@ pciFindExtendedCapabilityOffset(pciDevice *dev, * not have FLR, 1 if it does, and -1 on error */ static int -pciDetectFunctionLevelReset(pciDevice *dev, int cfgfd) +virPCIDeviceDetectFunctionLevelReset(virPCIDevicePtr dev, int cfgfd) { uint32_t caps; uint8_t pos; @@ -429,7 +429,7 @@ pciDetectFunctionLevelReset(pciDevice *dev, int cfgfd) * on SR-IOV NICs at the moment. */ if (dev->pcie_cap_pos) { - caps = pciRead32(dev, cfgfd, dev->pcie_cap_pos + PCI_EXP_DEVCAP); + caps = virPCIDeviceRead32(dev, cfgfd, dev->pcie_cap_pos + PCI_EXP_DEVCAP); if (caps & PCI_EXP_DEVCAP_FLR) { VIR_DEBUG("%s %s: detected PCIe FLR capability", dev->id, dev->name); return 1; @@ -440,9 +440,9 @@ pciDetectFunctionLevelReset(pciDevice *dev, int cfgfd) * the same thing, except for conventional PCI * devices. This is not common yet. */ - pos = pciFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_AF); + pos = virPCIDeviceFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_AF); if (pos) { - caps = pciRead16(dev, cfgfd, pos + PCI_AF_CAP); + caps = virPCIDeviceRead16(dev, cfgfd, pos + PCI_AF_CAP); if (caps & PCI_AF_CAP_FLR) { VIR_DEBUG("%s %s: detected PCI FLR capability", dev->id, dev->name); return 1; @@ -478,13 +478,13 @@ pciDetectFunctionLevelReset(pciDevice *dev, int cfgfd) * internal reset, not just a soft reset. */ static unsigned -pciDetectPowerManagementReset(pciDevice *dev, int cfgfd) +virPCIDeviceDetectPowerManagementReset(virPCIDevicePtr dev, int cfgfd) { if (dev->pci_pm_cap_pos) { uint32_t ctl; /* require the NO_SOFT_RESET bit is clear */ - ctl = pciRead32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL); + ctl = virPCIDeviceRead32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL); if (!(ctl & PCI_PM_CTRL_NO_SOFT_RESET)) { VIR_DEBUG("%s %s: detected PM reset capability", dev->id, dev->name); return 1; @@ -498,9 +498,9 @@ pciDetectPowerManagementReset(pciDevice *dev, int cfgfd) /* Any active devices on the same domain/bus ? */ static int -pciSharesBusWithActive(pciDevice *dev, pciDevice *check, void *data) +virPCIDeviceSharesBusWithActive(virPCIDevicePtr dev, virPCIDevicePtr check, void *data) { - pciDeviceList *inactiveDevs = data; + virPCIDeviceList *inactiveDevs = data; /* Different domain, different bus, or simply identical device */ if (dev->domain != check->domain || @@ -510,51 +510,51 @@ pciSharesBusWithActive(pciDevice *dev, pciDevice *check, void *data) return 0; /* same bus, but inactive, i.e. about to be assigned to guest */ - if (inactiveDevs && pciDeviceListFind(inactiveDevs, check)) + if (inactiveDevs && virPCIDeviceListFind(inactiveDevs, check)) return 0; return 1; } -static pciDevice * -pciBusContainsActiveDevices(pciDevice *dev, - pciDeviceList *inactiveDevs) +static virPCIDevicePtr +virPCIDeviceBusContainsActiveDevices(virPCIDevicePtr dev, + virPCIDeviceList *inactiveDevs) { - pciDevice *active = NULL; - if (pciIterDevices(pciSharesBusWithActive, - dev, &active, inactiveDevs) < 0) + virPCIDevicePtr active = NULL; + if (virPCIDeviceIterDevices(virPCIDeviceSharesBusWithActive, + dev, &active, inactiveDevs) < 0) return NULL; return active; } /* Is @check the parent of @dev ? */ static int -pciIsParent(pciDevice *dev, pciDevice *check, void *data) +virPCIDeviceIsParent(virPCIDevicePtr dev, virPCIDevicePtr check, void *data) { uint16_t device_class; uint8_t header_type, secondary, subordinate; - pciDevice **best = data; + virPCIDevicePtr *best = data; int ret = 0; int fd; if (dev->domain != check->domain) return 0; - if ((fd = pciConfigOpen(check, false)) < 0) + if ((fd = virPCIDeviceConfigOpen(check, false)) < 0) return 0; /* Is it a bridge? */ - device_class = pciRead16(check, fd, PCI_CLASS_DEVICE); + device_class = virPCIDeviceRead16(check, fd, PCI_CLASS_DEVICE); if (device_class != PCI_CLASS_BRIDGE_PCI) goto cleanup; /* Is it a plane? */ - header_type = pciRead8(check, fd, PCI_HEADER_TYPE); + header_type = virPCIDeviceRead8(check, fd, PCI_HEADER_TYPE); if ((header_type & PCI_HEADER_TYPE_MASK) != PCI_HEADER_TYPE_BRIDGE) goto cleanup; - secondary = pciRead8(check, fd, PCI_SECONDARY_BUS); - subordinate = pciRead8(check, fd, PCI_SUBORDINATE_BUS); + secondary = virPCIDeviceRead8(check, fd, PCI_SECONDARY_BUS); + subordinate = virPCIDeviceRead8(check, fd, PCI_SUBORDINATE_BUS); VIR_DEBUG("%s %s: found parent device %s", dev->id, dev->name, check->name); @@ -572,8 +572,8 @@ pciIsParent(pciDevice *dev, pciDevice *check, void *data) */ if (dev->bus > secondary && dev->bus <= subordinate) { if (*best == NULL) { - *best = pciGetDevice(check->domain, check->bus, check->slot, - check->function); + *best = virPCIDeviceNew(check->domain, check->bus, check->slot, + check->function); if (*best == NULL) { ret = -1; goto cleanup; @@ -586,15 +586,15 @@ pciIsParent(pciDevice *dev, pciDevice *check, void *data) int bestfd; uint8_t best_secondary; - if ((bestfd = pciConfigOpen(*best, false)) < 0) + if ((bestfd = virPCIDeviceConfigOpen(*best, false)) < 0) goto cleanup; - best_secondary = pciRead8(*best, bestfd, PCI_SECONDARY_BUS); - pciConfigClose(*best, bestfd); + best_secondary = virPCIDeviceRead8(*best, bestfd, PCI_SECONDARY_BUS); + virPCIDeviceConfigClose(*best, bestfd); if (secondary > best_secondary) { - pciFreeDevice(*best); - *best = pciGetDevice(check->domain, check->bus, check->slot, - check->function); + virPCIDeviceFree(*best); + *best = virPCIDeviceNew(check->domain, check->bus, check->slot, + check->function); if (*best == NULL) { ret = -1; goto cleanup; @@ -604,20 +604,20 @@ pciIsParent(pciDevice *dev, pciDevice *check, void *data) } cleanup: - pciConfigClose(check, fd); + virPCIDeviceConfigClose(check, fd); return ret; } static int -pciGetParentDevice(pciDevice *dev, pciDevice **parent) +virPCIDeviceGetParentDevice(virPCIDevicePtr dev, virPCIDevicePtr *parent) { - pciDevice *best = NULL; + virPCIDevicePtr best = NULL; int ret; *parent = NULL; - ret = pciIterDevices(pciIsParent, dev, parent, &best); + ret = virPCIDeviceIterDevices(virPCIDeviceIsParent, dev, parent, &best); if (ret == 1) - pciFreeDevice(best); + virPCIDeviceFree(best); else if (ret == 0) *parent = best; return ret; @@ -627,11 +627,11 @@ pciGetParentDevice(pciDevice *dev, pciDevice **parent) * devices behind a bus. */ static int -pciTrySecondaryBusReset(pciDevice *dev, - int cfgfd, - pciDeviceList *inactiveDevs) +virPCIDeviceTrySecondaryBusReset(virPCIDevicePtr dev, + int cfgfd, + virPCIDeviceList *inactiveDevs) { - pciDevice *parent, *conflict; + virPCIDevicePtr parent, conflict; uint8_t config_space[PCI_CONF_LEN]; uint16_t ctl; int ret = -1; @@ -641,7 +641,7 @@ pciTrySecondaryBusReset(pciDevice *dev, * devices/functions behind the bus are used by the host * or other guests. */ - if ((conflict = pciBusContainsActiveDevices(dev, inactiveDevs))) { + if ((conflict = virPCIDeviceBusContainsActiveDevices(dev, inactiveDevs))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Active %s devices on bus with %s, not doing bus reset"), conflict->name, dev->name); @@ -649,7 +649,7 @@ pciTrySecondaryBusReset(pciDevice *dev, } /* Find the parent bus */ - if (pciGetParentDevice(dev, &parent) < 0) + if (virPCIDeviceGetParentDevice(dev, &parent) < 0) return -1; if (!parent) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -657,7 +657,7 @@ pciTrySecondaryBusReset(pciDevice *dev, dev->name); return -1; } - if ((parentfd = pciConfigOpen(parent, true)) < 0) + if ((parentfd = virPCIDeviceConfigOpen(parent, true)) < 0) goto out; VIR_DEBUG("%s %s: doing a secondary bus reset", dev->id, dev->name); @@ -666,7 +666,7 @@ pciTrySecondaryBusReset(pciDevice *dev, * for the supplied device since we refuse to do a reset if there * are multiple devices/functions */ - if (pciRead(dev, cfgfd, 0, config_space, PCI_CONF_LEN) < 0) { + if (virPCIDeviceRead(dev, cfgfd, 0, config_space, PCI_CONF_LEN) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to read PCI config space for %s"), dev->name); @@ -676,18 +676,18 @@ pciTrySecondaryBusReset(pciDevice *dev, /* Read the control register, set the reset flag, wait 200ms, * unset the reset flag and wait 200ms. */ - ctl = pciRead16(dev, cfgfd, PCI_BRIDGE_CONTROL); + ctl = virPCIDeviceRead16(dev, cfgfd, PCI_BRIDGE_CONTROL); - pciWrite16(parent, parentfd, PCI_BRIDGE_CONTROL, - ctl | PCI_BRIDGE_CTL_RESET); + virPCIDeviceWrite16(parent, parentfd, PCI_BRIDGE_CONTROL, + ctl | PCI_BRIDGE_CTL_RESET); usleep(200 * 1000); /* sleep 200ms */ - pciWrite16(parent, parentfd, PCI_BRIDGE_CONTROL, ctl); + virPCIDeviceWrite16(parent, parentfd, PCI_BRIDGE_CONTROL, ctl); usleep(200 * 1000); /* sleep 200ms */ - if (pciWrite(dev, cfgfd, 0, config_space, PCI_CONF_LEN) < 0) { + if (virPCIDeviceWrite(dev, cfgfd, 0, config_space, PCI_CONF_LEN) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to restore PCI config space for %s"), dev->name); @@ -696,8 +696,8 @@ pciTrySecondaryBusReset(pciDevice *dev, ret = 0; out: - pciConfigClose(parent, parentfd); - pciFreeDevice(parent); + virPCIDeviceConfigClose(parent, parentfd); + virPCIDeviceFree(parent); return ret; } @@ -706,7 +706,7 @@ out: * above we require the device supports a full internal reset. */ static int -pciTryPowerManagementReset(pciDevice *dev, int cfgfd) +virPCIDeviceTryPowerManagementReset(virPCIDevicePtr dev, int cfgfd) { uint8_t config_space[PCI_CONF_LEN]; uint32_t ctl; @@ -715,7 +715,7 @@ pciTryPowerManagementReset(pciDevice *dev, int cfgfd) return -1; /* Save and restore the device's config space. */ - if (pciRead(dev, cfgfd, 0, &config_space[0], PCI_CONF_LEN) < 0) { + if (virPCIDeviceRead(dev, cfgfd, 0, &config_space[0], PCI_CONF_LEN) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to read PCI config space for %s"), dev->name); @@ -724,20 +724,20 @@ pciTryPowerManagementReset(pciDevice *dev, int cfgfd) VIR_DEBUG("%s %s: doing a power management reset", dev->id, dev->name); - ctl = pciRead32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL); + ctl = virPCIDeviceRead32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL); ctl &= ~PCI_PM_CTRL_STATE_MASK; - pciWrite32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL, - ctl | PCI_PM_CTRL_STATE_D3hot); + virPCIDeviceWrite32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL, + ctl | PCI_PM_CTRL_STATE_D3hot); usleep(10 * 1000); /* sleep 10ms */ - pciWrite32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL, - ctl | PCI_PM_CTRL_STATE_D0); + virPCIDeviceWrite32(dev, cfgfd, dev->pci_pm_cap_pos + PCI_PM_CTRL, + ctl | PCI_PM_CTRL_STATE_D0); usleep(10 * 1000); /* sleep 10ms */ - if (pciWrite(dev, cfgfd, 0, &config_space[0], PCI_CONF_LEN) < 0) { + if (virPCIDeviceWrite(dev, cfgfd, 0, &config_space[0], PCI_CONF_LEN) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to restore PCI config space for %s"), dev->name); @@ -748,39 +748,39 @@ pciTryPowerManagementReset(pciDevice *dev, int cfgfd) } static int -pciInitDevice(pciDevice *dev, int cfgfd) +virPCIDeviceInitDevice(virPCIDevicePtr dev, int cfgfd) { int flr; - dev->pcie_cap_pos = pciFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_EXP); - dev->pci_pm_cap_pos = pciFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_PM); - flr = pciDetectFunctionLevelReset(dev, cfgfd); + dev->pcie_cap_pos = virPCIDeviceFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_EXP); + dev->pci_pm_cap_pos = virPCIDeviceFindCapabilityOffset(dev, cfgfd, PCI_CAP_ID_PM); + flr = virPCIDeviceDetectFunctionLevelReset(dev, cfgfd); if (flr < 0) return flr; dev->has_flr = flr; - dev->has_pm_reset = pciDetectPowerManagementReset(dev, cfgfd); + dev->has_pm_reset = virPCIDeviceDetectPowerManagementReset(dev, cfgfd); return 0; } int -pciResetDevice(pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs) +virPCIDeviceReset(virPCIDevicePtr dev, + virPCIDeviceList *activeDevs, + virPCIDeviceList *inactiveDevs) { int ret = -1; int fd; - if (activeDevs && pciDeviceListFind(activeDevs, dev)) { + if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Not resetting active device %s"), dev->name); return -1; } - if ((fd = pciConfigOpen(dev, true)) < 0) + if ((fd = virPCIDeviceConfigOpen(dev, true)) < 0) return -1; - if (pciInitDevice(dev, fd) < 0) + if (virPCIDeviceInitDevice(dev, fd) < 0) goto cleanup; /* KVM will perform FLR when starting and stopping @@ -796,11 +796,11 @@ pciResetDevice(pciDevice *dev, * the function, not the whole device. */ if (dev->has_pm_reset) - ret = pciTryPowerManagementReset(dev, fd); + ret = virPCIDeviceTryPowerManagementReset(dev, fd); /* Bus reset is not an option with the root bus */ if (ret < 0 && dev->bus != 0) - ret = pciTrySecondaryBusReset(dev, fd, inactiveDevs); + ret = virPCIDeviceTrySecondaryBusReset(dev, fd, inactiveDevs); if (ret < 0) { virErrorPtr err = virGetLastError(); @@ -811,13 +811,13 @@ pciResetDevice(pciDevice *dev, } cleanup: - pciConfigClose(dev, fd); + virPCIDeviceConfigClose(dev, fd); return ret; } static int -pciDriverDir(char **buffer, const char *driver) +virPCIDriverDir(char **buffer, const char *driver) { VIR_FREE(*buffer); @@ -830,7 +830,7 @@ pciDriverDir(char **buffer, const char *driver) } static int -pciDriverFile(char **buffer, const char *driver, const char *file) +virPCIDriverFile(char **buffer, const char *driver, const char *file) { VIR_FREE(*buffer); @@ -843,7 +843,7 @@ pciDriverFile(char **buffer, const char *driver, const char *file) } static int -pciDeviceFile(char **buffer, const char *device, const char *file) +virPCIFile(char **buffer, const char *device, const char *file) { VIR_FREE(*buffer); @@ -856,13 +856,13 @@ pciDeviceFile(char **buffer, const char *device, const char *file) } static int -pciProbeStubDriver(const char *driver) +virPCIProbeStubDriver(const char *driver) { char *drvpath = NULL; int probed = 0; recheck: - if (pciDriverDir(&drvpath, driver) == 0 && virFileExists(drvpath)) { + if (virPCIDriverDir(&drvpath, driver) == 0 && virFileExists(drvpath)) { /* driver already loaded, return */ VIR_FREE(drvpath); return 0; @@ -887,13 +887,13 @@ recheck: } static int -pciUnbindDeviceFromStub(pciDevice *dev, const char *driver) +virPCIDeviceUnbindDeviceFromStub(virPCIDevicePtr dev, const char *driver) { int result = -1; char *drvdir = NULL; char *path = NULL; - if (pciDriverDir(&drvdir, driver) < 0) + if (virPCIDriverDir(&drvdir, driver) < 0) goto cleanup; if (!dev->unbind_from_stub) @@ -901,11 +901,11 @@ pciUnbindDeviceFromStub(pciDevice *dev, const char *driver) /* If the device is bound to stub, unbind it. */ - if (pciDeviceFile(&path, dev->name, "driver") < 0) + if (virPCIFile(&path, dev->name, "driver") < 0) goto cleanup; if (virFileExists(drvdir) && virFileLinkPointsTo(path, drvdir)) { - if (pciDriverFile(&path, driver, "unbind") < 0) { + if (virPCIDriverFile(&path, driver, "unbind") < 0) { goto cleanup; } @@ -923,7 +923,7 @@ remove_slot: goto reprobe; /* Xen's pciback.ko wants you to use remove_slot on the specific device */ - if (pciDriverFile(&path, driver, "remove_slot") < 0) { + if (virPCIDriverFile(&path, driver, "remove_slot") < 0) { goto cleanup; } @@ -946,7 +946,7 @@ reprobe: * available, then re-probing would just cause the device to be * re-bound to the stub. */ - if (pciDriverFile(&path, driver, "remove_id") < 0) { + if (virPCIDriverFile(&path, driver, "remove_id") < 0) { goto cleanup; } @@ -975,7 +975,7 @@ cleanup: static int -pciBindDeviceToStub(pciDevice *dev, const char *driver) +virPCIDeviceBindDeviceToStub(virPCIDevicePtr dev, const char *driver) { int result = -1; char *drvdir = NULL; @@ -983,8 +983,8 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) int reprobe = 0; /* check whether the device is already bound to a driver */ - if (pciDriverDir(&drvdir, driver) < 0 || - pciDeviceFile(&path, dev->name, "driver") < 0) { + if (virPCIDriverDir(&drvdir, driver) < 0 || + virPCIFile(&path, dev->name, "driver") < 0) { goto cleanup; } @@ -1005,7 +1005,7 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) * is triggered for such a device, it will also be immediately * bound by the stub. */ - if (pciDriverFile(&path, driver, "new_id") < 0) { + if (virPCIDriverFile(&path, driver, "new_id") < 0) { goto cleanup; } @@ -1019,8 +1019,8 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) /* check whether the device is bound to pci-stub when we write dev->id to * new_id. */ - if (pciDriverDir(&drvdir, driver) < 0 || - pciDeviceFile(&path, dev->name, "driver") < 0) { + if (virPCIDriverDir(&drvdir, driver) < 0 || + virPCIFile(&path, dev->name, "driver") < 0) { goto remove_id; } @@ -1035,7 +1035,7 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) * PCI device happens to be IDE controller for the disk hosting * your root filesystem. */ - if (pciDeviceFile(&path, dev->name, "driver/unbind") < 0) { + if (virPCIFile(&path, dev->name, "driver/unbind") < 0) { goto cleanup; } @@ -1051,14 +1051,14 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) /* If the device isn't already bound to pci-stub, try binding it now. */ - if (pciDriverDir(&drvdir, driver) < 0 || - pciDeviceFile(&path, dev->name, "driver") < 0) { + if (virPCIDriverDir(&drvdir, driver) < 0 || + virPCIFile(&path, dev->name, "driver") < 0) { goto remove_id; } if (!virFileLinkPointsTo(path, drvdir)) { /* Xen's pciback.ko wants you to use new_slot first */ - if (pciDriverFile(&path, driver, "new_slot") < 0) { + if (virPCIDriverFile(&path, driver, "new_slot") < 0) { goto remove_id; } @@ -1070,7 +1070,7 @@ pciBindDeviceToStub(pciDevice *dev, const char *driver) } dev->remove_slot = 1; - if (pciDriverFile(&path, driver, "bind") < 0) { + if (virPCIDriverFile(&path, driver, "bind") < 0) { goto remove_id; } @@ -1087,7 +1087,7 @@ remove_id: /* If 'remove_id' exists, remove the device id from pci-stub's dynamic * ID table so that 'drivers_probe' works below. */ - if (pciDriverFile(&path, driver, "remove_id") < 0) { + if (virPCIDriverFile(&path, driver, "remove_id") < 0) { /* We do not remove PCI ID from pci-stub, and we cannot reprobe it */ if (dev->reprobe) { VIR_WARN("Could not remove PCI ID '%s' from %s, and the device " @@ -1118,36 +1118,36 @@ cleanup: VIR_FREE(path); if (result < 0) { - pciUnbindDeviceFromStub(dev, driver); + virPCIDeviceUnbindDeviceFromStub(dev, driver); } return result; } int -pciDettachDevice(pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs, - const char *driver) +virPCIDeviceDettach(virPCIDevicePtr dev, + virPCIDeviceList *activeDevs, + virPCIDeviceList *inactiveDevs, + const char *driver) { - if (pciProbeStubDriver(driver) < 0) { + if (virPCIProbeStubDriver(driver) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to load PCI stub module %s"), driver); return -1; } - if (activeDevs && pciDeviceListFind(activeDevs, dev)) { + if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Not detaching active device %s"), dev->name); return -1; } - if (pciBindDeviceToStub(dev, driver) < 0) + if (virPCIDeviceBindDeviceToStub(dev, driver) < 0) return -1; /* Add the dev into list inactiveDevs */ - if (inactiveDevs && !pciDeviceListFind(inactiveDevs, dev)) { - if (pciDeviceListAdd(inactiveDevs, dev) < 0) + if (inactiveDevs && !virPCIDeviceListFind(inactiveDevs, dev)) { + if (virPCIDeviceListAdd(inactiveDevs, dev) < 0) return -1; } @@ -1155,29 +1155,29 @@ pciDettachDevice(pciDevice *dev, } int -pciReAttachDevice(pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs, - const char *driver) +virPCIDeviceReAttach(virPCIDevicePtr dev, + virPCIDeviceListPtr activeDevs, + virPCIDeviceListPtr inactiveDevs, + const char *driver) { - if (pciProbeStubDriver(driver) < 0) { + if (virPCIProbeStubDriver(driver) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to load PCI stub module %s"), driver); return -1; } - if (activeDevs && pciDeviceListFind(activeDevs, dev)) { + if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Not reattaching active device %s"), dev->name); return -1; } - if (pciUnbindDeviceFromStub(dev, driver) < 0) + if (virPCIDeviceUnbindDeviceFromStub(dev, driver) < 0) return -1; /* Steal the dev from list inactiveDevs */ if (inactiveDevs) - pciDeviceListSteal(inactiveDevs, dev); + virPCIDeviceListSteal(inactiveDevs, dev); return 0; } @@ -1212,7 +1212,7 @@ pciReAttachDevice(pciDevice *dev, * holding onto the resource. */ int -pciWaitForDeviceCleanup(pciDevice *dev, const char *matcher) +virPCIDeviceWaitForCleanup(virPCIDevicePtr dev, const char *matcher) { FILE *fp; char line[160]; @@ -1292,12 +1292,12 @@ pciWaitForDeviceCleanup(pciDevice *dev, const char *matcher) } static char * -pciReadDeviceID(pciDevice *dev, const char *id_name) +virPCIDeviceReadDeviceID(virPCIDevicePtr dev, const char *id_name) { char *path = NULL; char *id_str; - if (pciDeviceFile(&path, dev->name, id_name) < 0) { + if (virPCIFile(&path, dev->name, id_name) < 0) { return NULL; } @@ -1322,16 +1322,16 @@ pciReadDeviceID(pciDevice *dev, const char *id_name) } int -pciGetDeviceAddrString(unsigned domain, - unsigned bus, - unsigned slot, - unsigned function, - char **pciConfigAddr) +virPCIGetAddrString(unsigned domain, + unsigned bus, + unsigned slot, + unsigned function, + char **pciConfigAddr) { - pciDevice *dev = NULL; + virPCIDevicePtr dev = NULL; int ret = -1; - dev = pciGetDevice(domain, bus, slot, function); + dev = virPCIDeviceNew(domain, bus, slot, function); if (dev != NULL) { if ((*pciConfigAddr = strdup(dev->name)) == NULL) { virReportOOMError(); @@ -1341,17 +1341,17 @@ pciGetDeviceAddrString(unsigned domain, } cleanup: - pciFreeDevice(dev); + virPCIDeviceFree(dev); return ret; } -pciDevice * -pciGetDevice(unsigned domain, - unsigned bus, - unsigned slot, - unsigned function) +virPCIDevicePtr +virPCIDeviceNew(unsigned domain, + unsigned bus, + unsigned slot, + unsigned function) { - pciDevice *dev; + virPCIDevicePtr dev; char *vendor = NULL; char *product = NULL; @@ -1386,8 +1386,8 @@ pciGetDevice(unsigned domain, goto error; } - vendor = pciReadDeviceID(dev, "vendor"); - product = pciReadDeviceID(dev, "device"); + vendor = virPCIDeviceReadDeviceID(dev, "vendor"); + product = virPCIDeviceReadDeviceID(dev, "device"); if (!vendor || !product) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1413,13 +1413,13 @@ cleanup: return dev; error: - pciFreeDevice(dev); + virPCIDeviceFree(dev); dev = NULL; goto cleanup; } void -pciFreeDevice(pciDevice *dev) +virPCIDeviceFree(virPCIDevicePtr dev) { if (!dev) return; @@ -1429,70 +1429,70 @@ pciFreeDevice(pciDevice *dev) } const char * -pciDeviceGetName(pciDevice *dev) +virPCIDeviceGetName(virPCIDevicePtr dev) { return dev->name; } -void pciDeviceSetManaged(pciDevice *dev, unsigned managed) +void virPCIDeviceSetManaged(virPCIDevicePtr dev, unsigned managed) { dev->managed = !!managed; } -unsigned pciDeviceGetManaged(pciDevice *dev) +unsigned virPCIDeviceGetManaged(virPCIDevicePtr dev) { return dev->managed; } unsigned -pciDeviceGetUnbindFromStub(pciDevice *dev) +virPCIDeviceGetUnbindFromStub(virPCIDevicePtr dev) { return dev->unbind_from_stub; } void -pciDeviceSetUnbindFromStub(pciDevice *dev, unsigned unbind) +virPCIDeviceSetUnbindFromStub(virPCIDevicePtr dev, unsigned unbind) { dev->unbind_from_stub = !!unbind; } unsigned -pciDeviceGetRemoveSlot(pciDevice *dev) +virPCIDeviceGetRemoveSlot(virPCIDevicePtr dev) { return dev->remove_slot; } void -pciDeviceSetRemoveSlot(pciDevice *dev, unsigned remove_slot) +virPCIDeviceSetRemoveSlot(virPCIDevicePtr dev, unsigned remove_slot) { dev->remove_slot = !!remove_slot; } unsigned -pciDeviceGetReprobe(pciDevice *dev) +virPCIDeviceGetReprobe(virPCIDevicePtr dev) { return dev->reprobe; } void -pciDeviceSetReprobe(pciDevice *dev, unsigned reprobe) +virPCIDeviceSetReprobe(virPCIDevicePtr dev, unsigned reprobe) { dev->reprobe = !!reprobe; } void -pciDeviceSetUsedBy(pciDevice *dev, const char *name) +virPCIDeviceSetUsedBy(virPCIDevicePtr dev, const char *name) { dev->used_by = name; } const char * -pciDeviceGetUsedBy(pciDevice *dev) +virPCIDeviceGetUsedBy(virPCIDevicePtr dev) { return dev->used_by; } -void pciDeviceReAttachInit(pciDevice *pci) +void virPCIDeviceReAttachInit(virPCIDevicePtr pci) { pci->unbind_from_stub = 1; pci->remove_slot = 1; @@ -1500,10 +1500,10 @@ void pciDeviceReAttachInit(pciDevice *pci) } -pciDeviceList * -pciDeviceListNew(void) +virPCIDeviceListPtr +virPCIDeviceListNew(void) { - pciDeviceList *list; + virPCIDeviceListPtr list; if (VIR_ALLOC(list) < 0) { virReportOOMError(); @@ -1514,7 +1514,7 @@ pciDeviceListNew(void) } void -pciDeviceListFree(pciDeviceList *list) +virPCIDeviceListFree(virPCIDeviceListPtr list) { int i; @@ -1522,7 +1522,7 @@ pciDeviceListFree(pciDeviceList *list) return; for (i = 0; i < list->count; i++) { - pciFreeDevice(list->devs[i]); + virPCIDeviceFree(list->devs[i]); list->devs[i] = NULL; } @@ -1532,10 +1532,10 @@ pciDeviceListFree(pciDeviceList *list) } int -pciDeviceListAdd(pciDeviceList *list, - pciDevice *dev) +virPCIDeviceListAdd(virPCIDeviceListPtr list, + virPCIDevicePtr dev) { - if (pciDeviceListFind(list, dev)) { + if (virPCIDeviceListFind(list, dev)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Device %s is already in use"), dev->name); return -1; @@ -1551,9 +1551,9 @@ pciDeviceListAdd(pciDeviceList *list, return 0; } -pciDevice * -pciDeviceListGet(pciDeviceList *list, - int idx) +virPCIDevicePtr +virPCIDeviceListGet(virPCIDeviceListPtr list, + int idx) { if (idx >= list->count) return NULL; @@ -1564,16 +1564,16 @@ pciDeviceListGet(pciDeviceList *list, } int -pciDeviceListCount(pciDeviceList *list) +virPCIDeviceListCount(virPCIDeviceListPtr list) { return list->count; } -pciDevice * -pciDeviceListStealIndex(pciDeviceList *list, - int idx) +virPCIDevicePtr +virPCIDeviceListStealIndex(virPCIDeviceListPtr list, + int idx) { - pciDevice *ret; + virPCIDevicePtr ret; if (idx < 0 || idx >= list->count) return NULL; @@ -1593,24 +1593,24 @@ pciDeviceListStealIndex(pciDeviceList *list, return ret; } -pciDevice * -pciDeviceListSteal(pciDeviceList *list, - pciDevice *dev) +virPCIDevicePtr +virPCIDeviceListSteal(virPCIDeviceListPtr list, + virPCIDevicePtr dev) { - return pciDeviceListStealIndex(list, pciDeviceListFindIndex(list, dev)); + return virPCIDeviceListStealIndex(list, virPCIDeviceListFindIndex(list, dev)); } void -pciDeviceListDel(pciDeviceList *list, - pciDevice *dev) +virPCIDeviceListDel(virPCIDeviceListPtr list, + virPCIDevicePtr dev) { - pciDevice *ret = pciDeviceListSteal(list, dev); + virPCIDevicePtr ret = virPCIDeviceListSteal(list, dev); if (ret) - pciFreeDevice(ret); + virPCIDeviceFree(ret); } int -pciDeviceListFindIndex(pciDeviceList *list, pciDevice *dev) +virPCIDeviceListFindIndex(virPCIDeviceListPtr list, virPCIDevicePtr dev) { int i; @@ -1623,21 +1623,21 @@ pciDeviceListFindIndex(pciDeviceList *list, pciDevice *dev) return -1; } -pciDevice * -pciDeviceListFind(pciDeviceList *list, pciDevice *dev) +virPCIDevicePtr +virPCIDeviceListFind(virPCIDeviceListPtr list, virPCIDevicePtr dev) { int i; - if ((i = pciDeviceListFindIndex(list, dev)) >= 0) + if ((i = virPCIDeviceListFindIndex(list, dev)) >= 0) return list->devs[i]; else return NULL; } -int pciDeviceFileIterate(pciDevice *dev, - pciDeviceFileActor actor, - void *opaque) +int virPCIDeviceFileIterate(virPCIDevicePtr dev, + virPCIDeviceFileActor actor, + void *opaque) { char *pcidir = NULL; char *file = NULL; @@ -1688,7 +1688,7 @@ cleanup: } static int -pciDeviceDownstreamLacksACS(pciDevice *dev) +virPCIDeviceDownstreamLacksACS(virPCIDevicePtr dev) { uint16_t flags; uint16_t ctrl; @@ -1696,30 +1696,30 @@ pciDeviceDownstreamLacksACS(pciDevice *dev) int fd; int ret = 0; - if ((fd = pciConfigOpen(dev, true)) < 0) + if ((fd = virPCIDeviceConfigOpen(dev, true)) < 0) return -1; - if (pciInitDevice(dev, fd) < 0) { + if (virPCIDeviceInitDevice(dev, fd) < 0) { ret = -1; goto cleanup; } pos = dev->pcie_cap_pos; - if (!pos || pciRead16(dev, fd, PCI_CLASS_DEVICE) != PCI_CLASS_BRIDGE_PCI) + if (!pos || virPCIDeviceRead16(dev, fd, PCI_CLASS_DEVICE) != PCI_CLASS_BRIDGE_PCI) goto cleanup; - flags = pciRead16(dev, fd, pos + PCI_EXP_FLAGS); + flags = virPCIDeviceRead16(dev, fd, pos + PCI_EXP_FLAGS); if (((flags & PCI_EXP_FLAGS_TYPE) >> 4) != PCI_EXP_TYPE_DOWNSTREAM) goto cleanup; - pos = pciFindExtendedCapabilityOffset(dev, fd, PCI_EXT_CAP_ID_ACS); + pos = virPCIDeviceFindExtendedCapabilityOffset(dev, fd, PCI_EXT_CAP_ID_ACS); if (!pos) { VIR_DEBUG("%s %s: downstream port lacks ACS", dev->id, dev->name); ret = 1; goto cleanup; } - ctrl = pciRead16(dev, fd, pos + PCI_EXT_ACS_CTRL); + ctrl = virPCIDeviceRead16(dev, fd, pos + PCI_EXT_ACS_CTRL); if ((ctrl & PCI_EXT_CAP_ACS_ENABLED) != PCI_EXT_CAP_ACS_ENABLED) { VIR_DEBUG("%s %s: downstream port has ACS disabled", dev->id, dev->name); @@ -1728,16 +1728,16 @@ pciDeviceDownstreamLacksACS(pciDevice *dev) } cleanup: - pciConfigClose(dev, fd); + virPCIDeviceConfigClose(dev, fd); return ret; } static int -pciDeviceIsBehindSwitchLackingACS(pciDevice *dev) +virPCIDeviceIsBehindSwitchLackingACS(virPCIDevicePtr dev) { - pciDevice *parent; + virPCIDevicePtr parent; - if (pciGetParentDevice(dev, &parent) < 0) + if (virPCIDeviceGetParentDevice(dev, &parent) < 0) return -1; if (!parent) { /* if we have no parent, and this is the root bus, ACS doesn't come @@ -1759,14 +1759,14 @@ pciDeviceIsBehindSwitchLackingACS(pciDevice *dev) * parent can be found */ do { - pciDevice *tmp; + virPCIDevicePtr tmp; int acs; int ret; - acs = pciDeviceDownstreamLacksACS(parent); + acs = virPCIDeviceDownstreamLacksACS(parent); if (acs) { - pciFreeDevice(parent); + virPCIDeviceFree(parent); if (acs < 0) return -1; else @@ -1774,8 +1774,8 @@ pciDeviceIsBehindSwitchLackingACS(pciDevice *dev) } tmp = parent; - ret = pciGetParentDevice(parent, &parent); - pciFreeDevice(tmp); + ret = virPCIDeviceGetParentDevice(parent, &parent); + virPCIDeviceFree(tmp); if (ret < 0) return -1; } while (parent); @@ -1783,8 +1783,8 @@ pciDeviceIsBehindSwitchLackingACS(pciDevice *dev) return 0; } -int pciDeviceIsAssignable(pciDevice *dev, - int strict_acs_check) +int virPCIDeviceIsAssignable(virPCIDevicePtr dev, + int strict_acs_check) { int ret; @@ -1793,7 +1793,7 @@ int pciDeviceIsAssignable(pciDevice *dev, * or bound to a stub driver. */ - ret = pciDeviceIsBehindSwitchLackingACS(dev); + ret = virPCIDeviceIsBehindSwitchLackingACS(dev); if (ret < 0) return 0; @@ -1819,8 +1819,8 @@ int pciDeviceIsAssignable(pciDevice *dev, * returns true if equal */ static bool -pciConfigAddressEqual(struct pci_config_address *bdf1, - struct pci_config_address *bdf2) +virPCIDeviceAddressIsEqual(virPCIDeviceAddressPtr bdf1, + virPCIDeviceAddressPtr bdf2) { return ((bdf1->domain == bdf2->domain) && (bdf1->bus == bdf2->bus) && @@ -1847,8 +1847,8 @@ logStrToLong_ui(char const *s, } static int -pciParsePciConfigAddress(char *address, - struct pci_config_address *bdf) +virPCIParseDeviceAddress(char *address, + virPCIDeviceAddressPtr bdf) { char *p = NULL; int ret = -1; @@ -1880,8 +1880,8 @@ out: } static int -pciGetPciConfigAddressFromSysfsDeviceLink(const char *device_link, - struct pci_config_address **bdf) +virPCIGetDeviceAddressFromSysfsDeviceLink(const char *device_link, + virPCIDeviceAddressPtr *bdf) { char *config_address = NULL; char *device_path = NULL; @@ -1911,7 +1911,7 @@ pciGetPciConfigAddressFromSysfsDeviceLink(const char *device_link, goto out; } - if (pciParsePciConfigAddress(config_address, *bdf) != 0) { + if (virPCIParseDeviceAddress(config_address, *bdf) != 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse PCI config address '%s'"), config_address); @@ -1919,7 +1919,7 @@ pciGetPciConfigAddressFromSysfsDeviceLink(const char *device_link, goto out; } - VIR_DEBUG("pci_config_address %.4x:%.2x:%.2x.%.1x", + VIR_DEBUG("virPCIDeviceAddress %.4x:%.2x:%.2x.%.1x", (*bdf)->domain, (*bdf)->bus, (*bdf)->slot, @@ -1937,8 +1937,8 @@ out: * Returns Physical function given a virtual function */ int -pciGetPhysicalFunction(const char *vf_sysfs_path, - struct pci_config_address **physical_function) +virPCIGetPhysicalFunction(const char *vf_sysfs_path, + virPCIDeviceAddressPtr *physical_function) { int ret = -1; char *device_link = NULL; @@ -1950,7 +1950,7 @@ pciGetPhysicalFunction(const char *vf_sysfs_path, virReportOOMError(); return ret; } else { - ret = pciGetPciConfigAddressFromSysfsDeviceLink(device_link, + ret = virPCIGetDeviceAddressFromSysfsDeviceLink(device_link, physical_function); } @@ -1963,9 +1963,9 @@ pciGetPhysicalFunction(const char *vf_sysfs_path, * Returns virtual functions of a physical function */ int -pciGetVirtualFunctions(const char *sysfs_path, - struct pci_config_address ***virtual_functions, - unsigned int *num_virtual_functions) +virPCIGetVirtualFunctions(const char *sysfs_path, + virPCIDeviceAddressPtr **virtual_functions, + unsigned int *num_virtual_functions) { int ret = -1; DIR *dir = NULL; @@ -1998,20 +1998,20 @@ pciGetVirtualFunctions(const char *sysfs_path, VIR_DEBUG("Number of virtual functions: %d", *num_virtual_functions); if (VIR_REALLOC_N(*virtual_functions, - (*num_virtual_functions) + 1) != 0) { + (*num_virtual_functions) + 1) != 0) { virReportOOMError(); VIR_FREE(device_link); goto out; } - if (pciGetPciConfigAddressFromSysfsDeviceLink(device_link, - &((*virtual_functions)[*num_virtual_functions])) != + if (virPCIGetDeviceAddressFromSysfsDeviceLink(device_link, + &((*virtual_functions)[*num_virtual_functions])) != SRIOV_FOUND) { /* We should not get back SRIOV_NOT_FOUND in this * case, so if we do, it's an error. */ virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to get SR IOV function from device " - "link '%s'"), device_link); + "link '%s'"), device_link); VIR_FREE(device_link); goto out; } else { @@ -2034,13 +2034,13 @@ out: * Returns 1 if vf device is a virtual function, 0 if not, -1 on error */ int -pciDeviceIsVirtualFunction(const char *vf_sysfs_device_link) +virPCIIsVirtualFunction(const char *vf_sysfs_device_link) { char *vf_sysfs_physfn_link = NULL; int ret = -1; if (virAsprintf(&vf_sysfs_physfn_link, "%s/physfn", - vf_sysfs_device_link) < 0) { + vf_sysfs_device_link) < 0) { virReportOOMError(); return ret; } @@ -2056,40 +2056,40 @@ pciDeviceIsVirtualFunction(const char *vf_sysfs_device_link) * Returns the sriov virtual function index of vf given its pf */ int -pciGetVirtualFunctionIndex(const char *pf_sysfs_device_link, - const char *vf_sysfs_device_link, - int *vf_index) +virPCIGetVirtualFunctionIndex(const char *pf_sysfs_device_link, + const char *vf_sysfs_device_link, + int *vf_index) { int ret = -1, i; unsigned int num_virt_fns = 0; - struct pci_config_address *vf_bdf = NULL; - struct pci_config_address **virt_fns = NULL; + virPCIDeviceAddressPtr vf_bdf = NULL; + virPCIDeviceAddressPtr *virt_fns = NULL; - if (pciGetPciConfigAddressFromSysfsDeviceLink(vf_sysfs_device_link, - &vf_bdf) < 0) + if (virPCIGetDeviceAddressFromSysfsDeviceLink(vf_sysfs_device_link, + &vf_bdf) < 0) return ret; - if (pciGetVirtualFunctions(pf_sysfs_device_link, &virt_fns, - &num_virt_fns) < 0) { + if (virPCIGetVirtualFunctions(pf_sysfs_device_link, &virt_fns, + &num_virt_fns) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Error getting physical function's '%s' " - "virtual_functions"), pf_sysfs_device_link); + "virtual_functions"), pf_sysfs_device_link); goto out; } for (i = 0; i < num_virt_fns; i++) { - if (pciConfigAddressEqual(vf_bdf, virt_fns[i])) { - *vf_index = i; - ret = 0; - break; - } + if (virPCIDeviceAddressIsEqual(vf_bdf, virt_fns[i])) { + *vf_index = i; + ret = 0; + break; + } } out: /* free virtual functions */ for (i = 0; i < num_virt_fns; i++) - VIR_FREE(virt_fns[i]); + VIR_FREE(virt_fns[i]); VIR_FREE(virt_fns); VIR_FREE(vf_bdf); @@ -2102,10 +2102,10 @@ out: */ int -pciSysfsFile(char *pciDeviceName, char **pci_sysfs_device_link) +virPCIGetSysfsFile(char *virPCIDeviceName, char **pci_sysfs_device_link) { if (virAsprintf(pci_sysfs_device_link, PCI_SYSFS "devices/%s", - pciDeviceName) < 0) { + virPCIDeviceName) < 0) { virReportOOMError(); return -1; } @@ -2114,8 +2114,8 @@ pciSysfsFile(char *pciDeviceName, char **pci_sysfs_device_link) } int -pciConfigAddressToSysfsFile(struct pci_config_address *dev, - char **pci_sysfs_device_link) +virPCIDeviceAddressGetSysfsFile(virPCIDeviceAddressPtr dev, + char **pci_sysfs_device_link) { if (virAsprintf(pci_sysfs_device_link, PCI_SYSFS "devices/%04x:%02x:%02x.%x", dev->domain, @@ -2131,68 +2131,68 @@ pciConfigAddressToSysfsFile(struct pci_config_address *dev, * Returns the network device name of a pci device */ int -pciDeviceNetName(char *device_link_sysfs_path, char **netname) -{ - char *pcidev_sysfs_net_path = NULL; - int ret = -1; - DIR *dir = NULL; - struct dirent *entry = NULL; - - if (virBuildPath(&pcidev_sysfs_net_path, device_link_sysfs_path, - "net") == -1) { - virReportOOMError(); - return -1; - } - - dir = opendir(pcidev_sysfs_net_path); - if (dir == NULL) - goto out; - - while ((entry = readdir(dir))) { - if (STREQ(entry->d_name, ".") || - STREQ(entry->d_name, "..")) - continue; +virPCIGetNetName(char *device_link_sysfs_path, char **netname) +{ + char *pcidev_sysfs_net_path = NULL; + int ret = -1; + DIR *dir = NULL; + struct dirent *entry = NULL; - /* Assume a single directory entry */ - *netname = strdup(entry->d_name); - if (!*netname) - virReportOOMError(); - else - ret = 0; - break; - } + if (virBuildPath(&pcidev_sysfs_net_path, device_link_sysfs_path, + "net") == -1) { + virReportOOMError(); + return -1; + } + + dir = opendir(pcidev_sysfs_net_path); + if (dir == NULL) + goto out; - closedir(dir); + while ((entry = readdir(dir))) { + if (STREQ(entry->d_name, ".") || + STREQ(entry->d_name, "..")) + continue; + + /* Assume a single directory entry */ + *netname = strdup(entry->d_name); + if (!*netname) + virReportOOMError(); + else + ret = 0; + break; + } + + closedir(dir); out: - VIR_FREE(pcidev_sysfs_net_path); + VIR_FREE(pcidev_sysfs_net_path); - return ret; + return ret; } int -pciDeviceGetVirtualFunctionInfo(const char *vf_sysfs_device_path, - char **pfname, int *vf_index) +virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path, + char **pfname, int *vf_index) { - struct pci_config_address *pf_config_address = NULL; + virPCIDeviceAddressPtr pf_config_address = NULL; char *pf_sysfs_device_path = NULL; int ret = -1; - if (pciGetPhysicalFunction(vf_sysfs_device_path, &pf_config_address) < 0) + if (virPCIGetPhysicalFunction(vf_sysfs_device_path, &pf_config_address) < 0) return ret; - if (pciConfigAddressToSysfsFile(pf_config_address, - &pf_sysfs_device_path) < 0) { + if (virPCIDeviceAddressGetSysfsFile(pf_config_address, + &pf_sysfs_device_path) < 0) { VIR_FREE(pf_config_address); return ret; } - if (pciGetVirtualFunctionIndex(pf_sysfs_device_path, vf_sysfs_device_path, - vf_index) < 0) + if (virPCIGetVirtualFunctionIndex(pf_sysfs_device_path, vf_sysfs_device_path, + vf_index) < 0) goto cleanup; - ret = pciDeviceNetName(pf_sysfs_device_path, pfname); + ret = virPCIGetNetName(pf_sysfs_device_path, pfname); cleanup: VIR_FREE(pf_config_address); @@ -2205,33 +2205,33 @@ cleanup: static const char *unsupported = N_("not supported on non-linux platforms"); int -pciGetPhysicalFunction(const char *vf_sysfs_path ATTRIBUTE_UNUSED, - struct pci_config_address **physical_function ATTRIBUTE_UNUSED) +virPCIGetPhysicalFunction(const char *vf_sysfs_path ATTRIBUTE_UNUSED, + virPCIDeviceAddressPtr *physical_function ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; } int -pciGetVirtualFunctions(const char *sysfs_path ATTRIBUTE_UNUSED, - struct pci_config_address ***virtual_functions ATTRIBUTE_UNUSED, - unsigned int *num_virtual_functions ATTRIBUTE_UNUSED) +virPCIGetVirtualFunctions(const char *sysfs_path ATTRIBUTE_UNUSED, + virPCIDeviceAddressPtr **virtual_functions ATTRIBUTE_UNUSED, + unsigned int *num_virtual_functions ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; } int -pciDeviceIsVirtualFunction(const char *vf_sysfs_device_link ATTRIBUTE_UNUSED) +virPCIDeviceIsVirtualFunction(const char *vf_sysfs_device_link ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; } int -pciGetVirtualFunctionIndex(const char *pf_sysfs_device_link ATTRIBUTE_UNUSED, - const char *vf_sysfs_device_link ATTRIBUTE_UNUSED, - int *vf_index ATTRIBUTE_UNUSED) +virPCIGetVirtualFunctionIndex(const char *pf_sysfs_device_link ATTRIBUTE_UNUSED, + const char *vf_sysfs_device_link ATTRIBUTE_UNUSED, + int *vf_index ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; @@ -2239,15 +2239,15 @@ pciGetVirtualFunctionIndex(const char *pf_sysfs_device_link ATTRIBUTE_UNUSED, } int -pciConfigAddressToSysfsFile(struct pci_config_address *dev ATTRIBUTE_UNUSED, - char **pci_sysfs_device_link ATTRIBUTE_UNUSED) +virPCIDeviceAddressGetSysfsFile(virPCIDeviceAddressPtr dev ATTRIBUTE_UNUSED, + char **pci_sysfs_device_link ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; } int -pciDeviceNetName(char *device_link_sysfs_path ATTRIBUTE_UNUSED, +virPCIGetNetName(char *device_link_sysfs_path ATTRIBUTE_UNUSED, char **netname ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); @@ -2255,9 +2255,9 @@ pciDeviceNetName(char *device_link_sysfs_path ATTRIBUTE_UNUSED, } int -pciDeviceGetVirtualFunctionInfo(const char *vf_sysfs_device_path ATTRIBUTE_UNUSED, - char **pfname ATTRIBUTE_UNUSED, - int *vf_index ATTRIBUTE_UNUSED) +virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path ATTRIBUTE_UNUSED, + char **pfname ATTRIBUTE_UNUSED, + int *vf_index ATTRIBUTE_UNUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); return -1; diff --git a/src/util/virpci.h b/src/util/virpci.h index bf7da01..3ca7545 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -26,67 +26,74 @@ # include "internal.h" -typedef struct _pciDevice pciDevice; -typedef struct _pciDeviceList pciDeviceList; - -struct pci_config_address { +typedef struct _virPCIDevice virPCIDevice; +typedef virPCIDevice *virPCIDevicePtr; +typedef struct _virPCIDeviceAddress virPCIDeviceAddress; +typedef virPCIDeviceAddress *virPCIDeviceAddressPtr; +typedef struct _virPCIDeviceList virPCIDeviceList; +typedef virPCIDeviceList *virPCIDeviceListPtr; + +struct _virPCIDeviceAddress { unsigned int domain; unsigned int bus; unsigned int slot; unsigned int function; }; -pciDevice *pciGetDevice (unsigned domain, - unsigned bus, - unsigned slot, - unsigned function); -void pciFreeDevice (pciDevice *dev); -const char *pciDeviceGetName (pciDevice *dev); -int pciDettachDevice (pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs, - const char *driver); -int pciReAttachDevice (pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs, - const char *driver); -int pciResetDevice (pciDevice *dev, - pciDeviceList *activeDevs, - pciDeviceList *inactiveDevs); -void pciDeviceSetManaged(pciDevice *dev, - unsigned managed); -unsigned pciDeviceGetManaged(pciDevice *dev); -void pciDeviceSetUsedBy(pciDevice *dev, - const char *used_by); -const char *pciDeviceGetUsedBy(pciDevice *dev); -unsigned pciDeviceGetUnbindFromStub(pciDevice *dev); -void pciDeviceSetUnbindFromStub(pciDevice *dev, - unsigned unbind); -unsigned pciDeviceGetRemoveSlot(pciDevice *dev); -void pciDeviceSetRemoveSlot(pciDevice *dev, - unsigned remove_slot); -unsigned pciDeviceGetReprobe(pciDevice *dev); -void pciDeviceSetReprobe(pciDevice *dev, - unsigned reprobe); -void pciDeviceReAttachInit(pciDevice *dev); - -pciDeviceList *pciDeviceListNew (void); -void pciDeviceListFree (pciDeviceList *list); -int pciDeviceListAdd (pciDeviceList *list, - pciDevice *dev); -pciDevice * pciDeviceListGet (pciDeviceList *list, - int idx); -int pciDeviceListCount (pciDeviceList *list); -pciDevice * pciDeviceListSteal (pciDeviceList *list, - pciDevice *dev); -pciDevice * pciDeviceListStealIndex(pciDeviceList *list, - int idx); -void pciDeviceListDel (pciDeviceList *list, - pciDevice *dev); -pciDevice * pciDeviceListFind (pciDeviceList *list, - pciDevice *dev); -int pciDeviceListFindIndex(pciDeviceList *list, - pciDevice *dev); +virPCIDevicePtr virPCIDeviceNew(unsigned domain, + unsigned bus, + unsigned slot, + unsigned function); +void virPCIDeviceFree(virPCIDevicePtr dev); +const char *virPCIDeviceGetName(virPCIDevicePtr dev); + +int virPCIDeviceDettach(virPCIDevicePtr dev, + virPCIDeviceListPtr activeDevs, + virPCIDeviceListPtr inactiveDevs, + const char *driver); +int virPCIDeviceReAttach(virPCIDevicePtr dev, + virPCIDeviceListPtr activeDevs, + virPCIDeviceListPtr inactiveDevs, + const char *driver); +int virPCIDeviceReset(virPCIDevicePtr dev, + virPCIDeviceListPtr activeDevs, + virPCIDeviceListPtr inactiveDevs); + +void virPCIDeviceSetManaged(virPCIDevice *dev, + unsigned managed); +unsigned virPCIDeviceGetManaged(virPCIDevice *dev); +void virPCIDeviceSetUsedBy(virPCIDevice *dev, + const char *used_by); +const char *virPCIDeviceGetUsedBy(virPCIDevice *dev); +unsigned virPCIDeviceGetUnbindFromStub(virPCIDevicePtr dev); +void virPCIDeviceSetUnbindFromStub(virPCIDevice *dev, + unsigned unbind); +unsigned virPCIDeviceGetRemoveSlot(virPCIDevicePtr dev); +void virPCIDeviceSetRemoveSlot(virPCIDevice *dev, + unsigned remove_slot); +unsigned virPCIDeviceGetReprobe(virPCIDevicePtr dev); +void virPCIDeviceSetReprobe(virPCIDevice *dev, + unsigned reprobe); +void virPCIDeviceReAttachInit(virPCIDevice *dev); + + +virPCIDeviceListPtr virPCIDeviceListNew(void); +void virPCIDeviceListFree(virPCIDeviceListPtr list); +int virPCIDeviceListAdd(virPCIDeviceListPtr list, + virPCIDevicePtr dev); +virPCIDevicePtr virPCIDeviceListGet(virPCIDeviceListPtr list, + int idx); +int virPCIDeviceListCount(virPCIDeviceListPtr list); +virPCIDevicePtr virPCIDeviceListSteal(virPCIDeviceListPtr list, + virPCIDevicePtr dev); +virPCIDevicePtr virPCIDeviceListStealIndex(virPCIDeviceListPtr list, + int idx); +void virPCIDeviceListDel(virPCIDeviceListPtr list, + virPCIDevicePtr dev); +virPCIDevicePtr virPCIDeviceListFind(virPCIDeviceListPtr list, + virPCIDevicePtr dev); +int virPCIDeviceListFindIndex(virPCIDeviceListPtr list, + virPCIDevicePtr dev); /* * Callback that will be invoked once for each file @@ -95,46 +102,47 @@ int pciDeviceListFindIndex(pciDeviceList *list, * Should return 0 if successfully processed, or * -1 to indicate error and abort iteration */ -typedef int (*pciDeviceFileActor)(pciDevice *dev, - const char *path, void *opaque); +typedef int (*virPCIDeviceFileActor)(virPCIDevicePtr dev, + const char *path, void *opaque); -int pciDeviceFileIterate(pciDevice *dev, - pciDeviceFileActor actor, - void *opaque); +int virPCIDeviceFileIterate(virPCIDevicePtr dev, + virPCIDeviceFileActor actor, + void *opaque); -int pciDeviceIsAssignable(pciDevice *dev, - int strict_acs_check); -int pciWaitForDeviceCleanup(pciDevice *dev, const char *matcher); +int virPCIDeviceIsAssignable(virPCIDevicePtr dev, + int strict_acs_check); +int virPCIDeviceWaitForCleanup(virPCIDevicePtr dev, const char *matcher); -int pciGetPhysicalFunction(const char *sysfs_path, - struct pci_config_address **phys_fn); +int virPCIGetPhysicalFunction(const char *sysfs_path, + virPCIDeviceAddressPtr *phys_fn); -int pciGetVirtualFunctions(const char *sysfs_path, - struct pci_config_address ***virtual_functions, - unsigned int *num_virtual_functions); +int virPCIGetVirtualFunctions(const char *sysfs_path, + virPCIDeviceAddressPtr **virtual_functions, + unsigned int *num_virtual_functions); -int pciDeviceIsVirtualFunction(const char *vf_sysfs_device_link); +int virPCIIsVirtualFunction(const char *vf_sysfs_device_link); -int pciGetVirtualFunctionIndex(const char *pf_sysfs_device_link, - const char *vf_sysfs_device_link, - int *vf_index); +int virPCIGetVirtualFunctionIndex(const char *pf_sysfs_device_link, + const char *vf_sysfs_device_link, + int *vf_index); -int pciConfigAddressToSysfsFile(struct pci_config_address *dev, - char **pci_sysfs_device_link); +int virPCIDeviceAddressGetSysfsFile(virPCIDeviceAddressPtr dev, + char **pci_sysfs_device_link); -int pciDeviceNetName(char *device_link_sysfs_path, char **netname); +int virPCIGetNetName(char *device_link_sysfs_path, char **netname); -int pciSysfsFile(char *pciDeviceName, char **pci_sysfs_device_link) +int virPCIGetSysfsFile(char *virPCIDeviceName, + char **pci_sysfs_device_link) ATTRIBUTE_RETURN_CHECK; -int pciGetDeviceAddrString(unsigned domain, - unsigned bus, - unsigned slot, - unsigned function, - char **pciConfigAddr) +int virPCIGetAddrString(unsigned domain, + unsigned bus, + unsigned slot, + unsigned function, + char **pciConfigAddr) ATTRIBUTE_NONNULL(5) ATTRIBUTE_RETURN_CHECK; -int pciDeviceGetVirtualFunctionInfo(const char *vf_sysfs_device_path, - char **pfname, int *vf_index); +int virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path, + char **pfname, int *vf_index); #endif /* __VIR_PCI_H__ */ diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 2795ebc..2c8b73e 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -2102,23 +2102,23 @@ out: static int xenUnifiedNodeDeviceDettach(virNodeDevicePtr dev) { - pciDevice *pci; + virPCIDevicePtr pci; unsigned domain, bus, slot, function; int ret = -1; if (xenUnifiedNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; - if (pciDettachDevice(pci, NULL, NULL, "pciback") < 0) + if (virPCIDeviceDettach(pci, NULL, NULL, "pciback") < 0) goto out; ret = 0; out: - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } @@ -2183,7 +2183,7 @@ out: static int xenUnifiedNodeDeviceReAttach(virNodeDevicePtr dev) { - pciDevice *pci; + virPCIDevicePtr pci; unsigned domain, bus, slot, function; int ret = -1; int domid; @@ -2191,7 +2191,7 @@ xenUnifiedNodeDeviceReAttach(virNodeDevicePtr dev) if (xenUnifiedNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; @@ -2203,35 +2203,35 @@ xenUnifiedNodeDeviceReAttach(virNodeDevicePtr dev) goto out; } - if (pciReAttachDevice(pci, NULL, NULL, "pciback") < 0) + if (virPCIDeviceReAttach(pci, NULL, NULL, "pciback") < 0) goto out; ret = 0; out: - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } static int xenUnifiedNodeDeviceReset(virNodeDevicePtr dev) { - pciDevice *pci; + virPCIDevicePtr pci; unsigned domain, bus, slot, function; int ret = -1; if (xenUnifiedNodeDeviceGetPciInfo(dev, &domain, &bus, &slot, &function) < 0) return -1; - pci = pciGetDevice(domain, bus, slot, function); + pci = virPCIDeviceNew(domain, bus, slot, function); if (!pci) return -1; - if (pciResetDevice(pci, NULL, NULL) < 0) + if (virPCIDeviceReset(pci, NULL, NULL) < 0) goto out; ret = 0; out: - pciFreeDevice(pci); + virPCIDeviceFree(pci); return ret; } -- 1.8.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list