[libvirt PATCH 3/4] qemu: account for mdev devices in getPPC64MemLockLimitBytes()

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Mar 24 12:29:14 UTC 2021



On 3/23/21 3:50 PM, Laine Stump wrote:
> This function is a specialized version of
> qemuDomainGetMemLockLimitBytes() for PPC64. Simplifying it in the same
> manner as the previous patch has the nice side effect of accounting
> for the possibility of an mdev device in the config.
> 
> (I don't know if mdev devices are supported on PPC, but even if not
> then a) the additional check for mdev devices gained by using
> qemuDomainNeedsVFIO() in place of open coding will be an effective
> NOP, and b) if mdev devices are supported on PPC64 in the future, this
> function will be prepared for it).

PowerPC guest does not support mdev. I agree that there is no harm in
considering that this might change in the future though. One less piece
of code to change is always welcome.

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

> 
> Signed-off-by: Laine Stump <laine at redhat.com>
> ---
>   src/qemu/qemu_domain.c | 9 ++-------
>   1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 5238a52095..e0379e81ba 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -9122,7 +9122,6 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def,
>       unsigned long long passthroughLimit = 0;
>       size_t i, nPCIHostBridges = 0;
>       virPCIDeviceAddressPtr pciAddr;
> -    bool usesVFIO = false;
>       bool nvlink2Capable = false;
>   
>       for (i = 0; i < def->ncontrollers; i++) {
> @@ -9138,7 +9137,6 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def,
>           virDomainHostdevDefPtr dev = def->hostdevs[i];
>   
>           if (virHostdevIsVFIODevice(dev)) {
> -            usesVFIO = true;
>   
>               pciAddr = &dev->source.subsys.u.pci.addr;
>               if (virPCIDeviceAddressIsValid(pciAddr, false)) {
> @@ -9153,9 +9151,6 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def,
>           }
>       }
>   
> -    if (virDomainDefHasNVMeDisk(def))
> -        usesVFIO = true;
> -
>       memory = virDomainDefGetMemoryTotal(def);
>   
>       if (def->mem.max_memory)
> @@ -9180,7 +9175,7 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def,
>                   8192;
>   
>       /* NVLink2 support in QEMU is a special case of the passthrough
> -     * mechanics explained in the usesVFIO case below. The GPU RAM
> +     * mechanics explained in the forceVFIO case below. The GPU RAM
>        * is placed with a gap after maxMemory. The current QEMU
>        * implementation puts the NVIDIA RAM above the PCI MMIO, which
>        * starts at 32TiB and is the MMIO reserved for the guest main RAM.
> @@ -9204,7 +9199,7 @@ getPPC64MemLockLimitBytes(virDomainDefPtr def,
>           passthroughLimit = maxMemory +
>                              128 * (1ULL<<30) / 512 * nPCIHostBridges +
>                              8192;
> -    } else if (usesVFIO || forceVFIO) {
> +    } else if (forceVFIO || qemuDomainNeedsVFIO(def)) {
>           /* For regular (non-NVLink2 present) VFIO passthrough, the value
>            * of passthroughLimit is:
>            *
> 




More information about the libvir-list mailing list