Accepting request 777725 from Virtualization

- Fix xenfv migration from xen host with pre-v4.0 qemu. We had
  previously dropped a similar patch, but have decided that for now
  we need to go with this type of solution (bsc#1159755)
  hw-i386-disable-smbus-migration-for-xenf.patch
- Avoid query-cpu-model-expansion crashed qemu when using
  machine type none, patch is queued in upstream now, will
  update commit id later (bsc#1159443)
  target-arm-monitor-query-cpu-model-expan.patch
- BuildRequire pkgconfig(libudev) instead of libudev-devel: Allow
  OBS to shortcut through -mini flavors.

OBS-URL: https://build.opensuse.org/request/show/777725
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qemu?expand=0&rev=169
This commit is contained in:
Dominique Leuenberger 2020-02-24 14:50:10 +00:00 committed by Git OBS Bridge
commit 747121579d
6 changed files with 129 additions and 4 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:762feed085945e5748ef0337546b3ca80faf002511b7287457fa633931af3785
size 73408
oid sha256:82d7a2dc700824ec862b71dbb82aba7bf7ec425384f8176dfd224ae9f777a521
size 83524

View File

@ -0,0 +1,45 @@
From: Olaf Hering <olaf@aepfle.de>
Date: Wed, 19 Feb 2020 15:15:15 +0100
Subject: hw/i386: disable smbus migration for xenfv
References: bsc#1159755
With commit 7fccf2a06890e3bc3b30e29827ad3fb93fe88fea a new member
smbus_no_migration_support was added, and enabled in two places.
With commit 4ab2f2a8aabfea95cc53c64e13b3f67960b27fdf the vmstate_acpi
got new elements, which are conditionally filled. As a result, an
incoming migration expected smbus related data unless smbus migration
was disabled for a given MachineClass.
Since commit 7fccf2a06890e3bc3b30e29827ad3fb93fe88fea forgot to handle
xenfv, live migration to receiving hosts using qemu-4.0 and later is broken.
Adjust 'xenfv' to stay compatible with with 'pc-i440fx-3.1':
- the toolstack can not use '-M pc-i440fx-3.1,accel=xen -device xen-platform'
because this would move the PCI device from 00:02.0 to 00:04.0
- disable pvh.
Running PVH may require dedicated device_model_args= options which select
'pc-i440fx-4.x'
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hw/i386/pc_piix.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index d760d3589607daf4997ea76854c4..7bf1021200a3baa06a58fa36c430 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -1043,6 +1043,11 @@ DEFINE_PC_MACHINE(isapc, "isapc", pc_init_isa,
#ifdef CONFIG_XEN
static void xenfv_machine_options(MachineClass *m)
{
+ /* compat with pc_i440fx_3_1_machine_options */
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
+ pcmc->do_not_add_smb_acpi = true;
+ m->smbus_no_migration_support = true;
+ pcmc->pvh_enabled = false; /* FIXME */
m->desc = "Xen Fully-virtualized PC";
m->max_cpus = HVM_MAX_VCPUS;
m->default_machine_opts = "accel=xen";

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Wed Feb 19 18:48:47 UTC 2020 - Bruce Rogers <brogers@suse.com>
- Fix xenfv migration from xen host with pre-v4.0 qemu. We had
previously dropped a similar patch, but have decided that for now
we need to go with this type of solution (bsc#1159755)
hw-i386-disable-smbus-migration-for-xenf.patch
-------------------------------------------------------------------
Tue Feb 4 04:01:19 UTC 2020 - Liang Yan <lyan@suse.com>
- Avoid query-cpu-model-expansion crashed qemu when using
machine type none, patch is queued in upstream now, will
update commit id later (bsc#1159443)
target-arm-monitor-query-cpu-model-expan.patch
-------------------------------------------------------------------
Mon Feb 3 16:00:26 UTC 2020 - Dominique Leuenberger <dimstar@opensuse.org>
- BuildRequire pkgconfig(libudev) instead of libudev-devel: Allow
OBS to shortcut through -mini flavors.
-------------------------------------------------------------------
Tue Jan 28 16:24:31 UTC 2020 - Bruce Rogers <brogers@suse.com>

View File

@ -219,6 +219,8 @@ Patch00088: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00089: roms-Makefile-enable-cross-compile-for-b.patch
Patch00090: iscsi-Cap-block-count-from-GET-LBA-STATU.patch
Patch00091: block-backup-fix-memory-leak-in-bdrv_bac.patch
Patch00092: target-arm-monitor-query-cpu-model-expan.patch
Patch00093: hw-i386-disable-smbus-migration-for-xenf.patch
# Patches applied in roms/seabios/:
Patch01000: seabios-use-python2-explicitly-as-needed.patch
Patch01001: seabios-switch-to-python3-as-needed.patch
@ -349,9 +351,9 @@ BuildRequires: libSDL2_image-devel
BuildRequires: libseccomp-devel >= 2.3.0
BuildRequires: libspice-server-devel >= 0.12.5
BuildRequires: libssh-devel >= 0.8
BuildRequires: libudev-devel
BuildRequires: libusb-1_0-devel >= 1.0.13
BuildRequires: libvdeplug-devel
BuildRequires: pkgconfig(libudev)
%if 0%{?is_opensuse}
BuildRequires: lzfse-devel
%endif
@ -1017,6 +1019,8 @@ This package provides a service file for starting and stopping KSM.
%patch00089 -p1
%patch00090 -p1
%patch00091 -p1
%patch00092 -p1
%patch00093 -p1
%patch01000 -p1
%patch01001 -p1
%patch01002 -p1

View File

@ -236,9 +236,9 @@ BuildRequires: libSDL2_image-devel
BuildRequires: libseccomp-devel >= 2.3.0
BuildRequires: libspice-server-devel >= 0.12.5
BuildRequires: libssh-devel >= 0.8
BuildRequires: libudev-devel
BuildRequires: libusb-1_0-devel >= 1.0.13
BuildRequires: libvdeplug-devel
BuildRequires: pkgconfig(libudev)
%if 0%{?is_opensuse}
BuildRequires: lzfse-devel
%endif

View File

@ -0,0 +1,54 @@
From: Liang Yan <lyan@suse.com>
Date: Fri, 31 Jan 2020 14:54:06 -0500
Subject: target/arm/monitor: query-cpu-model-expansion crashed qemu when using
machine type none
References: bsc#1159443
Commit e19afd566781 mentioned that target-arm only supports queryable
cpu models 'max', 'host', and the current type when KVM is in use.
The logic works well until using machine type none.
For machine type none, cpu_type will be null if cpu option is not
set by command line, strlen(cpu_type) will terminate process.
So We add a check above it.
This won't affect i386 and s390x since they do not use current_cpu.
[LY: patch only queued in upstream, will update commit id later]
Signed-off-by: Liang Yan <lyan@suse.com>
---
target/arm/monitor.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/target/arm/monitor.c b/target/arm/monitor.c
index fa054f8a369c8221c8746b8d8046..782085ca2120b243584f7c058ef8 100644
--- a/target/arm/monitor.c
+++ b/target/arm/monitor.c
@@ -136,17 +136,20 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
}
if (kvm_enabled()) {
- const char *cpu_type = current_machine->cpu_type;
- int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
bool supported = false;
if (!strcmp(model->name, "host") || !strcmp(model->name, "max")) {
/* These are kvmarm's recommended cpu types */
supported = true;
- } else if (strlen(model->name) == len &&
- !strncmp(model->name, cpu_type, len)) {
- /* KVM is enabled and we're using this type, so it works. */
- supported = true;
+ } else if (current_machine->cpu_type) {
+ const char *cpu_type = current_machine->cpu_type;
+ int len = strlen(cpu_type) - strlen(ARM_CPU_TYPE_SUFFIX);
+
+ if (strlen(model->name) == len &&
+ !strncmp(model->name, cpu_type, len)) {
+ /* KVM is enabled and we're using this type, so it works. */
+ supported = true;
+ }
}
if (!supported) {
error_setg(errp, "We cannot guarantee the CPU type '%s' works "