[PATCH v3 3/5] conf: introduce acpi-hotplug-bridge and acpi-root-hotplug pm options

Ani Sinha ani at anisinha.ca
Tue Sep 28 09:05:47 UTC 2021



On Tue, 28 Sep 2021, Daniel P. Berrangé wrote:

> On Sun, Sep 12, 2021 at 08:56:29AM +0530, Ani Sinha wrote:
> > This change introduces libvirt xml support for the following two pm options:
> >
> > <pm>
> >   <acpi-hotplug-bridge enabled='no'/>
> >   <acpi-root-hotplug enabled='yes'/>
> > </pm>
>
>
> > +``acpi-hotplug-bridge``
> > +   :since:`Since 7.8.0` This option enables or disables BIOS ACPI based hotplug support
> > +   for cold plugged bridges. It is available only for x86 guests, both for q35 and pc
> > +   machine types. For pc machines, the support is available from `QEMU 2.12`. For q35
> > +   machines, the support is available from `QEMU 6.1`. Examples of cold plugged bridges
> > +   include PCI-PCI bridges for pc machine types (pci-bridge controller). For q35 machines,
> > +   it includes PCIE root ports (pcie-root-port controller). This is a global option that
> > +   affects all bridges. No other bridge specific option is required to be specified.
>
> Can you confirm my understanding of the situation..
>
>  - i440fx / PCI topology - hotplug always uses ACPI
>

ACPI is the primary means of enabling hotplug. shpc might also have a role
here but I think it is disabled. Igor (cc'd) might throw some lights on
how shpc comes to play.

>  - q35 / PCIe topology - hotplug historically used native PCIe hotplug,
>                          but in 6.1 switched to ACPI
>

Correct.

> Given, the name "acpi-hotplug-bridge",  am I right that this option
> has *no* effect, if the q35 machine is using native PCIe hotplug
> approach ?

Its complicated.
With "acpi-hotplug-bridge" ON, native hotplug is disabled in qemu.
With "acpi-hotplug-bridge" OFF, native hotplug is enabled in qemu.

Libvirt does not allow it, but by directly using qemu commandline it is
possible to enable ACPI hotplug for pcie-root-ports by turning
"acpi-hotplug-bridge" ON _and_ enable native hotplug at the same time. In
that case, as Julia has mentioned in some other thread, the guest OS
always choses native over ACPI based hotplug.

The <target hotplug="on/off"> switch in libvirt for pcie-root-ports
currently does not care whether native or acpi hotplug is used. It simply
turns on the hotplug for that particular port. Whether ACPI or native is
used is controlled by this global flag that Julia has introduced in 6.1.

> IOW, is it a no-op until 6.1 based machine types for q35 ?
>

Correct. For q35 this command line did not exist until 6.1.


More information about the libvir-list mailing list