[libvirt] [PATCH 00/13] Move functions from qemu_domain_address.c to domain_addr.c
Laine Stump
laine at laine.org
Thu Jul 28 23:00:40 UTC 2016
On 07/19/2016 08:07 PM, Tomasz Flendrich wrote:
> This series depends on another one:
> https://www.redhat.com/archives/libvir-list/2016-July/msg00696.html
>
> Because the address sets are no longer cached, it's possible to move
> functions that don't depend on qemu anymore from qemu_domain_address.c
> to domain_addr.c. I did that with virtioSerial and PCI.
>
> To make some functions not dependent on qemuCaps, their parameters
> were changed to booleans. These changes are in [PATCH 02/13].
>
> If you are satisfied with this approach, I can do the same with
> the rest of the functions or just some of them.
The problem is that many/most these functions are by definition
qemu-specific - only the qemu driver has any concept of a Q35
machinetype or a PIIX3 controller (actually that function should
probably have used "i440fx" instead of PIIX3) or an aarch64 "virt"
machinetype, or any use for a "busNr" etc etc. So moving them from qemu
into conf is busy-work that is counter-productive.
I guess you're wanting to move these into conf because they are related
to and used by functions that are assigning/allocating PCI addresses,
and you want that to be done in a driver-agnostic place. I don't think
simply moving all these driver-specific functions into driver-agnostic
files and declaring them driver-agnostic is the right approach though.
The "pre-loading/validation" of addresses in these functions based on
hardware and qemu capabilities should either be called from
qemu-specific code prior to calling a driver-agnostic address
allocation/assignment function, or the driver-agnostic function should
do a callback back into qemu to pre-load/validate the addresses. Beyond
that, each PCI controller needs flags to indicate what type of slots
(and how many) it provides, which is driver-specific and so needs to be
provided by a callback into a driver-specific function, and as each
device is assigned we need to determine what type of slot it can plug
into, which will also be driver-specific and thus require a callback
into a driver-specific function.
This (functions to provide the slot-type-compatibility flags for
controllers and devices) was something I was about to work on before I
left for a two week vacation that turned into 3 due to "social unrest"
(and I've now spent nearly a week just catching up on email). I have a
lot of accumulated bits of knowledge about this in my brain that I need
to dump into code, the sooner the better.
>
> Tomasz Flendrich (13):
> Move and rename qemuDomainAssignVirtioSerialAddresses
> make pci address handling functions qemu-agnostic
> Move and rename qemuDomainCollectPCIAddress
> Move and rename qemuDomainMachineIsQ35 et al
> Move and rename qemuDomainValidateDevicePCISlotsPIIX3
> Move and rename qemuDomainValidateDevicePCISlotsQ35
> Move and rename qemuDomainValidateDevicePCISlotsChipsets
> Move and rename qemuDomainAddressFindNewBusNr et al
> Move and rename qemuDomainMachineIsVirt
> Move and rename qemuDomainSupportsPCI
> Move and rename qemuDomainPCIAddrSetCreateFromDomain
> Move and rename qemuDomainAssignPCIAddresses et al
> Make functions in qemu_domain_address static
>
> src/conf/domain_addr.c | 1315 ++++++++++++++++++++++++++++++++++++++++
> src/conf/domain_addr.h | 28 +
> src/libvirt_private.syms | 6 +
> src/qemu/qemu_alias.c | 2 +-
> src/qemu/qemu_capabilities.c | 6 +-
> src/qemu/qemu_command.c | 20 +-
> src/qemu/qemu_domain.c | 55 +-
> src/qemu/qemu_domain.h | 3 -
> src/qemu/qemu_domain_address.c | 1284 +--------------------------------------
> src/qemu/qemu_domain_address.h | 4 -
> src/qemu/qemu_hotplug.c | 33 +-
> 11 files changed, 1406 insertions(+), 1350 deletions(-)
>
More information about the libvir-list
mailing list