mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-04 03:55:20 +00:00
9b0848d523
If libvirtd is running unprivileged, it can open a device's PCI config data in sysfs, but can only read the first 64 bytes. But as part of determining whether a device is Express or legacy PCI, qemuDomainDeviceCalculatePCIConnectFlags() will be updated in a future patch to call virPCIDeviceIsPCIExpress(), which tries to read beyond the first 64 bytes of the PCI config data and fails with an error log if the read is unsuccessful. In order to avoid creating a parallel "quiet" version of virPCIDeviceIsPCIExpress(), this patch passes a virQEMUDriverPtr down through all the call chains that initialize the qemuDomainFillDevicePCIConnectFlagsIterData, and saves the driver pointer with the rest of the iterdata so that it can be used by qemuDomainDeviceCalculatePCIConnectFlags(). This pointer isn't used yet, but will be used in an upcoming patch (that detects Express vs legacy PCI for VFIO assigned devices) to examine driver->privileged.
62 lines
2.2 KiB
C
62 lines
2.2 KiB
C
/*
|
|
* qemu_domain_address.h: QEMU domain address
|
|
*
|
|
* Copyright (C) 2006-2016 Red Hat, Inc.
|
|
* Copyright (C) 2006 Daniel P. Berrange
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
|
*/
|
|
|
|
#ifndef __QEMU_DOMAIN_ADDRESS_H__
|
|
|
|
# include "domain_addr.h"
|
|
# include "domain_conf.h"
|
|
# include "qemu_conf.h"
|
|
# include "qemu_capabilities.h"
|
|
|
|
int qemuDomainSetSCSIControllerModel(const virDomainDef *def,
|
|
virQEMUCapsPtr qemuCaps,
|
|
int *model);
|
|
|
|
int qemuDomainAssignAddresses(virDomainDefPtr def,
|
|
virQEMUCapsPtr qemuCaps,
|
|
virQEMUDriverPtr driver,
|
|
virDomainObjPtr obj,
|
|
bool newDomain)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
|
|
|
|
int qemuDomainEnsurePCIAddress(virDomainObjPtr obj,
|
|
virDomainDeviceDefPtr dev,
|
|
virQEMUDriverPtr driver)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
|
|
|
|
void qemuDomainReleaseDeviceAddress(virDomainObjPtr vm,
|
|
virDomainDeviceInfoPtr info,
|
|
const char *devstr);
|
|
|
|
virDomainCCWAddressSetPtr
|
|
qemuDomainCCWAddrSetCreateFromDomain(virDomainDefPtr def)
|
|
ATTRIBUTE_NONNULL(1);
|
|
|
|
int qemuDomainAssignMemoryDeviceSlot(virDomainDefPtr def,
|
|
virDomainMemoryDefPtr mem);
|
|
|
|
|
|
# define __QEMU_DOMAIN_ADDRESS_H__
|
|
|
|
#endif /* __QEMU_DOMAIN_ADDRESS_H__ */
|