Re: [Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-16 Thread Wei Liu
Both patches applied.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-15 Thread George Dunlap
Callers to xc_cpupool_create() can either request a specific pool id,
or request that Xen do it for them.  But at the moment, the
"automatic" selection is indicated by using a magic value, 0.  This is
undesirable both because it doesn't obviously have meaning, but also
because '0' is a valid cpupool (albeit one which at the moment can't
be changed).

Introduce a constant, XC_CPUPOOL_POOLID_ANY, to indicate this instead.
Have it be the default for the python bindings.

Manually translate it, even though it's the same underlying value,
because we don't yet have a relaible way of enforcing that these
values are the same.

Signed-off-by: George Dunlap 
Reviewed-by: Dario Faggioli 
Acked-by: Wei Liu 
---
v2: Rebase over libxl.c-split series

CC: Ian Jackson 
CC: Wei Liu 
CC: Juergen Gross 
CC: Dario Faggioli 
CC: Ronald Rojas 
---
 tools/libxc/include/xenctrl.h | 2 ++
 tools/libxc/xc_cpupool.c  | 2 +-
 tools/libxl/libxl_cpupool.c   | 7 ++-
 tools/python/xen/lowlevel/xc/xc.c | 2 +-
 4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index 85d7fe5..927e373 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -1052,6 +1052,8 @@ typedef struct xc_cpupoolinfo {
 xc_cpumap_t cpumap;
 } xc_cpupoolinfo_t;
 
+#define XC_CPUPOOL_POOLID_ANY 0x
+
 /**
  * Create a new cpupool.
  *
diff --git a/tools/libxc/xc_cpupool.c b/tools/libxc/xc_cpupool.c
index 70011d1..fbd8cc9 100644
--- a/tools/libxc/xc_cpupool.c
+++ b/tools/libxc/xc_cpupool.c
@@ -43,7 +43,7 @@ int xc_cpupool_create(xc_interface *xch,
 
 sysctl.cmd = XEN_SYSCTL_cpupool_op;
 sysctl.u.cpupool_op.op = XEN_SYSCTL_CPUPOOL_OP_CREATE;
-sysctl.u.cpupool_op.cpupool_id = (*ppoolid == 0) ?
+sysctl.u.cpupool_op.cpupool_id = (*ppoolid == XC_CPUPOOL_POOLID_ANY) ?
 XEN_SYSCTL_CPUPOOL_PAR_ANY : *ppoolid;
 sysctl.u.cpupool_op.sched_id = sched_id;
 if ( (err = do_sysctl_save(xch, &sysctl)) != 0 )
diff --git a/tools/libxl/libxl_cpupool.c b/tools/libxl/libxl_cpupool.c
index f3d22b1..0ff8724 100644
--- a/tools/libxl/libxl_cpupool.c
+++ b/tools/libxl/libxl_cpupool.c
@@ -137,6 +137,10 @@ int libxl_cpupool_create(libxl_ctx *ctx, const char *name,
 int i;
 xs_transaction_t t;
 char *uuid_string;
+uint32_t xcpoolid;
+
+/* Zero means "choose a poolid for me" */
+xcpoolid = (*poolid) ? (*poolid) : XC_CPUPOOL_POOLID_ANY;
 
 uuid_string = libxl__uuid2string(gc, *uuid);
 if (!uuid_string) {
@@ -144,12 +148,13 @@ int libxl_cpupool_create(libxl_ctx *ctx, const char *name,
 return ERROR_NOMEM;
 }
 
-rc = xc_cpupool_create(ctx->xch, poolid, sched);
+rc = xc_cpupool_create(ctx->xch, &xcpoolid, sched);
 if (rc) {
 LOGEV(ERROR, rc, "Could not create cpupool");
 GC_FREE;
 return ERROR_FAIL;
 }
+*poolid = xcpoolid;
 
 libxl_for_each_bit(i, cpumap)
 if (libxl_bitmap_test(&cpumap, i)) {
diff --git a/tools/python/xen/lowlevel/xc/xc.c 
b/tools/python/xen/lowlevel/xc/xc.c
index 39be1d5..9e93d49 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -1715,7 +1715,7 @@ static PyObject *pyxc_cpupool_create(XcObject *self,
  PyObject *args,
  PyObject *kwds)
 {
-uint32_t cpupool = 0, sched = XEN_SCHEDULER_CREDIT;
+uint32_t cpupool = XC_CPUPOOL_POOLID_ANY, sched = XEN_SCHEDULER_CREDIT;
 
 static char *kwd_list[] = { "pool", "sched", NULL };
 
-- 
2.1.4


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-14 Thread Wei Liu
These two patches don't apply anymore. Please rebase.

Wei.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-09 Thread Wei Liu
On Wed, Feb 08, 2017 at 02:51:45PM +, George Dunlap wrote:
> Callers to xc_cpupool_create() can either request a specific pool id,
> or request that Xen do it for them.  But at the moment, the
> "automatic" selection is indicated by using a magic value, 0.  This is
> undesirable both because it doesn't obviously have meaning, but also
> because '0' is a valid cpupool (albeit one which at the moment can't
> be changed).
> 
> Introduce a constant, XC_CPUPOOL_POOLID_ANY, to indicate this instead.
> Have it be the default for the python bindings.
> 
> Manually translate it, even though it's the same underlying value,
> because we don't yet have a relaible way of enforcing that these
> values are the same.
> 
> Signed-off-by: George Dunlap 
> ---
> 
> I realize this is somewhat of a bike shed, but I want to avoid
> propagating this "magic number" interface into the xenlight bindings
> if I can.
> 
> Also, at some point we might use the IDL to enforce that the libxl
> values are identical to the Xen values, at which point we can just
> pass the value in directly.
> 

Acked-by: Wei Liu 

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-08 Thread Dario Faggioli
On Wed, 2017-02-08 at 14:51 +, George Dunlap wrote:
> Callers to xc_cpupool_create() can either request a specific pool id,
> or request that Xen do it for them.  But at the moment, the
> "automatic" selection is indicated by using a magic value, 0.  This
> is
> undesirable both because it doesn't obviously have meaning, but also
> because '0' is a valid cpupool (albeit one which at the moment can't
> be changed).
> 
> Introduce a constant, XC_CPUPOOL_POOLID_ANY, to indicate this
> instead.
> Have it be the default for the python bindings.
> 
> Manually translate it, even though it's the same underlying value,
> because we don't yet have a relaible way of enforcing that these
> values are the same.
> 
> Signed-off-by: George Dunlap 
>
Reviewed-by: Dario Faggioli 

Regards,
Dario
-- 
<> (Raistlin Majere)
-
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

signature.asc
Description: This is a digitally signed message part
___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH 1/2] tools/libxc: Introduce XC_CPUPOOL_POOLID_ANY

2017-02-08 Thread George Dunlap
Callers to xc_cpupool_create() can either request a specific pool id,
or request that Xen do it for them.  But at the moment, the
"automatic" selection is indicated by using a magic value, 0.  This is
undesirable both because it doesn't obviously have meaning, but also
because '0' is a valid cpupool (albeit one which at the moment can't
be changed).

Introduce a constant, XC_CPUPOOL_POOLID_ANY, to indicate this instead.
Have it be the default for the python bindings.

Manually translate it, even though it's the same underlying value,
because we don't yet have a relaible way of enforcing that these
values are the same.

Signed-off-by: George Dunlap 
---

I realize this is somewhat of a bike shed, but I want to avoid
propagating this "magic number" interface into the xenlight bindings
if I can.

Also, at some point we might use the IDL to enforce that the libxl
values are identical to the Xen values, at which point we can just
pass the value in directly.

CC: Ian Jackson 
CC: Wei Liu 
CC: Juergen Gross 
CC: Dario Faggioli 
CC: Ronald Rojas 
---
 tools/libxc/include/xenctrl.h | 2 ++
 tools/libxc/xc_cpupool.c  | 2 +-
 tools/libxl/libxl.c   | 9 +++--
 tools/python/xen/lowlevel/xc/xc.c | 2 +-
 4 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index 85d7fe5..927e373 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -1052,6 +1052,8 @@ typedef struct xc_cpupoolinfo {
 xc_cpumap_t cpumap;
 } xc_cpupoolinfo_t;
 
+#define XC_CPUPOOL_POOLID_ANY 0x
+
 /**
  * Create a new cpupool.
  *
diff --git a/tools/libxc/xc_cpupool.c b/tools/libxc/xc_cpupool.c
index 70011d1..fbd8cc9 100644
--- a/tools/libxc/xc_cpupool.c
+++ b/tools/libxc/xc_cpupool.c
@@ -43,7 +43,7 @@ int xc_cpupool_create(xc_interface *xch,
 
 sysctl.cmd = XEN_SYSCTL_cpupool_op;
 sysctl.u.cpupool_op.op = XEN_SYSCTL_CPUPOOL_OP_CREATE;
-sysctl.u.cpupool_op.cpupool_id = (*ppoolid == 0) ?
+sysctl.u.cpupool_op.cpupool_id = (*ppoolid == XC_CPUPOOL_POOLID_ANY) ?
 XEN_SYSCTL_CPUPOOL_PAR_ANY : *ppoolid;
 sysctl.u.cpupool_op.sched_id = sched_id;
 if ( (err = do_sysctl_save(xch, &sysctl)) != 0 )
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index d400fa2..51325d9 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -6285,19 +6285,24 @@ int libxl_cpupool_create(libxl_ctx *ctx, const char 
*name,
 int i;
 xs_transaction_t t;
 char *uuid_string;
+uint32_t xcpoolid;
+
+/* Zero means "choose a poolid for me" */
+xcpoolid = (*poolid) ? (*poolid) : XC_CPUPOOL_POOLID_ANY;
 
 uuid_string = libxl__uuid2string(gc, *uuid);
 if (!uuid_string) {
 GC_FREE;
 return ERROR_NOMEM;
 }
-
-rc = xc_cpupool_create(ctx->xch, poolid, sched);
+
+rc = xc_cpupool_create(ctx->xch, &xcpoolid, sched);
 if (rc) {
 LOGEV(ERROR, rc, "Could not create cpupool");
 GC_FREE;
 return ERROR_FAIL;
 }
+*poolid = xcpoolid;
 
 libxl_for_each_bit(i, cpumap)
 if (libxl_bitmap_test(&cpumap, i)) {
diff --git a/tools/python/xen/lowlevel/xc/xc.c 
b/tools/python/xen/lowlevel/xc/xc.c
index 39be1d5..9e93d49 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -1715,7 +1715,7 @@ static PyObject *pyxc_cpupool_create(XcObject *self,
  PyObject *args,
  PyObject *kwds)
 {
-uint32_t cpupool = 0, sched = XEN_SCHEDULER_CREDIT;
+uint32_t cpupool = XC_CPUPOOL_POOLID_ANY, sched = XEN_SCHEDULER_CREDIT;
 
 static char *kwd_list[] = { "pool", "sched", NULL };
 
-- 
2.1.4


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel