On Mon, Nov 09, 2015 at 01:09:59PM -0500, John Ferlan wrote:
On 11/09/2015 07:50 AM, Peter Krempa wrote:
> New function qemuDomainGetMlockLimitBytes will now handle the
> calculation so that it unifies the logic to one place and allows later
> reuse.
> ---
> src/qemu/qemu_command.c | 18 ++----------------
> src/qemu/qemu_domain.c | 27 +++++++++++++++++++++++++++
> src/qemu/qemu_domain.h | 2 ++
> src/qemu/qemu_hotplug.c | 17 ++---------------
> 4 files changed, 33 insertions(+), 31 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 8824541..9acf8e4 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -11447,22 +11447,8 @@ qemuBuildCommandLine(virConnectPtr conn,
> goto error;
> }
>
> - if (mlock) {
> - unsigned long long memKB;
> -
> - /* VFIO requires all of the guest's memory to be
> - * locked resident, plus some amount for IO
> - * space. Alex Williamson suggested adding 1GiB for IO
> - * space just to be safe (some finer tuning might be
> - * nice, though).
> - */
> - if (virMemoryLimitIsSet(def->mem.hard_limit))
> - memKB = def->mem.hard_limit;
> - else
> - memKB = virDomainDefGetMemoryActual(def) + 1024 * 1024;
> -
> - virCommandSetMaxMemLock(cmd, memKB * 1024);
> - }
> + if (mlock)
> + virCommandSetMaxMemLock(cmd, qemuDomainGetMlockLimitBytes(def));
>
> if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MSG_TIMESTAMP) &&
> cfg->logTimestamp)
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 890d8ed..a06624e 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -3616,3 +3616,30 @@ qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver,
>
> return 0;
> }
> +
> +
> +/**
> + * qemuDomainGetMlockLimitBytes:
> + *
> + * @def: domain definition
> + *
> + * Returns the size of the memory in bytes that needs to be set as
> + * RLIMIT_MEMLOCK for purpose of VFIO device passthrough. In cases where
> + * mem.hard_limit is set, the value is preferred,otherwise the value may depend
> + * on the device or architecture.
How about?
Returns the size of memory in bytes to allow a process (domain) to be
locked into RAM (e.g setrlimit RLIMIT_MEMLOCK).
While this sentence is inaccurate,
If a mem.hard_limit is
set, then that value is preferred; otherwise, the value returned may
depend upon the architecture or devices present, such as a VFIO
passthrough device.
this one looks better than the original and it has proper spacing after
the comma.
ACK with the second sentence used.
Jan