mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 22:31:15 +00:00
ppc/spapr: remove deprecated machine pseries-2.9
Commit 1392617d35
intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.9 specific code with this patch for now.
While at it, also remove the pre-2.10 migration hacks which now become
obsolete.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
4ca656075d
commit
24ee9229fe
@ -335,22 +335,6 @@ static void icp_realize(DeviceState *dev, Error **errp)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* The way that pre_2_10_icp is handling is really, really hacky.
|
|
||||||
* We used to have here this call:
|
|
||||||
*
|
|
||||||
* vmstate_register(NULL, icp->cs->cpu_index, &vmstate_icp_server, icp);
|
|
||||||
*
|
|
||||||
* But we were doing:
|
|
||||||
* pre_2_10_vmstate_register_dummy_icp()
|
|
||||||
* this vmstate_register()
|
|
||||||
* pre_2_10_vmstate_unregister_dummy_icp()
|
|
||||||
*
|
|
||||||
* So for a short amount of time we had to vmstate entries with
|
|
||||||
* the same name. This fixes it.
|
|
||||||
*/
|
|
||||||
vmstate_replace_hack_for_ppc(NULL, icp->cs->cpu_index,
|
|
||||||
&vmstate_icp_server, icp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void icp_unrealize(DeviceState *dev)
|
static void icp_unrealize(DeviceState *dev)
|
||||||
|
104
hw/ppc/spapr.c
104
hw/ppc/spapr.c
@ -132,61 +132,6 @@ static bool spapr_is_thread0_in_vcore(SpaprMachineState *spapr,
|
|||||||
return spapr_get_vcpu_id(cpu) % spapr->vsmt == 0;
|
return spapr_get_vcpu_id(cpu) % spapr->vsmt == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool pre_2_10_vmstate_dummy_icp_needed(void *opaque)
|
|
||||||
{
|
|
||||||
/* Dummy entries correspond to unused ICPState objects in older QEMUs,
|
|
||||||
* and newer QEMUs don't even have them. In both cases, we don't want
|
|
||||||
* to send anything on the wire.
|
|
||||||
*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const VMStateDescription pre_2_10_vmstate_dummy_icp = {
|
|
||||||
/*
|
|
||||||
* Hack ahead. We can't have two devices with the same name and
|
|
||||||
* instance id. So I rename this to pass make check.
|
|
||||||
* Real help from people who knows the hardware is needed.
|
|
||||||
*/
|
|
||||||
.name = "icp/server",
|
|
||||||
.version_id = 1,
|
|
||||||
.minimum_version_id = 1,
|
|
||||||
.needed = pre_2_10_vmstate_dummy_icp_needed,
|
|
||||||
.fields = (const VMStateField[]) {
|
|
||||||
VMSTATE_UNUSED(4), /* uint32_t xirr */
|
|
||||||
VMSTATE_UNUSED(1), /* uint8_t pending_priority */
|
|
||||||
VMSTATE_UNUSED(1), /* uint8_t mfrr */
|
|
||||||
VMSTATE_END_OF_LIST()
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* See comment in hw/intc/xics.c:icp_realize()
|
|
||||||
*
|
|
||||||
* You have to remove vmstate_replace_hack_for_ppc() when you remove
|
|
||||||
* the machine types that need the following function.
|
|
||||||
*/
|
|
||||||
static void pre_2_10_vmstate_register_dummy_icp(int i)
|
|
||||||
{
|
|
||||||
vmstate_register(NULL, i, &pre_2_10_vmstate_dummy_icp,
|
|
||||||
(void *)(uintptr_t) i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* See comment in hw/intc/xics.c:icp_realize()
|
|
||||||
*
|
|
||||||
* You have to remove vmstate_replace_hack_for_ppc() when you remove
|
|
||||||
* the machine types that need the following function.
|
|
||||||
*/
|
|
||||||
static void pre_2_10_vmstate_unregister_dummy_icp(int i)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* This used to be:
|
|
||||||
*
|
|
||||||
* vmstate_unregister(NULL, &pre_2_10_vmstate_dummy_icp,
|
|
||||||
* (void *)(uintptr_t) i);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
int spapr_max_server_number(SpaprMachineState *spapr)
|
int spapr_max_server_number(SpaprMachineState *spapr)
|
||||||
{
|
{
|
||||||
MachineState *ms = MACHINE(spapr);
|
MachineState *ms = MACHINE(spapr);
|
||||||
@ -2711,7 +2656,6 @@ static void spapr_init_cpus(SpaprMachineState *spapr)
|
|||||||
{
|
{
|
||||||
MachineState *machine = MACHINE(spapr);
|
MachineState *machine = MACHINE(spapr);
|
||||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||||
SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
|
|
||||||
const char *type = spapr_get_cpu_core_type(machine->cpu_type);
|
const char *type = spapr_get_cpu_core_type(machine->cpu_type);
|
||||||
const CPUArchIdList *possible_cpus;
|
const CPUArchIdList *possible_cpus;
|
||||||
unsigned int smp_cpus = machine->smp.cpus;
|
unsigned int smp_cpus = machine->smp.cpus;
|
||||||
@ -2740,15 +2684,6 @@ static void spapr_init_cpus(SpaprMachineState *spapr)
|
|||||||
boot_cores_nr = possible_cpus->len;
|
boot_cores_nr = possible_cpus->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (smc->pre_2_10_has_unused_icps) {
|
|
||||||
for (i = 0; i < spapr_max_server_number(spapr); i++) {
|
|
||||||
/* Dummy entries get deregistered when real ICPState objects
|
|
||||||
* are registered during CPU core hotplug.
|
|
||||||
*/
|
|
||||||
pre_2_10_vmstate_register_dummy_icp(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < possible_cpus->len; i++) {
|
for (i = 0; i < possible_cpus->len; i++) {
|
||||||
int core_id = i * smp_threads;
|
int core_id = i * smp_threads;
|
||||||
|
|
||||||
@ -3914,21 +3849,9 @@ void spapr_core_release(DeviceState *dev)
|
|||||||
static void spapr_core_unplug(HotplugHandler *hotplug_dev, DeviceState *dev)
|
static void spapr_core_unplug(HotplugHandler *hotplug_dev, DeviceState *dev)
|
||||||
{
|
{
|
||||||
MachineState *ms = MACHINE(hotplug_dev);
|
MachineState *ms = MACHINE(hotplug_dev);
|
||||||
SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(ms);
|
|
||||||
CPUCore *cc = CPU_CORE(dev);
|
CPUCore *cc = CPU_CORE(dev);
|
||||||
CPUArchId *core_slot = spapr_find_cpu_slot(ms, cc->core_id, NULL);
|
CPUArchId *core_slot = spapr_find_cpu_slot(ms, cc->core_id, NULL);
|
||||||
|
|
||||||
if (smc->pre_2_10_has_unused_icps) {
|
|
||||||
SpaprCpuCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < cc->nr_threads; i++) {
|
|
||||||
CPUState *cs = CPU(sc->threads[i]);
|
|
||||||
|
|
||||||
pre_2_10_vmstate_register_dummy_icp(cs->cpu_index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(core_slot);
|
assert(core_slot);
|
||||||
core_slot->cpu = NULL;
|
core_slot->cpu = NULL;
|
||||||
qdev_unrealize(dev);
|
qdev_unrealize(dev);
|
||||||
@ -4009,7 +3932,6 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev)
|
|||||||
{
|
{
|
||||||
SpaprMachineState *spapr = SPAPR_MACHINE(OBJECT(hotplug_dev));
|
SpaprMachineState *spapr = SPAPR_MACHINE(OBJECT(hotplug_dev));
|
||||||
MachineClass *mc = MACHINE_GET_CLASS(spapr);
|
MachineClass *mc = MACHINE_GET_CLASS(spapr);
|
||||||
SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
||||||
SpaprCpuCore *core = SPAPR_CPU_CORE(OBJECT(dev));
|
SpaprCpuCore *core = SPAPR_CPU_CORE(OBJECT(dev));
|
||||||
CPUCore *cc = CPU_CORE(dev);
|
CPUCore *cc = CPU_CORE(dev);
|
||||||
SpaprDrc *drc;
|
SpaprDrc *drc;
|
||||||
@ -4059,12 +3981,6 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (smc->pre_2_10_has_unused_icps) {
|
|
||||||
for (i = 0; i < cc->nr_threads; i++) {
|
|
||||||
CPUState *cs = CPU(core->threads[i]);
|
|
||||||
pre_2_10_vmstate_unregister_dummy_icp(cs->cpu_index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
||||||
@ -5165,26 +5081,6 @@ static void spapr_machine_2_10_class_options(MachineClass *mc)
|
|||||||
|
|
||||||
DEFINE_SPAPR_MACHINE(2, 10);
|
DEFINE_SPAPR_MACHINE(2, 10);
|
||||||
|
|
||||||
/*
|
|
||||||
* pseries-2.9
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void spapr_machine_2_9_class_options(MachineClass *mc)
|
|
||||||
{
|
|
||||||
SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
|
|
||||||
static GlobalProperty compat[] = {
|
|
||||||
{ TYPE_POWERPC_CPU, "pre-2.10-migration", "on" },
|
|
||||||
};
|
|
||||||
|
|
||||||
spapr_machine_2_10_class_options(mc);
|
|
||||||
compat_props_add(mc->compat_props, hw_compat_2_9, hw_compat_2_9_len);
|
|
||||||
compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
|
|
||||||
smc->pre_2_10_has_unused_icps = true;
|
|
||||||
smc->resize_hpt_default = SPAPR_RESIZE_HPT_DISABLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFINE_SPAPR_MACHINE(2, 9);
|
|
||||||
|
|
||||||
static void spapr_machine_register_types(void)
|
static void spapr_machine_register_types(void)
|
||||||
{
|
{
|
||||||
type_register_static(&spapr_machine_info);
|
type_register_static(&spapr_machine_info);
|
||||||
|
@ -143,7 +143,6 @@ struct SpaprMachineClass {
|
|||||||
/*< public >*/
|
/*< public >*/
|
||||||
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
|
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
|
||||||
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
|
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
|
||||||
bool pre_2_10_has_unused_icps;
|
|
||||||
bool legacy_irq_allocation;
|
bool legacy_irq_allocation;
|
||||||
uint32_t nr_xirqs;
|
uint32_t nr_xirqs;
|
||||||
bool broken_host_serial_model; /* present real host info to the guest */
|
bool broken_host_serial_model; /* present real host info to the guest */
|
||||||
|
@ -860,25 +860,6 @@ static void vmstate_check(const VMStateDescription *vmsd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* See comment in hw/intc/xics.c:icp_realize()
|
|
||||||
*
|
|
||||||
* This function can be removed when
|
|
||||||
* pre_2_10_vmstate_register_dummy_icp() is removed.
|
|
||||||
*/
|
|
||||||
int vmstate_replace_hack_for_ppc(VMStateIf *obj, int instance_id,
|
|
||||||
const VMStateDescription *vmsd,
|
|
||||||
void *opaque)
|
|
||||||
{
|
|
||||||
SaveStateEntry *se = find_se(vmsd->name, instance_id);
|
|
||||||
|
|
||||||
if (se) {
|
|
||||||
savevm_state_handler_remove(se);
|
|
||||||
g_free(se->compat);
|
|
||||||
g_free(se);
|
|
||||||
}
|
|
||||||
return vmstate_register(obj, instance_id, vmsd, opaque);
|
|
||||||
}
|
|
||||||
|
|
||||||
int vmstate_register_with_alias_id(VMStateIf *obj, uint32_t instance_id,
|
int vmstate_register_with_alias_id(VMStateIf *obj, uint32_t instance_id,
|
||||||
const VMStateDescription *vmsd,
|
const VMStateDescription *vmsd,
|
||||||
|
@ -1457,7 +1457,6 @@ struct ArchCPU {
|
|||||||
opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
|
opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
|
||||||
|
|
||||||
/* Fields related to migration compatibility hacks */
|
/* Fields related to migration compatibility hacks */
|
||||||
bool pre_2_10_migration;
|
|
||||||
bool pre_3_0_migration;
|
bool pre_3_0_migration;
|
||||||
int32_t mig_slb_nr;
|
int32_t mig_slb_nr;
|
||||||
};
|
};
|
||||||
|
@ -7452,8 +7452,6 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Property ppc_cpu_properties[] = {
|
static Property ppc_cpu_properties[] = {
|
||||||
DEFINE_PROP_BOOL("pre-2.10-migration", PowerPCCPU, pre_2_10_migration,
|
|
||||||
false),
|
|
||||||
DEFINE_PROP_BOOL("pre-3.0-migration", PowerPCCPU, pre_3_0_migration,
|
DEFINE_PROP_BOOL("pre-3.0-migration", PowerPCCPU, pre_3_0_migration,
|
||||||
false),
|
false),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
|
@ -630,7 +630,7 @@ static bool compat_needed(void *opaque)
|
|||||||
PowerPCCPU *cpu = opaque;
|
PowerPCCPU *cpu = opaque;
|
||||||
|
|
||||||
assert(!(cpu->compat_pvr && !cpu->vhyp));
|
assert(!(cpu->compat_pvr && !cpu->vhyp));
|
||||||
return !cpu->pre_2_10_migration && cpu->compat_pvr != 0;
|
return cpu->compat_pvr != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const VMStateDescription vmstate_compat = {
|
static const VMStateDescription vmstate_compat = {
|
||||||
|
Loading…
Reference in New Issue
Block a user