On Thu, Sep 18, 2025 at 03:04:28PM +0200, Peter Krempa wrote:
> On Tue, Aug 19, 2025 at 18:22:22 +0200, Andrea Bolognani via Devel wrote:
> > + /* Sanity check. If the machine type supports PCI, we need to reflect
> > + * that fact in the XML or other parts of the machine handling code
> > + * might misbehave */
>
> This one is a bit borderline. IMO you can have machine with no default
> PCI but the possibility to explicily add such a bus.
Can you point to a specific example? I'm not aware of any.
To the best of my knowledge, all machines that are PCI-capable come
with a root PCI controller out of the gate.
There is no QEMU device corresponding to the root PCI controller
either, so I don't know how you would even go about adding it if it
were opt-in. Perhaps a machine type flag but again, I'm not aware of
that actually being a thing.
> > + if (qemuDomainSupportsPCI(def) &&
> > + !addPCIRoot &&
> > + !addPCIeRoot) {
> > + virReportError(VIR_ERR_INTERNAL_ERROR,
> > + _("Machine type '%1$s' supports PCI but no PCI
> > controller added"),
> > + def->os.machine);
> > + return -1;
> > + }
> > +
> > + /* Sanity check. USB controllers are PCI devices, so asking for a
> > + * USB controller to be added but not for a PCI(e) root to be
> > + * added at the same time is likely an oversight */
>
> I'm fairly sure there are non-PCI USB controllers so this one is
> definitely false. It's just that libvirt supports only USB controllers
> which are on PCI.
>
> IMO this assumption should be validated with the USB controller itself.
I'm not aware of any non-PCI USB controller out there, certainly not
in QEMU. Can you point to one?
--
Andrea Bolognani / Red Hat / Virtualization