|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: remove LIBXL_MAXMEM_CONSTANT
On Wed, 25 Feb 2015, Don Slutz wrote:
> On 02/25/15 10:07, Stefano Stabellini wrote:
> > LIBXL_MAXMEM_CONSTANT is used to increase the maxmem setting for a
> > domain by a constant amount. As it is not clear the reason why we should
> > be doing this, remove the constant.
> >
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > CC: mlatimer@xxxxxxxx
> > CC: ian.campbell@xxxxxxxxxx
> > ---
>
> I think that some sort of link to commit 901230f in QEMU:
>
> ----
> commit 901230fd8ce053cc21312a2eca2f3ba9f1d103f2
> Author: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> Date: Wed Dec 3 08:15:19 2014 -0500
>
> xen-hvm: increase maxmem before calling xc_domain_populate_physmap
>
> Increase maxmem before calling xc_domain_populate_physmap_exact to
> avoid the risk of running out of guest memory. This way we can also
> avoid complex memory calculations in libxl at domain construction
> time.
>
> This patch fixes an abort() when assigning more than 4 NICs to a VM.
>
> upstream-commit-id: c1d322e6048796296555dd36fdd102d7fa2f50bf
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx>
> ----
>
> Because after this patch and without a "correct" QEMU, the number of
> e1000 NICs a guest can use is less then 4.
That is true, in fact is not even a single emulated NIC in my tests.
I can either ask for a backport of
c1d322e6048796296555dd36fdd102d7fa2f50bf "xen-hvm: increase maxmem
before calling xc_domain_populate_physmap" to all QEMU stable branches,
or we just have to keep this around for now and maybe just add a comment
on why it is needed.
> > tools/libxl/libxl.c | 9 ++++-----
> > tools/libxl/libxl_dom.c | 3 +--
> > tools/libxl/libxl_internal.h | 1 -
> > 3 files changed, 5 insertions(+), 8 deletions(-)
> >
> > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> > index b9a1941..9556a92 100644
> > --- a/tools/libxl/libxl.c
> > +++ b/tools/libxl/libxl.c
> > @@ -4572,11 +4572,11 @@ int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t
> > domid, uint32_t max_memkb)
> > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "memory_static_max must be
> > greater than or or equal to memory_dynamic_max\n");
> > goto out;
> > }
> > - rc = xc_domain_setmaxmem(ctx->xch, domid, max_memkb +
> > LIBXL_MAXMEM_CONSTANT);
> > + rc = xc_domain_setmaxmem(ctx->xch, domid, max_memkb);
> > if (rc != 0) {
> > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
> > "xc_domain_setmaxmem domid=%d memkb=%d failed "
> > - "rc=%d\n", domid, max_memkb + LIBXL_MAXMEM_CONSTANT, rc);
> > + "rc=%d\n", domid, max_memkb, rc);
> > goto out;
> > }
> >
> > @@ -4796,12 +4796,11 @@ retry_transaction:
> >
> > if (enforce) {
> > memorykb = new_target_memkb + videoram;
> > - rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb +
> > - LIBXL_MAXMEM_CONSTANT);
> > + rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb);
> > if (rc != 0) {
> > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
> > "xc_domain_setmaxmem domid=%d memkb=%d failed "
> > - "rc=%d\n", domid, memorykb + LIBXL_MAXMEM_CONSTANT,
> > rc);
> > + "rc=%d\n", domid, memorykb, rc);
> > abort_transaction = 1;
> > goto out;
> > }
> > diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
> > index a16d4a1..923ba5c 100644
> > --- a/tools/libxl/libxl_dom.c
> > +++ b/tools/libxl/libxl_dom.c
> > @@ -408,8 +408,7 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid,
> > }
> > }
> >
> > - if (xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb +
> > - LIBXL_MAXMEM_CONSTANT) < 0) {
> > + if (xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb) < 0) {
> > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "Couldn't set max memory");
> > return ERROR_FAIL;
> > }
> > diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> > index 934465a..d5c5b68 100644
> > --- a/tools/libxl/libxl_internal.h
> > +++ b/tools/libxl/libxl_internal.h
> > @@ -89,7 +89,6 @@
> > #define LIBXL_QEMU_BODGE_TIMEOUT 2
> > #define LIBXL_XENCONSOLE_LIMIT 1048576
> > #define LIBXL_XENCONSOLE_PROTOCOL "vt100"
> > -#define LIBXL_MAXMEM_CONSTANT 1024
> > #define LIBXL_PV_EXTRA_MEMORY 1024
> > #define LIBXL_HVM_EXTRA_MEMORY 2048
> > #define LIBXL_MIN_DOM0_MEM (128*1024)
> >
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |