|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xc Python ext lib: Xen 4.6 Unable to start a 2T guest without OverflowError
On Tue, Dec 23, 2014 at 02:04:28PM -0500, Cathy Avery wrote:
> Starting a vm with memory over 2T resulted in an overflow error.
>
> memory = 2097152 defined as number of megabytes returns the error
> "OverflowError: signed integer is greater than maximum"
>
> The error is the result of the python extension argument translator
> defining max_memkb as a signed int instead of an unsigned int.
> So PyArg_ParseTuple(args, "ii", &dom, &maxmem_kb) overflowed by one with
> 2147483648 kb.
>
> The other issue is that max_memkb is defined as uint64_t in the subsequent
> domctl target api so the xc lib and its python C extension should use
> uint64_t as well.
>
> /* XEN_DOMCTL_max_mem */
> struct xen_domctl_max_mem {
> /* IN variables. */
> uint64_aligned_t max_memkb;
> };
>
> Signed-off-by: Cathy Avery <cathy.avery@xxxxxxxxxx>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
> tools/libxc/include/xenctrl.h | 2 +-
> tools/libxc/xc_domain.c | 2 +-
> tools/python/xen/lowlevel/xc/xc.c | 4 ++--
> 3 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
> index 0ad8b8d..1b5c622 100644
> --- a/tools/libxc/include/xenctrl.h
> +++ b/tools/libxc/include/xenctrl.h
> @@ -1253,7 +1253,7 @@ int xc_getcpuinfo(xc_interface *xch, int max_cpus,
>
> int xc_domain_setmaxmem(xc_interface *xch,
> uint32_t domid,
> - unsigned int max_memkb);
> + uint64_t max_memkb);
>
> int xc_domain_set_memmap_limit(xc_interface *xch,
> uint32_t domid,
> diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
> index b864872..2c0fc9f 100644
> --- a/tools/libxc/xc_domain.c
> +++ b/tools/libxc/xc_domain.c
> @@ -630,7 +630,7 @@ int xc_shadow_control(xc_interface *xch,
>
> int xc_domain_setmaxmem(xc_interface *xch,
> uint32_t domid,
> - unsigned int max_memkb)
> + uint64_t max_memkb)
> {
> DECLARE_DOMCTL;
> domctl.cmd = XEN_DOMCTL_max_mem;
> diff --git a/tools/python/xen/lowlevel/xc/xc.c
> b/tools/python/xen/lowlevel/xc/xc.c
> index f83e33d..7a5d36e 100644
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -1658,9 +1658,9 @@ static PyObject *pyxc_sched_credit2_domain_get(XcObject
> *self, PyObject *args)
> static PyObject *pyxc_domain_setmaxmem(XcObject *self, PyObject *args)
> {
> uint32_t dom;
> - unsigned int maxmem_kb;
> + uint64_t maxmem_kb;
>
> - if (!PyArg_ParseTuple(args, "ii", &dom, &maxmem_kb))
> + if (!PyArg_ParseTuple(args, "ik", &dom, &maxmem_kb))
> return NULL;
>
> if (xc_domain_setmaxmem(self->xc_handle, dom, maxmem_kb) != 0)
> --
> 1.7.1
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |