From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: pbonzini@redhat.com, mhohmann@physnet.uni-hamburg.de,
qemu-stable@nongnu.org, qemu-devel@nongnu.org,
ehabkost@redhat.com
Subject: Re: [PATCH] hostmem: don't use mbind() if host-nodes is epmty
Date: Fri, 1 May 2020 09:57:08 +0100 [thread overview]
Message-ID: <20200501085708.GA2203114@redhat.com> (raw)
In-Reply-To: <20200430154606.6421-1-imammedo@redhat.com>
On Thu, Apr 30, 2020 at 11:46:06AM -0400, Igor Mammedov wrote:
> Since 5.0 QEMU uses hostmem backend for allocating main guest RAM.
> The backend however calls mbind() which is typically NOP
> in case of default policy/absent host-nodes bitmap.
> However when runing in container with black-listed mbind()
> syscall, QEMU fails to start with error
> "cannot bind memory to host NUMA nodes: Operation not permitted"
> even when user hasn't provided host-nodes to pin to explictly
> (which is the case with -m option)
>
> To fix issue, call mbind() only in case when user has provided
> host-nodes explicitly (i.e. host_nodes bitmap is not empty).
> That should allow to run QEMU in containers with black-listed
> mbind() without memory pinning. If QEMU provided memory-pinning
> is required user still has to white-list mbind() in container
> configuration.
>
> Reported-by: Manuel Hohmann <mhohmann@physnet.uni-hamburg.de>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> CC: berrange@redhat.com
> CC: ehabkost@redhat.com
> CC: pbonzini@redhat.com
> CC: mhohmann@physnet.uni-hamburg.de
> CC: qemu-stable@nongnu.org
> ---
> backends/hostmem.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/backends/hostmem.c b/backends/hostmem.c
> index 327f9eebc3..0efd7b7bd6 100644
> --- a/backends/hostmem.c
> +++ b/backends/hostmem.c
> @@ -383,8 +383,10 @@ host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
> assert(sizeof(backend->host_nodes) >=
> BITS_TO_LONGS(MAX_NODES + 1) * sizeof(unsigned long));
> assert(maxnode <= MAX_NODES);
> - if (mbind(ptr, sz, backend->policy,
> - maxnode ? backend->host_nodes : NULL, maxnode + 1, flags)) {
> +
> + if (maxnode &&
> + mbind(ptr, sz, backend->policy, backend->host_nodes, maxnode + 1,
> + flags)) {
> if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) {
> error_setg_errno(errp, errno,
> "cannot bind memory to host NUMA nodes");
personally I would have found this code clearer if the
check had been "if (backend->policy != MPOL_DEFAULT && ..."
as I had to read quite a few lines to understand that the
'maxnode' is zero if-and-only-if policy == MPOL_DEFAULT
Regardless though, this is functionally correct so
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
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 :|
next prev parent reply other threads:[~2020-05-01 8:58 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-30 15:46 [PATCH] hostmem: don't use mbind() if host-nodes is epmty Igor Mammedov
2020-04-30 16:42 ` Philippe Mathieu-Daudé
2020-05-01 7:28 ` Manuel Hohmann
2020-05-01 8:57 ` Daniel P. Berrangé [this message]
2020-05-04 14:31 ` Philippe Mathieu-Daudé
2020-05-04 15:44 ` Eduardo Habkost
2020-05-11 16:00 ` Philippe Mathieu-Daudé
2020-05-11 19:24 ` Igor Mammedov
2020-05-11 20:03 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200501085708.GA2203114@redhat.com \
--to=berrange@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mhohmann@physnet.uni-hamburg.de \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.