Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
staging
rpms
libguestfs
Commits
60032dc6
Commit
60032dc6
authored
Aug 09, 2022
by
Rocky Automation
📺
Browse files
import libguestfs-1.46.1-4.el9_0
parent
05466244
Changes
2
Hide whitespace changes
Inline
Side-by-side
SOURCES/0014-lib-Disable-5-level-page-tables-when-using-cpu-max.patch
0 → 100644
View file @
60032dc6
From 06cf41cdddfde07871a7f7033ba8c5ccc184a1fb Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 12 May 2022 08:36:37 +0100
Subject: [PATCH] lib: Disable 5-level page tables when using -cpu max
In https://bugzilla.redhat.com/show_bug.cgi?id=2082806 we've been
tracking an insidious qemu bug which intermittently prevents the
libguestfs appliance from starting. The symptoms are that SeaBIOS
starts and displays its messages, but the kernel isn't reached. We
found that the kernel does in fact start, but when it tries to set up
page tables and jump to protected mode it gets a triple fault which
causes the emulated CPU in qemu to reset (qemu exits).
This seems to only affect TCG (not KVM).
Yesterday I found that this is caused by using -cpu max which enables
the "la57" feature (5-level page tables[0]), and that we can make the
problem go away using -cpu max,la57=off. Note that I still don't
fully understand the qemu bug, so this is only a workaround.
I chose to disable 5-level page tables for both TCG and KVM, partly to
make the patch simpler, and partly because I guess it's not a feature
(ie.
57 bit linear addresses) that is useful for the libguestfs
appliance case, where we have limited physical memory and no need to
run any programs with huge address spaces.
I tested this by running both the direct & libvirt paths overnight. I
expect that this patch will fail with old qemu/libvirt which doesn't
understand the "la57" feature, but this is only intended as a
temporary workaround.
[0] Article about 5-level page tables as background:
https://lwn.net/Articles/717293/
Thanks: Laszlo Ersek
Fixes: https://answers.launchpad.net/ubuntu/+source/libguestfs/+question/701625
Acked-by: Laszlo Ersek <lersek@redhat.com>
(cherry
picked from commit 59d7e6e017b7de79bcb60e1180e15303f1e7dae8)
---
lib/launch-direct.c | 15 +++++++++++++--
lib/launch-libvirt.c | 7 +++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/lib/launch-direct.c b/lib/launch-direct.c
index 4f038f4f0..e7c22fbef 100644
--- a/lib/launch-direct.c
+++ b/lib/launch-direct.c
@@ -554,8 +554,19 @@
launch_direct (guestfs_h *g, void *datav, const char *arg)
} end_list ();
cpu_model = guestfs_int_get_cpu_model (has_kvm && !force_tcg);
- if (cpu_model)
- arg ("-cpu", cpu_model);
+ if (cpu_model) {
+#if defined(__x86_64__)
+ /* Temporary workaround for RHBZ#2082806 */
+ if (STREQ (cpu_model, "max")) {
+ start_list ("-cpu") {
+ append_list (cpu_model);
+ append_list ("la57=off");
+ } end_list ();
+ }
+ else
+#endif
+ arg ("-cpu", cpu_model);
+ }
if (g->smp > 1)
arg_format ("-smp", "%d", g->smp);
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index cc714c02e..9e32c94cf 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1185,6 +1185,13 @@
construct_libvirt_xml_cpu (guestfs_h *g,
else if (STREQ (cpu_model, "max")) {
/* https://bugzilla.redhat.com/show_bug.cgi?id=1935572#c11 */
attribute ("mode", "maximum");
+#if defined(__x86_64__)
+ /* Temporary workaround for RHBZ#2082806 */
+ start_element ("feature") {
+ attribute ("policy", "disable");
+ attribute ("name", "la57");
+ } end_element ();
+#endif
}
else
single_element ("model", cpu_model);
--
2.31.1
SPECS/libguestfs.spec
View file @
60032dc6
...
...
@@ -57,7 +57,7 @@ Summary: Access and modify virtual machine disk images
Name
:
libguestfs
Epoch
:
1
Version
:
1.46.1
Release
:
3
%{?
dist
}.
rocky
Release
:
4
%{?
dist
}.
rocky
License
:
LGPLv2
+
#
Build
only
for
architectures
that
have
a
kernel
...
...
@@ -108,7 +108,8 @@ Patch0010: 0010-RHEL-Remove-User-Mode-Linux-RHBZ-1144197.patch
Patch0011
:
0011
-
RHEL
-
Reject
-
use
-
of
-
libguestfs
-
winsupport
-
features
-
ex
.
patch
Patch0012
:
0012
-
RHEL
-
Create
-
etc
-
crypto
-
policies
-
back
-
ends
-
opensslcnf
.
patch
Patch0013
:
0013
-
daemon
-
rpm
-
c
.
c
-
Disable
-
signature
-
checking
-
in
-
librpm
.
patch
Patch14
:
0001
-
Add
-
ROCKY
-
to
-
list
-
of
-
REDHAT
-
distros
.
patch
Patch0014
:
0014
-
lib
-
Disable
-
5
-
level
-
page
-
tables
-
when
-
using
-
cpu
-
max
.
patch
Patch15
:
0001
-
Add
-
ROCKY
-
to
-
list
-
of
-
REDHAT
-
distros
.
patch
%
if
0
%{
patches_touch_autotools
}
BuildRequires
:
autoconf
,
automake
,
libtool
,
gettext
-
devel
...
...
@@ -1148,9 +1149,13 @@ rm ocaml/html/.gitignore
%
changelog
*
Fri
May
20
2022
Release
Engineering
<
releng
@
rockylinux
.
org
>
-
1.46.1
-
3
.
rocky
*
Tue
Aug
09
2022
Release
Engineering
<
releng
@
rockylinux
.
org
>
-
1.46.1
-
4
.
rocky
-
Add
ROCKY
to
list
of
REDHAT
distros
*
Sun
May
15
2022
Richard
W
.
M
.
Jones
<
rjones
@
redhat
.
com
>
-
1
:
1.46.1
-
4
-
Disable
5
-
level
page
tables
when
using
-
cpu
max
resolves
:
rhbz
#
2085527
*
Thu
Mar
17
2022
Richard
W
.
M
.
Jones
<
rjones
@
redhat
.
com
>
-
1
:
1.46.1
-
3
-
Disable
signature
checking
in
librpm
resolves
:
rhbz
#
2064182
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment