[libvirt PATCH 1/6] conf: add support for <acpi index='NNN'/> for PCI devices

Daniel P. Berrangé berrange at redhat.com
Wed Apr 7 12:55:32 UTC 2021


On Wed, Apr 07, 2021 at 08:53:12AM -0400, Laine Stump wrote:
> On 4/6/21 11:31 AM, Daniel P. Berrangé wrote:
> > PCI devices can be associated with a unique integer index that is
> > exposed via ACPI. In Linux OS with systemd, this value is used for
> > provide a NIC device naming scheme that is stable across changes
> > in PCI slot configuration.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> > ---
> >   docs/formatdomain.rst         |  6 +++
> >   docs/schemas/domaincommon.rng | 73 +++++++++++++++++++++++++++++++++++
> >   src/conf/device_conf.h        |  3 ++
> >   src/conf/domain_conf.c        | 12 ++++++
> >   4 files changed, 94 insertions(+)
> > 
> > diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
> > index 7ba32ea9c1..5db0aac77a 100644
> > --- a/docs/formatdomain.rst
> > +++ b/docs/formatdomain.rst
> > @@ -4363,6 +4363,7 @@ Network interfaces
> >          <mac address='52:54:00:5d:c7:9e'/>
> >          <boot order='1'/>
> >          <rom bar='off'/>
> > +       <acpi index='4'/>
> >        </interface>
> >      </devices>
> >      ...
> > @@ -4389,6 +4390,11 @@ when it's in the reserved VMware range by adding a ``type="static"`` attribute
> >   to the ``<mac/>`` element. Note that this attribute is useless if the provided
> >   MAC address is outside of the reserved VMWare ranges.
> > +:since:`Since 7.3.0`, one can set the ACPI index against network interfaces.
> > +With some operating systems (eg Linux with systemd), the ACPI index is used
> > +to provide network interface device naming, that is stable across changes
> > +in PCI addresses assigned to the device.
> > +
> >   :anchor:`<a id="elementsNICSVirtual"/>`
> >   Virtual network
> > diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> > index 2ff7862539..30108b6d4c 100644
> > --- a/docs/schemas/domaincommon.rng
> > +++ b/docs/schemas/domaincommon.rng
> > @@ -1441,6 +1441,9 @@
> >         <optional>
> >           <ref name="alias"/>
> >         </optional>
> > +      <optional>
> > +        <ref name="acpi"/>
> > +      </optional>
> >         <optional>
> >           <ref name="address"/>
> >         </optional>
> 
> Looks like it's time to reorganize the schema to eliminate all of this
> repetition. You already put the acpi index into the virDomainDeviceInfo
> struct, and parse/format it with virDomainDeviceInfoParse/Format, so it
> would make sense to define a "deviceInfo" element to replace every "address"
> reference. The deviceInfo element could also include alias, since that too
> is part of the deviceInfo.
> 
> If you don't want to do that in this series, I can do it after you've pushed
> it all of this - just remind me.

Yeah, I thought about doing this, but I'm not entirely confident about
the impact it will have on the "<interleave>" usage - we need the
interleavin to apply to all child elements and dont want the device
info stuff forced into a group. Maybe it just does the right thing,
but I've not had time to test it, so didn't tackle it here.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list