diff mbox

backends/hostmem: Ignore ENOSYS while setting MPOL_DEFAULT

Message ID 000201d110b6$34ecc700$9ec65500$@samsung.com
State New
Headers show

Commit Message

Pavel Fedin Oct. 27, 2015, 12:51 p.m. UTC
Currently hostmem backend fails if CONFIG_NUMA is enabled for the qemu
(default), but NUMA is not supported by the kernel. This makes it
impossible to use ivshmem in such configurations.

This patch fixes the problem by ignoring ENOSYS error if policy is set to
MPOL_DEFAULT. This way the code behaves in the same way as if CONFIG_NUMA
was not defined. qemu will still fail if the user specifies some other
policy, so that the user knows it.

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
---
 backends/hostmem.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Pavel Fedin Oct. 27, 2015, 12:53 p.m. UTC | #1
Sorry, guys, i forgot to add "v2" and simply sent the mail. Log is:

v1 => v2:
- Removed unnecessary parenthesis

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia

> -----Original Message-----
> From: qemu-devel-bounces+p.fedin=samsung.com@nongnu.org [mailto:qemu-devel-
> bounces+p.fedin=samsung.com@nongnu.org] On Behalf Of Pavel Fedin
> Sent: Tuesday, October 27, 2015 3:52 PM
> To: qemu-devel@nongnu.org
> Cc: 'Paolo Bonzini'; 'Eduardo Habkost'
> Subject: [Qemu-devel] [PATCH] backends/hostmem: Ignore ENOSYS while setting MPOL_DEFAULT
> 
> Currently hostmem backend fails if CONFIG_NUMA is enabled for the qemu
> (default), but NUMA is not supported by the kernel. This makes it
> impossible to use ivshmem in such configurations.
> 
> This patch fixes the problem by ignoring ENOSYS error if policy is set to
> MPOL_DEFAULT. This way the code behaves in the same way as if CONFIG_NUMA
> was not defined. qemu will still fail if the user specifies some other
> policy, so that the user knows it.
> 
> Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
> ---
>  backends/hostmem.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/backends/hostmem.c b/backends/hostmem.c
> index 41ba2af..94a4ac0 100644
> --- a/backends/hostmem.c
> +++ b/backends/hostmem.c
> @@ -313,9 +313,11 @@ host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
>          assert(maxnode <= MAX_NODES);
>          if (mbind(ptr, sz, backend->policy,
>                    maxnode ? backend->host_nodes : NULL, maxnode + 1, flags)) {
> -            error_setg_errno(errp, errno,
> +            if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) {
> +                error_setg_errno(errp, errno,
>                               "cannot bind memory to host NUMA nodes");
> -            return;
> +                return;
> +            }
>          }
>  #endif
>          /* Preallocate memory after the NUMA policy has been instantiated.
> --
> 1.9.5.msysgit.0
>
diff mbox

Patch

diff --git a/backends/hostmem.c b/backends/hostmem.c
index 41ba2af..94a4ac0 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -313,9 +313,11 @@  host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
         assert(maxnode <= MAX_NODES);
         if (mbind(ptr, sz, backend->policy,
                   maxnode ? backend->host_nodes : NULL, maxnode + 1, flags)) {
-            error_setg_errno(errp, errno,
+            if (backend->policy != MPOL_DEFAULT || errno != ENOSYS) {
+                error_setg_errno(errp, errno,
                              "cannot bind memory to host NUMA nodes");
-            return;
+                return;
+            }
         }
 #endif
         /* Preallocate memory after the NUMA policy has been instantiated.