According to comments (and experiments) qemu-xen cannot handle memory
reolcation done by hvmloader. The code was already disabled when running
qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when
adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to
be consistent in this regard.
Reported-by: Neowutran <xen@neowutran.ovh>
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
tools/libs/light/libxl_dm.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 14b593110f7c..ed620a9d8e14 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -2432,6 +2432,16 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss)
"%s",
libxl_bios_type_to_string(guest_config->b_info.u.hvm.bios));
}
+ /* Disable relocating memory to make the MMIO hole larger
+ * unless we're running qemu-traditional and vNUMA is not
+ * configured. */
+ libxl__xs_printf(gc, XBT_NULL,
+ libxl__sprintf(gc, "%s/hvmloader/allow-memory-relocate",
+ libxl__xs_get_dompath(gc, guest_domid)),
+ "%d",
+ guest_config->b_info.device_model_version
+ == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL &&
+ !libxl__vnuma_configured(&guest_config->b_info));
ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid);
if (ret<0) {
LOGED(ERROR, guest_domid, "setting target domain %d -> %d",
--
2.41.0
On 27/12/2023 2:35 am, Marek Marczykowski-Górecki wrote: > According to comments (and experiments) qemu-xen cannot handle memory > reolcation done by hvmloader. The code was already disabled when running > qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when > adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to > be consistent in this regard. > > Reported-by: Neowutran <xen@neowutran.ovh> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> It turns out that it's unconditionally clobbered in XenServer too. https://github.com/xapi-project/xen-api/blob/53d2e8cdff76ca6805c7018948a9c414b9ac7c72/ocaml/xenopsd/scripts/qemu-wrapper#L146 Not that I'm surprised - this falls squarely into guest-physmap mess which is broken in several well-documented ways already. ~Andrew
On Tue, Dec 26, 2023 at 11:49 PM Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> wrote: > > According to comments (and experiments) qemu-xen cannot handle memory > reolcation done by hvmloader. The code was already disabled when running > qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when > adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to > be consistent in this regard. > > Reported-by: Neowutran <xen@neowutran.ovh> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Reviewed-by: Jason Andryuk <jandryuk@gmail.com> Thanks, Jason
On Wed, Dec 27, 2023 at 07:18:12PM -0500, Jason Andryuk wrote: > On Tue, Dec 26, 2023 at 11:49 PM Marek Marczykowski-Górecki > <marmarek@invisiblethingslab.com> wrote: > > > > According to comments (and experiments) qemu-xen cannot handle memory > > reolcation done by hvmloader. The code was already disabled when running > > qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when > > adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to > > be consistent in this regard. > > > > Reported-by: Neowutran <xen@neowutran.ovh> > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> > > Reviewed-by: Jason Andryuk <jandryuk@gmail.com> Acked-by: Anthony PERARD <anthony.perard@citrix.com> Thanks, -- Anthony PERARD
On 2023-12-27 03:12, Marek Marczykowski-Górecki wrote: > According to comments (and experiments) qemu-xen cannot handle memory > reolcation done by hvmloader. The code was already disabled when running > qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when > adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to > be consistent in this regard. > > Reported-by: Neowutran <xen@neowutran.ovh> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> > --- > tools/libs/light/libxl_dm.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c > index 14b593110f7c..ed620a9d8e14 100644 > --- a/tools/libs/light/libxl_dm.c > +++ b/tools/libs/light/libxl_dm.c > @@ -2432,6 +2432,16 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) > "%s", > libxl_bios_type_to_string(guest_config->b_info.u.hvm.bios)); > } > + /* Disable relocating memory to make the MMIO hole larger > + * unless we're running qemu-traditional and vNUMA is not > + * configured. */ > + libxl__xs_printf(gc, XBT_NULL, > + libxl__sprintf(gc, "%s/hvmloader/allow-memory-relocate", > + libxl__xs_get_dompath(gc, guest_domid)), > + "%d", > + guest_config->b_info.device_model_version > + == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && > + !libxl__vnuma_configured(&guest_config->b_info)); > ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid); > if (ret<0) { > LOGED(ERROR, guest_domid, "setting target domain %d -> %d", > -- > 2.41.0 Seems to work as expected Thanks, Neowutran
On 27.12.2023 17:54, Neowutran wrote: > On 2023-12-27 03:12, Marek Marczykowski-Górecki wrote: >> According to comments (and experiments) qemu-xen cannot handle memory >> reolcation done by hvmloader. The code was already disabled when running >> qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when >> adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to >> be consistent in this regard. >> >> Reported-by: Neowutran <xen@neowutran.ovh> >> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> >> --- >> tools/libs/light/libxl_dm.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >> diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c >> index 14b593110f7c..ed620a9d8e14 100644 >> --- a/tools/libs/light/libxl_dm.c >> +++ b/tools/libs/light/libxl_dm.c >> @@ -2432,6 +2432,16 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss) >> "%s", >> libxl_bios_type_to_string(guest_config->b_info.u.hvm.bios)); >> } >> + /* Disable relocating memory to make the MMIO hole larger >> + * unless we're running qemu-traditional and vNUMA is not >> + * configured. */ >> + libxl__xs_printf(gc, XBT_NULL, >> + libxl__sprintf(gc, "%s/hvmloader/allow-memory-relocate", >> + libxl__xs_get_dompath(gc, guest_domid)), >> + "%d", >> + guest_config->b_info.device_model_version >> + == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && >> + !libxl__vnuma_configured(&guest_config->b_info)); >> ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid); >> if (ret<0) { >> LOGED(ERROR, guest_domid, "setting target domain %d -> %d", >> -- >> 2.41.0 > > Seems to work as expected May we translate this to Tested-by: ? Jan
© 2016 - 2024 Red Hat, Inc.