6ca2f341c2
- kvm-ppc-Deassert-the-external-interrupt-pin-in-KVM-on-re.patch [bz#1776638] - kvm-xics-Don-t-deassert-outputs.patch [bz#1776638] - kvm-ppc-Don-t-use-CPUPPCState-irq_input_state-with-moder.patch [bz#1776638] - kvm-trace-update-qemu-trace-stap-to-Python-3.patch [bz#1787395] - kvm-redhat-Remove-redundant-fix-for-qemu-trace-stap.patch [bz#1787395] - kvm-iscsi-Cap-block-count-from-GET-LBA-STATUS-CVE-2020-1.patch [bz#1794503] - kvm-tpm-ppi-page-align-PPI-RAM.patch [bz#1787444] - kvm-target-arm-kvm-trivial-Clean-up-header-documentation.patch [bz#1647366] - kvm-target-arm-kvm64-kvm64-cpus-have-timer-registers.patch [bz#1647366] - kvm-tests-arm-cpu-features-Check-feature-default-values.patch [bz#1647366] - kvm-target-arm-kvm-Implement-virtual-time-adjustment.patch [bz#1647366] - kvm-target-arm-cpu-Add-the-kvm-no-adjvtime-CPU-property.patch [bz#1647366] - kvm-migration-Define-VMSTATE_INSTANCE_ID_ANY.patch [bz#1529231] - kvm-migration-Change-SaveStateEntry.instance_id-into-uin.patch [bz#1529231] - kvm-apic-Use-32bit-APIC-ID-for-migration-instance-ID.patch [bz#1529231] - Resolves: bz#1529231 ([q35] VM hangs after migration with 200 vCPUs) - Resolves: bz#1647366 (aarch64: Add support for the kvm-no-adjvtime ARM CPU feature) - Resolves: bz#1776638 (Guest failed to boot up after system_reset 20 times) - Resolves: bz#1787395 (qemu-trace-stap list : TypeError: startswith first arg must be bytes or a tuple of bytes, not str) - Resolves: bz#1787444 (Broken postcopy migration with vTPM device) - Resolves: bz#1794503 (CVE-2020-1711 qemu-kvm: QEMU: block: iscsi: OOB heap access via an unexpected response of iSCSI Server [rhel-av-8.2.0])
258 lines
9.8 KiB
Diff
258 lines
9.8 KiB
Diff
From 2659af9267586fb626f543773bf3f844727e473b Mon Sep 17 00:00:00 2001
|
|
From: Peter Xu <peterx@redhat.com>
|
|
Date: Fri, 31 Jan 2020 17:12:55 +0000
|
|
Subject: [PATCH 13/15] migration: Define VMSTATE_INSTANCE_ID_ANY
|
|
|
|
RH-Author: Peter Xu <peterx@redhat.com>
|
|
Message-id: <20200131171257.1066593-2-peterx@redhat.com>
|
|
Patchwork-id: 93630
|
|
O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH 1/3] migration: Define VMSTATE_INSTANCE_ID_ANY
|
|
Bugzilla: 1529231
|
|
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
|
|
RH-Acked-by: Juan Quintela <quintela@redhat.com>
|
|
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
|
|
Define the new macro VMSTATE_INSTANCE_ID_ANY for callers who wants to
|
|
auto-generate the vmstate instance ID. Previously it was hard coded
|
|
as -1 instead of this macro. It helps to change this default value in
|
|
the follow up patches. No functional change.
|
|
|
|
Signed-off-by: Peter Xu <peterx@redhat.com>
|
|
Reviewed-by: Juan Quintela <quintela@redhat.com>
|
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
|
(cherry picked from commit 1df2c9a26fcb2fa32d099f8e9adcdae4207872e3)
|
|
Signed-off-by: Peter Xu <peterx@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
|
|
Conflicts:
|
|
backends/dbus-vmstate.c
|
|
File deleted
|
|
hw/core/qdev.c
|
|
hw/misc/max111x.c
|
|
hw/net/eepro100.c
|
|
Due to missing commit 3cad405bab ("vmstate: replace
|
|
DeviceState with VMStateIf", 2020-01-06)
|
|
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
hw/arm/stellaris.c | 2 +-
|
|
hw/core/qdev.c | 3 ++-
|
|
hw/display/ads7846.c | 2 +-
|
|
hw/i2c/core.c | 2 +-
|
|
hw/input/stellaris_input.c | 3 ++-
|
|
hw/intc/apic_common.c | 2 +-
|
|
hw/misc/max111x.c | 2 +-
|
|
hw/net/eepro100.c | 2 +-
|
|
hw/pci/pci.c | 2 +-
|
|
hw/ppc/spapr.c | 2 +-
|
|
hw/timer/arm_timer.c | 2 +-
|
|
hw/tpm/tpm_emulator.c | 3 ++-
|
|
include/migration/vmstate.h | 2 ++
|
|
migration/savevm.c | 8 ++++----
|
|
14 files changed, 21 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
|
|
index b198066..bb025e0 100644
|
|
--- a/hw/arm/stellaris.c
|
|
+++ b/hw/arm/stellaris.c
|
|
@@ -708,7 +708,7 @@ static int stellaris_sys_init(uint32_t base, qemu_irq irq,
|
|
memory_region_init_io(&s->iomem, NULL, &ssys_ops, s, "ssys", 0x00001000);
|
|
memory_region_add_subregion(get_system_memory(), base, &s->iomem);
|
|
ssys_reset(s);
|
|
- vmstate_register(NULL, -1, &vmstate_stellaris_sys, s);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_stellaris_sys, s);
|
|
return 0;
|
|
}
|
|
|
|
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
|
|
index cf1ba28..40f6b2b 100644
|
|
--- a/hw/core/qdev.c
|
|
+++ b/hw/core/qdev.c
|
|
@@ -890,7 +890,8 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
|
|
dev->canonical_path = object_get_canonical_path(OBJECT(dev));
|
|
|
|
if (qdev_get_vmsd(dev)) {
|
|
- if (vmstate_register_with_alias_id(dev, -1, qdev_get_vmsd(dev), dev,
|
|
+ if (vmstate_register_with_alias_id(dev, VMSTATE_INSTANCE_ID_ANY,
|
|
+ qdev_get_vmsd(dev), dev,
|
|
dev->instance_id_alias,
|
|
dev->alias_required_for_version,
|
|
&local_err) < 0) {
|
|
diff --git a/hw/display/ads7846.c b/hw/display/ads7846.c
|
|
index c12272a..9228b40 100644
|
|
--- a/hw/display/ads7846.c
|
|
+++ b/hw/display/ads7846.c
|
|
@@ -154,7 +154,7 @@ static void ads7846_realize(SSISlave *d, Error **errp)
|
|
|
|
ads7846_int_update(s);
|
|
|
|
- vmstate_register(NULL, -1, &vmstate_ads7846, s);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_ads7846, s);
|
|
}
|
|
|
|
static void ads7846_class_init(ObjectClass *klass, void *data)
|
|
diff --git a/hw/i2c/core.c b/hw/i2c/core.c
|
|
index 92cd489..d770035 100644
|
|
--- a/hw/i2c/core.c
|
|
+++ b/hw/i2c/core.c
|
|
@@ -61,7 +61,7 @@ I2CBus *i2c_init_bus(DeviceState *parent, const char *name)
|
|
|
|
bus = I2C_BUS(qbus_create(TYPE_I2C_BUS, parent, name));
|
|
QLIST_INIT(&bus->current_devs);
|
|
- vmstate_register(NULL, -1, &vmstate_i2c_bus, bus);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_i2c_bus, bus);
|
|
return bus;
|
|
}
|
|
|
|
diff --git a/hw/input/stellaris_input.c b/hw/input/stellaris_input.c
|
|
index 59892b0..e6ee5e1 100644
|
|
--- a/hw/input/stellaris_input.c
|
|
+++ b/hw/input/stellaris_input.c
|
|
@@ -88,5 +88,6 @@ void stellaris_gamepad_init(int n, qemu_irq *irq, const int *keycode)
|
|
}
|
|
s->num_buttons = n;
|
|
qemu_add_kbd_event_handler(stellaris_gamepad_put_key, s);
|
|
- vmstate_register(NULL, -1, &vmstate_stellaris_gamepad, s);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY,
|
|
+ &vmstate_stellaris_gamepad, s);
|
|
}
|
|
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
|
|
index 375cb6a..f2c3a7f 100644
|
|
--- a/hw/intc/apic_common.c
|
|
+++ b/hw/intc/apic_common.c
|
|
@@ -284,7 +284,7 @@ static void apic_common_realize(DeviceState *dev, Error **errp)
|
|
}
|
|
|
|
if (s->legacy_instance_id) {
|
|
- instance_id = -1;
|
|
+ instance_id = VMSTATE_INSTANCE_ID_ANY;
|
|
}
|
|
vmstate_register_with_alias_id(NULL, instance_id, &vmstate_apic_common,
|
|
s, -1, 0, NULL);
|
|
diff --git a/hw/misc/max111x.c b/hw/misc/max111x.c
|
|
index a713149..81ee73e 100644
|
|
--- a/hw/misc/max111x.c
|
|
+++ b/hw/misc/max111x.c
|
|
@@ -146,7 +146,7 @@ static int max111x_init(SSISlave *d, int inputs)
|
|
s->input[7] = 0x80;
|
|
s->com = 0;
|
|
|
|
- vmstate_register(dev, -1, &vmstate_max111x, s);
|
|
+ vmstate_register(dev, VMSTATE_INSTANCE_ID_ANY, &vmstate_max111x, s);
|
|
return 0;
|
|
}
|
|
|
|
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
|
|
index cc2dd8b..39920c6 100644
|
|
--- a/hw/net/eepro100.c
|
|
+++ b/hw/net/eepro100.c
|
|
@@ -1874,7 +1874,7 @@ static void e100_nic_realize(PCIDevice *pci_dev, Error **errp)
|
|
|
|
s->vmstate = g_memdup(&vmstate_eepro100, sizeof(vmstate_eepro100));
|
|
s->vmstate->name = qemu_get_queue(s->nic)->model;
|
|
- vmstate_register(&pci_dev->qdev, -1, s->vmstate, s);
|
|
+ vmstate_register(&pci_dev->qdev, VMSTATE_INSTANCE_ID_ANY, s->vmstate, s);
|
|
}
|
|
|
|
static void eepro100_instance_init(Object *obj)
|
|
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
|
|
index cbc7a32..fed019d 100644
|
|
--- a/hw/pci/pci.c
|
|
+++ b/hw/pci/pci.c
|
|
@@ -124,7 +124,7 @@ static void pci_bus_realize(BusState *qbus, Error **errp)
|
|
bus->machine_done.notify = pcibus_machine_done;
|
|
qemu_add_machine_init_done_notifier(&bus->machine_done);
|
|
|
|
- vmstate_register(NULL, -1, &vmstate_pcibus, bus);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_pcibus, bus);
|
|
}
|
|
|
|
static void pcie_bus_realize(BusState *qbus, Error **errp)
|
|
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
|
|
index 8749c72..c12862d 100644
|
|
--- a/hw/ppc/spapr.c
|
|
+++ b/hw/ppc/spapr.c
|
|
@@ -3028,7 +3028,7 @@ static void spapr_machine_init(MachineState *machine)
|
|
* interface, this is a legacy from the sPAPREnvironment structure
|
|
* which predated MachineState but had a similar function */
|
|
vmstate_register(NULL, 0, &vmstate_spapr, spapr);
|
|
- register_savevm_live("spapr/htab", -1, 1,
|
|
+ register_savevm_live("spapr/htab", VMSTATE_INSTANCE_ID_ANY, 1,
|
|
&savevm_htab_handlers, spapr);
|
|
|
|
qbus_set_hotplug_handler(sysbus_get_default(), OBJECT(machine),
|
|
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
|
|
index af524fa..beaa285 100644
|
|
--- a/hw/timer/arm_timer.c
|
|
+++ b/hw/timer/arm_timer.c
|
|
@@ -180,7 +180,7 @@ static arm_timer_state *arm_timer_init(uint32_t freq)
|
|
s->control = TIMER_CTRL_IE;
|
|
|
|
s->timer = ptimer_init(arm_timer_tick, s, PTIMER_POLICY_DEFAULT);
|
|
- vmstate_register(NULL, -1, &vmstate_arm_timer, s);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_arm_timer, s);
|
|
return s;
|
|
}
|
|
|
|
diff --git a/hw/tpm/tpm_emulator.c b/hw/tpm/tpm_emulator.c
|
|
index 22f9113..da7b490 100644
|
|
--- a/hw/tpm/tpm_emulator.c
|
|
+++ b/hw/tpm/tpm_emulator.c
|
|
@@ -914,7 +914,8 @@ static void tpm_emulator_inst_init(Object *obj)
|
|
tpm_emu->cur_locty_number = ~0;
|
|
qemu_mutex_init(&tpm_emu->mutex);
|
|
|
|
- vmstate_register(NULL, -1, &vmstate_tpm_emulator, obj);
|
|
+ vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY,
|
|
+ &vmstate_tpm_emulator, obj);
|
|
}
|
|
|
|
/*
|
|
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
|
|
index ac4f46a..883f1cf 100644
|
|
--- a/include/migration/vmstate.h
|
|
+++ b/include/migration/vmstate.h
|
|
@@ -1155,6 +1155,8 @@ int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd,
|
|
|
|
bool vmstate_save_needed(const VMStateDescription *vmsd, void *opaque);
|
|
|
|
+#define VMSTATE_INSTANCE_ID_ANY -1
|
|
+
|
|
/* Returns: 0 on success, -1 on failure */
|
|
int vmstate_register_with_alias_id(DeviceState *dev, int instance_id,
|
|
const VMStateDescription *vmsd,
|
|
diff --git a/migration/savevm.c b/migration/savevm.c
|
|
index a71b930..e2e8e0a 100644
|
|
--- a/migration/savevm.c
|
|
+++ b/migration/savevm.c
|
|
@@ -750,7 +750,7 @@ int register_savevm_live(const char *idstr,
|
|
|
|
pstrcat(se->idstr, sizeof(se->idstr), idstr);
|
|
|
|
- if (instance_id == -1) {
|
|
+ if (instance_id == VMSTATE_INSTANCE_ID_ANY) {
|
|
se->instance_id = calculate_new_instance_id(se->idstr);
|
|
} else {
|
|
se->instance_id = instance_id;
|
|
@@ -817,14 +817,14 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id,
|
|
|
|
se->compat = g_new0(CompatEntry, 1);
|
|
pstrcpy(se->compat->idstr, sizeof(se->compat->idstr), vmsd->name);
|
|
- se->compat->instance_id = instance_id == -1 ?
|
|
+ se->compat->instance_id = instance_id == VMSTATE_INSTANCE_ID_ANY ?
|
|
calculate_compat_instance_id(vmsd->name) : instance_id;
|
|
- instance_id = -1;
|
|
+ instance_id = VMSTATE_INSTANCE_ID_ANY;
|
|
}
|
|
}
|
|
pstrcat(se->idstr, sizeof(se->idstr), vmsd->name);
|
|
|
|
- if (instance_id == -1) {
|
|
+ if (instance_id == VMSTATE_INSTANCE_ID_ANY) {
|
|
se->instance_id = calculate_new_instance_id(se->idstr);
|
|
} else {
|
|
se->instance_id = instance_id;
|
|
--
|
|
1.8.3.1
|
|
|