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(a)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 :|