* Tue Jan 25 2022 Miroslav Rezanina <mrezanin@redhat.com> - 6.2.0-5
- kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch [bz#1945666] - kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch [bz#1945666] - kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch [bz#2036669] - Resolves: bz#1945666 (9.0: x86 machine types) - Resolves: bz#2036669 (DEVICE_DELETED event is not delivered for device frontend if -device is configured via JSON)
This commit is contained in:
parent
365a1410b6
commit
419d9c867b
130
kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch
Normal file
130
kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
From 005339f7deaee639c38d30e5bf2235c292ce3937 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||||
|
Date: Wed, 5 Jan 2022 12:38:47 +0000
|
||||||
|
Subject: [PATCH 3/3] softmmu: fix device deletion events with -device JSON
|
||||||
|
syntax
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-MergeRequest: 62: Fix hot unplug of devices created with -device JSON syntax
|
||||||
|
RH-Commit: [1/1] 980e505ba215b5f9324c107481c5bb257ae03f42 (kmwolf/centos-qemu-kvm)
|
||||||
|
RH-Bugzilla: 2036669
|
||||||
|
RH-Acked-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
RH-Acked-by: Jano Tomko <None>
|
||||||
|
|
||||||
|
The -device JSON syntax impl leaks a reference on the created
|
||||||
|
DeviceState instance. As a result when you hot-unplug the
|
||||||
|
device, the device_finalize method won't be called and thus
|
||||||
|
it will fail to emit the required DEVICE_DELETED event.
|
||||||
|
|
||||||
|
A 'json-cli' feature was previously added against the
|
||||||
|
'device_add' QMP command QAPI schema to indicated to mgmt
|
||||||
|
apps that -device supported JSON syntax. Given the hotplug
|
||||||
|
bug that feature flag is not usable for its purpose, so
|
||||||
|
we add a new 'json-cli-hotplug' feature to indicate the
|
||||||
|
-device supports JSON without breaking hotplug.
|
||||||
|
|
||||||
|
Fixes: 5dacda5167560b3af8eadbce5814f60ba44b467e
|
||||||
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/802
|
||||||
|
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
Message-Id: <20220105123847.4047954-2-berrange@redhat.com>
|
||||||
|
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
Tested-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
(cherry picked from commit 64b4529a432507ee84a924be69a03432639e87ba)
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
---
|
||||||
|
qapi/qdev.json | 5 ++++-
|
||||||
|
softmmu/vl.c | 4 +++-
|
||||||
|
tests/qtest/device-plug-test.c | 19 +++++++++++++++++++
|
||||||
|
3 files changed, 26 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/qapi/qdev.json b/qapi/qdev.json
|
||||||
|
index 69656b14df..26cd10106b 100644
|
||||||
|
--- a/qapi/qdev.json
|
||||||
|
+++ b/qapi/qdev.json
|
||||||
|
@@ -44,6 +44,9 @@
|
||||||
|
# @json-cli: If present, the "-device" command line option supports JSON
|
||||||
|
# syntax with a structure identical to the arguments of this
|
||||||
|
# command.
|
||||||
|
+# @json-cli-hotplug: If present, the "-device" command line option supports JSON
|
||||||
|
+# syntax without the reference counting leak that broke
|
||||||
|
+# hot-unplug
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
#
|
||||||
|
@@ -74,7 +77,7 @@
|
||||||
|
{ 'command': 'device_add',
|
||||||
|
'data': {'driver': 'str', '*bus': 'str', '*id': 'str'},
|
||||||
|
'gen': false, # so we can get the additional arguments
|
||||||
|
- 'features': ['json-cli'] }
|
||||||
|
+ 'features': ['json-cli', 'json-cli-hotplug'] }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @device_del:
|
||||||
|
diff --git a/softmmu/vl.c b/softmmu/vl.c
|
||||||
|
index d46b8fb4ab..b3829e2edd 100644
|
||||||
|
--- a/softmmu/vl.c
|
||||||
|
+++ b/softmmu/vl.c
|
||||||
|
@@ -2690,6 +2690,7 @@ static void qemu_create_cli_devices(void)
|
||||||
|
qemu_opts_foreach(qemu_find_opts("device"),
|
||||||
|
device_init_func, NULL, &error_fatal);
|
||||||
|
QTAILQ_FOREACH(opt, &device_opts, next) {
|
||||||
|
+ DeviceState *dev;
|
||||||
|
loc_push_restore(&opt->loc);
|
||||||
|
/*
|
||||||
|
* TODO Eventually we should call qmp_device_add() here to make sure it
|
||||||
|
@@ -2698,7 +2699,8 @@ static void qemu_create_cli_devices(void)
|
||||||
|
* from the start, so call qdev_device_add_from_qdict() directly for
|
||||||
|
* now.
|
||||||
|
*/
|
||||||
|
- qdev_device_add_from_qdict(opt->opts, true, &error_fatal);
|
||||||
|
+ dev = qdev_device_add_from_qdict(opt->opts, true, &error_fatal);
|
||||||
|
+ object_unref(OBJECT(dev));
|
||||||
|
loc_pop(&opt->loc);
|
||||||
|
}
|
||||||
|
rom_reset_order_override();
|
||||||
|
diff --git a/tests/qtest/device-plug-test.c b/tests/qtest/device-plug-test.c
|
||||||
|
index 559d47727a..ad79bd4c14 100644
|
||||||
|
--- a/tests/qtest/device-plug-test.c
|
||||||
|
+++ b/tests/qtest/device-plug-test.c
|
||||||
|
@@ -77,6 +77,23 @@ static void test_pci_unplug_request(void)
|
||||||
|
qtest_quit(qtest);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void test_pci_unplug_json_request(void)
|
||||||
|
+{
|
||||||
|
+ QTestState *qtest = qtest_initf(
|
||||||
|
+ "-device '{\"driver\": \"virtio-mouse-pci\", \"id\": \"dev0\"}'");
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Request device removal. As the guest is not running, the request won't
|
||||||
|
+ * be processed. However during system reset, the removal will be
|
||||||
|
+ * handled, removing the device.
|
||||||
|
+ */
|
||||||
|
+ device_del(qtest, "dev0");
|
||||||
|
+ system_reset(qtest);
|
||||||
|
+ wait_device_deleted_event(qtest, "dev0");
|
||||||
|
+
|
||||||
|
+ qtest_quit(qtest);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void test_ccw_unplug(void)
|
||||||
|
{
|
||||||
|
QTestState *qtest = qtest_initf("-device virtio-balloon-ccw,id=dev0");
|
||||||
|
@@ -145,6 +162,8 @@ int main(int argc, char **argv)
|
||||||
|
*/
|
||||||
|
qtest_add_func("/device-plug/pci-unplug-request",
|
||||||
|
test_pci_unplug_request);
|
||||||
|
+ qtest_add_func("/device-plug/pci-unplug-json-request",
|
||||||
|
+ test_pci_unplug_json_request);
|
||||||
|
|
||||||
|
if (!strcmp(arch, "s390x")) {
|
||||||
|
qtest_add_func("/device-plug/ccw-unplug",
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
65
kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch
Normal file
65
kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
From 1b8eeb1323fa21c7b26d0396fae5ae4a8cdb1ace Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
|
||||||
|
Date: Tue, 11 Jan 2022 18:29:31 +0000
|
||||||
|
Subject: [PATCH 1/3] x86: Add q35 RHEL 8.6.0 machine type
|
||||||
|
|
||||||
|
RH-Author: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
RH-MergeRequest: 61: x86: Add rhel 8.6.0 & 9.0.0 machine types
|
||||||
|
RH-Commit: [1/2] 189335cf0e4ad117e3e401f23aa07cddbbac50df (dagrh/c-9-s-qemu-kvm)
|
||||||
|
RH-Bugzilla: 1945666
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
Add the new 8.6.0 machine type; note that while the -AV
|
||||||
|
notation has gone in the product naming, just keep the smbios
|
||||||
|
definitions the same for consistency.
|
||||||
|
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
---
|
||||||
|
hw/i386/pc_q35.c | 21 ++++++++++++++++++++-
|
||||||
|
1 file changed, 20 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
|
||||||
|
index 3b748ddd7b..0c25305f15 100644
|
||||||
|
--- a/hw/i386/pc_q35.c
|
||||||
|
+++ b/hw/i386/pc_q35.c
|
||||||
|
@@ -646,6 +646,24 @@ static void pc_q35_machine_rhel_options(MachineClass *m)
|
||||||
|
compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void pc_q35_init_rhel860(MachineState *machine)
|
||||||
|
+{
|
||||||
|
+ pc_q35_init(machine);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void pc_q35_machine_rhel860_options(MachineClass *m)
|
||||||
|
+{
|
||||||
|
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
|
+ pc_q35_machine_rhel_options(m);
|
||||||
|
+ m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)";
|
||||||
|
+ pcmc->smbios_stream_product = "RHEL-AV";
|
||||||
|
+ pcmc->smbios_stream_version = "8.6.0";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+DEFINE_PC_MACHINE(q35_rhel860, "pc-q35-rhel8.6.0", pc_q35_init_rhel860,
|
||||||
|
+ pc_q35_machine_rhel860_options);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
static void pc_q35_init_rhel850(MachineState *machine)
|
||||||
|
{
|
||||||
|
pc_q35_init(machine);
|
||||||
|
@@ -654,8 +672,9 @@ static void pc_q35_init_rhel850(MachineState *machine)
|
||||||
|
static void pc_q35_machine_rhel850_options(MachineClass *m)
|
||||||
|
{
|
||||||
|
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
|
- pc_q35_machine_rhel_options(m);
|
||||||
|
+ pc_q35_machine_rhel860_options(m);
|
||||||
|
m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)";
|
||||||
|
+ m->alias = NULL;
|
||||||
|
pcmc->smbios_stream_product = "RHEL-AV";
|
||||||
|
pcmc->smbios_stream_version = "8.5.0";
|
||||||
|
compat_props_add(m->compat_props, hw_compat_rhel_8_5,
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
75
kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch
Normal file
75
kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
From 3d5024fb9c904a649d07f0def3a90b3d36611215 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
|
||||||
|
Date: Wed, 12 Jan 2022 13:21:57 +0000
|
||||||
|
Subject: [PATCH 2/3] x86: Add q35 RHEL 9.0.0 machine type
|
||||||
|
|
||||||
|
RH-Author: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
RH-MergeRequest: 61: x86: Add rhel 8.6.0 & 9.0.0 machine types
|
||||||
|
RH-Commit: [2/2] 743378502459b978efd632271f97ddb824422203 (dagrh/c-9-s-qemu-kvm)
|
||||||
|
RH-Bugzilla: 1945666
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
Add a rhel-9.0.0 q35 machine type; it's currently identical to 8.6.0;
|
||||||
|
but having a separate machine type will make life easier in the future
|
||||||
|
when the 8.x types go away.
|
||||||
|
|
||||||
|
Note: The smbios stream product name has now changed to 'RHEL'
|
||||||
|
|
||||||
|
bz: https://bugzilla.redhat.com/show_bug.cgi?id=1945666
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
---
|
||||||
|
hw/i386/pc_q35.c | 21 +++++++++++++++++++--
|
||||||
|
1 file changed, 19 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
|
||||||
|
index 0c25305f15..bf9ad32f0e 100644
|
||||||
|
--- a/hw/i386/pc_q35.c
|
||||||
|
+++ b/hw/i386/pc_q35.c
|
||||||
|
@@ -646,6 +646,23 @@ static void pc_q35_machine_rhel_options(MachineClass *m)
|
||||||
|
compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void pc_q35_init_rhel900(MachineState *machine)
|
||||||
|
+{
|
||||||
|
+ pc_q35_init(machine);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void pc_q35_machine_rhel900_options(MachineClass *m)
|
||||||
|
+{
|
||||||
|
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
|
+ pc_q35_machine_rhel_options(m);
|
||||||
|
+ m->desc = "RHEL-9.0.0 PC (Q35 + ICH9, 2009)";
|
||||||
|
+ pcmc->smbios_stream_product = "RHEL";
|
||||||
|
+ pcmc->smbios_stream_version = "9.0.0";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+DEFINE_PC_MACHINE(q35_rhel900, "pc-q35-rhel9.0.0", pc_q35_init_rhel900,
|
||||||
|
+ pc_q35_machine_rhel900_options);
|
||||||
|
+
|
||||||
|
static void pc_q35_init_rhel860(MachineState *machine)
|
||||||
|
{
|
||||||
|
pc_q35_init(machine);
|
||||||
|
@@ -654,8 +671,9 @@ static void pc_q35_init_rhel860(MachineState *machine)
|
||||||
|
static void pc_q35_machine_rhel860_options(MachineClass *m)
|
||||||
|
{
|
||||||
|
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
|
- pc_q35_machine_rhel_options(m);
|
||||||
|
+ pc_q35_machine_rhel900_options(m);
|
||||||
|
m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)";
|
||||||
|
+ m->alias = NULL;
|
||||||
|
pcmc->smbios_stream_product = "RHEL-AV";
|
||||||
|
pcmc->smbios_stream_version = "8.6.0";
|
||||||
|
}
|
||||||
|
@@ -674,7 +692,6 @@ static void pc_q35_machine_rhel850_options(MachineClass *m)
|
||||||
|
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
|
pc_q35_machine_rhel860_options(m);
|
||||||
|
m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)";
|
||||||
|
- m->alias = NULL;
|
||||||
|
pcmc->smbios_stream_product = "RHEL-AV";
|
||||||
|
pcmc->smbios_stream_version = "8.5.0";
|
||||||
|
compat_props_add(m->compat_props, hw_compat_rhel_8_5,
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -130,7 +130,7 @@ Obsoletes: %{name}-block-iscsi <= %{version} \
|
|||||||
Summary: QEMU is a machine emulator and virtualizer
|
Summary: QEMU is a machine emulator and virtualizer
|
||||||
Name: qemu-kvm
|
Name: qemu-kvm
|
||||||
Version: 6.2.0
|
Version: 6.2.0
|
||||||
Release: 4%{?rcrel}%{?dist}%{?cc_suffix}
|
Release: 5%{?rcrel}%{?dist}%{?cc_suffix}
|
||||||
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||||
# Epoch 15 used for RHEL 8
|
# Epoch 15 used for RHEL 8
|
||||||
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
||||||
@ -197,6 +197,12 @@ Patch33: kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch
|
|||||||
Patch34: kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch
|
Patch34: kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch
|
||||||
# For bz#2028623 - [9.0] machine types: 6.2: Fix prefer_sockets
|
# For bz#2028623 - [9.0] machine types: 6.2: Fix prefer_sockets
|
||||||
Patch35: kvm-rhel-machine-types-x86-set-prefer_sockets.patch
|
Patch35: kvm-rhel-machine-types-x86-set-prefer_sockets.patch
|
||||||
|
# For bz#1945666 - 9.0: x86 machine types
|
||||||
|
Patch36: kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch
|
||||||
|
# For bz#1945666 - 9.0: x86 machine types
|
||||||
|
Patch37: kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch
|
||||||
|
# For bz#2036669 - DEVICE_DELETED event is not delivered for device frontend if -device is configured via JSON
|
||||||
|
Patch38: kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch
|
||||||
|
|
||||||
# Source-git patches
|
# Source-git patches
|
||||||
|
|
||||||
@ -1177,6 +1183,15 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 25 2022 Miroslav Rezanina <mrezanin@redhat.com> - 6.2.0-5
|
||||||
|
- kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch [bz#1945666]
|
||||||
|
- kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch [bz#1945666]
|
||||||
|
- kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch [bz#2036669]
|
||||||
|
- Resolves: bz#1945666
|
||||||
|
(9.0: x86 machine types)
|
||||||
|
- Resolves: bz#2036669
|
||||||
|
(DEVICE_DELETED event is not delivered for device frontend if -device is configured via JSON)
|
||||||
|
|
||||||
* Mon Jan 17 2022 Miroslav Rezanina <mrezanin@redhat.com> - 6.2.0-4
|
* Mon Jan 17 2022 Miroslav Rezanina <mrezanin@redhat.com> - 6.2.0-4
|
||||||
- kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch [bz#2024544]
|
- kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch [bz#2024544]
|
||||||
- kvm-rhel-machine-types-x86-set-prefer_sockets.patch [bz#2028623]
|
- kvm-rhel-machine-types-x86-set-prefer_sockets.patch [bz#2028623]
|
||||||
|
Loading…
Reference in New Issue
Block a user