* [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 20:23 ` Philippe Mathieu-Daudé
2024-10-07 15:38 ` [PATCH v3 02/14] ppc/spapr: remove deprecated machine pseries-2.2 Harsh Prateek Bora
` (12 subsequent siblings)
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.1 specific code with this patch for now.
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>
---
hw/ppc/spapr.c | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 2c10a70a48..e9518ff8b3 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5381,17 +5381,6 @@ static void spapr_machine_2_2_class_options(MachineClass *mc)
}
DEFINE_SPAPR_MACHINE(2, 2);
-/*
- * pseries-2.1
- */
-
-static void spapr_machine_2_1_class_options(MachineClass *mc)
-{
- spapr_machine_2_2_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_1, hw_compat_2_1_len);
-}
-DEFINE_SPAPR_MACHINE(2, 1);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1
2024-10-07 15:38 ` [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1 Harsh Prateek Bora
@ 2024-10-07 20:23 ` Philippe Mathieu-Daudé
2024-10-08 6:55 ` Harsh Prateek Bora
0 siblings, 1 reply; 25+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-10-07 20:23 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Hi Harsh,
On 7/10/24 12:38, Harsh Prateek Bora wrote:
> Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
> deprecated with reasons mentioned in its commit log.
> Removing pseries-2.1 specific code with this patch for now.
>
> 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>
> ---
> hw/ppc/spapr.c | 11 -----------
> 1 file changed, 11 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 2c10a70a48..e9518ff8b3 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -5381,17 +5381,6 @@ static void spapr_machine_2_2_class_options(MachineClass *mc)
> }
> DEFINE_SPAPR_MACHINE(2, 2);
>
> -/*
> - * pseries-2.1
> - */
> -
> -static void spapr_machine_2_1_class_options(MachineClass *mc)
> -{
> - spapr_machine_2_2_class_options(mc);
> - compat_props_add(mc->compat_props, hw_compat_2_1, hw_compat_2_1_len);
Why not remove hw_compat_2_1[] and hw_compat_2_1_len in the same patch?
> -}
> -DEFINE_SPAPR_MACHINE(2, 1);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1
2024-10-07 20:23 ` Philippe Mathieu-Daudé
@ 2024-10-08 6:55 ` Harsh Prateek Bora
0 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-08 6:55 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-ppc, qemu-devel
Cc: npiggin, danielhb413, clg
Hi Philippe,
On 10/8/24 01:53, Philippe Mathieu-Daudé wrote:
> Hi Harsh,
>
> On 7/10/24 12:38, Harsh Prateek Bora wrote:
>> Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
>> deprecated with reasons mentioned in its commit log.
>> Removing pseries-2.1 specific code with this patch for now.
>>
>> 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>
>> ---
>> hw/ppc/spapr.c | 11 -----------
>> 1 file changed, 11 deletions(-)
>>
>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>> index 2c10a70a48..e9518ff8b3 100644
>> --- a/hw/ppc/spapr.c
>> +++ b/hw/ppc/spapr.c
>> @@ -5381,17 +5381,6 @@ static void
>> spapr_machine_2_2_class_options(MachineClass *mc)
>> }
>> DEFINE_SPAPR_MACHINE(2, 2);
>> -/*
>> - * pseries-2.1
>> - */
>> -
>> -static void spapr_machine_2_1_class_options(MachineClass *mc)
>> -{
>> - spapr_machine_2_2_class_options(mc);
>> - compat_props_add(mc->compat_props, hw_compat_2_1,
>> hw_compat_2_1_len);
>
> Why not remove hw_compat_2_1[] and hw_compat_2_1_len in the same patch?
>
Nice catch, somehow I missed it. Probably because I saw hw_compat_2_4
onwards are still shared by other machines. I shall remove the ones for
which spapr remains the only consumer.
Thanks
Harsh
>> -}
>> -DEFINE_SPAPR_MACHINE(2, 1);
>> -
>> static void spapr_machine_register_types(void)
>> {
>> type_register_static(&spapr_machine_info);
>
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 02/14] ppc/spapr: remove deprecated machine pseries-2.2
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 03/14] ppc/spapr: remove deprecated machine pseries-2.3 Harsh Prateek Bora
` (11 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.2 specific code with this patch for now.
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>
---
hw/ppc/spapr.c | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index e9518ff8b3..34d655d0b3 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5364,23 +5364,6 @@ static void spapr_machine_2_3_class_options(MachineClass *mc)
}
DEFINE_SPAPR_MACHINE(2, 3);
-/*
- * pseries-2.2
- */
-
-static void spapr_machine_2_2_class_options(MachineClass *mc)
-{
- static GlobalProperty compat[] = {
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem_win_size", "0x20000000" },
- };
-
- spapr_machine_2_3_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_2, hw_compat_2_2_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
- mc->default_machine_opts = "modern-hotplug-events=off,suppress-vmdesc=on";
-}
-DEFINE_SPAPR_MACHINE(2, 2);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 03/14] ppc/spapr: remove deprecated machine pseries-2.3
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 01/14] ppc/spapr: remove deprecated machine pseries-2.1 Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 02/14] ppc/spapr: remove deprecated machine pseries-2.2 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 6:07 ` Cédric Le Goater
2024-10-07 15:38 ` [PATCH v3 04/14] ppc/spapr: remove deprecated machine pseries-2.4 Harsh Prateek Bora
` (10 subsequent siblings)
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.3 specific code with this patch for now.
While at it, also remove the dynamic-reconfiguration option which was
introduced to disable it by default for legacy machines until pseries-2.3.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
include/hw/pci-host/spapr.h | 1 -
hw/ppc/spapr.c | 15 ---------------
hw/ppc/spapr_pci.c | 35 -----------------------------------
3 files changed, 51 deletions(-)
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index 3778aac27b..79187e80fd 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -53,7 +53,6 @@ struct SpaprPhbState {
uint32_t index;
uint64_t buid;
char *dtbusname;
- bool dr_enabled;
MemoryRegion memspace, iospace;
hwaddr mem_win_addr, mem_win_size, mem64_win_addr, mem64_win_size;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 34d655d0b3..599a59910c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5349,21 +5349,6 @@ static void spapr_machine_2_4_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 4);
-/*
- * pseries-2.3
- */
-
-static void spapr_machine_2_3_class_options(MachineClass *mc)
-{
- static GlobalProperty compat[] = {
- { "spapr-pci-host-bridge", "dynamic-reconfiguration", "off" },
- };
- spapr_machine_2_4_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_3, hw_compat_2_3_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
-}
-DEFINE_SPAPR_MACHINE(2, 3);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 5c0024bef9..8f1964ce52 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1237,10 +1237,6 @@ static void add_drcs(SpaprPhbState *phb, PCIBus *bus)
int i;
uint8_t chassis;
- if (!phb->dr_enabled) {
- return;
- }
-
chassis = chassis_from_bus(bus);
if (pci_bus_is_root(bus)) {
@@ -1260,10 +1256,6 @@ static void remove_drcs(SpaprPhbState *phb, PCIBus *bus)
int i;
uint8_t chassis;
- if (!phb->dr_enabled) {
- return;
- }
-
chassis = chassis_from_bus(bus);
for (i = PCI_SLOT_MAX * PCI_FUNC_MAX - 1; i >= 0; i--) {
@@ -1548,17 +1540,6 @@ static void spapr_pci_pre_plug(HotplugHandler *plug_handler,
PCIBus *bus = PCI_BUS(qdev_get_parent_bus(DEVICE(pdev)));
uint32_t slotnr = PCI_SLOT(pdev->devfn);
- if (!phb->dr_enabled) {
- /* if this is a hotplug operation initiated by the user
- * we need to let them know it's not enabled
- */
- if (plugged_dev->hotplugged) {
- error_setg(errp, "Bus '%s' does not support hotplugging",
- phb->parent_obj.bus->qbus.name);
- return;
- }
- }
-
if (IS_PCI_BRIDGE(plugged_dev)) {
if (!bridge_has_valid_chassis_nr(OBJECT(plugged_dev), errp)) {
return;
@@ -1591,14 +1572,6 @@ static void spapr_pci_plug(HotplugHandler *plug_handler,
SpaprDrc *drc = drc_from_dev(phb, pdev);
uint32_t slotnr = PCI_SLOT(pdev->devfn);
- /*
- * If DR is disabled we don't need to do anything in the case of
- * hotplug or coldplug callbacks.
- */
- if (!phb->dr_enabled) {
- return;
- }
-
g_assert(drc);
if (IS_PCI_BRIDGE(plugged_dev)) {
@@ -1673,12 +1646,6 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
PCIDevice *pdev = PCI_DEVICE(plugged_dev);
SpaprDrc *drc = drc_from_dev(phb, pdev);
- if (!phb->dr_enabled) {
- error_setg(errp, "Bus '%s' does not support hotplugging",
- phb->parent_obj.bus->qbus.name);
- return;
- }
-
g_assert(drc);
g_assert(drc->dev == plugged_dev);
@@ -2089,8 +2056,6 @@ static Property spapr_phb_properties[] = {
SPAPR_PCI_MEM64_WIN_SIZE),
DEFINE_PROP_UINT64("io_win_size", SpaprPhbState, io_win_size,
SPAPR_PCI_IO_WIN_SIZE),
- DEFINE_PROP_BOOL("dynamic-reconfiguration", SpaprPhbState, dr_enabled,
- true),
/* Default DMA window is 0..1GB */
DEFINE_PROP_UINT64("dma_win_addr", SpaprPhbState, dma_win_addr, 0),
DEFINE_PROP_UINT64("dma_win_size", SpaprPhbState, dma_win_size, 0x40000000),
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 03/14] ppc/spapr: remove deprecated machine pseries-2.3
2024-10-07 15:38 ` [PATCH v3 03/14] ppc/spapr: remove deprecated machine pseries-2.3 Harsh Prateek Bora
@ 2024-10-11 6:07 ` Cédric Le Goater
0 siblings, 0 replies; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 6:07 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
> deprecated with reasons mentioned in its commit log.
> Removing pseries-2.3 specific code with this patch for now.
>
> While at it, also remove the dynamic-reconfiguration option which was
> introduced to disable it by default for legacy machines until pseries-2.3.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> include/hw/pci-host/spapr.h | 1 -
> hw/ppc/spapr.c | 15 ---------------
> hw/ppc/spapr_pci.c | 35 -----------------------------------
> 3 files changed, 51 deletions(-)
>
> diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
> index 3778aac27b..79187e80fd 100644
> --- a/include/hw/pci-host/spapr.h
> +++ b/include/hw/pci-host/spapr.h
> @@ -53,7 +53,6 @@ struct SpaprPhbState {
> uint32_t index;
> uint64_t buid;
> char *dtbusname;
> - bool dr_enabled;
>
> MemoryRegion memspace, iospace;
> hwaddr mem_win_addr, mem_win_size, mem64_win_addr, mem64_win_size;
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 34d655d0b3..599a59910c 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -5349,21 +5349,6 @@ static void spapr_machine_2_4_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(2, 4);
>
> -/*
> - * pseries-2.3
> - */
> -
> -static void spapr_machine_2_3_class_options(MachineClass *mc)
> -{
> - static GlobalProperty compat[] = {
> - { "spapr-pci-host-bridge", "dynamic-reconfiguration", "off" },
> - };
> - spapr_machine_2_4_class_options(mc);
> - compat_props_add(mc->compat_props, hw_compat_2_3, hw_compat_2_3_len);
> - compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
> -}
> -DEFINE_SPAPR_MACHINE(2, 3);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 5c0024bef9..8f1964ce52 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -1237,10 +1237,6 @@ static void add_drcs(SpaprPhbState *phb, PCIBus *bus)
> int i;
> uint8_t chassis;
>
> - if (!phb->dr_enabled) {
> - return;
> - }
> -
> chassis = chassis_from_bus(bus);
>
> if (pci_bus_is_root(bus)) {
> @@ -1260,10 +1256,6 @@ static void remove_drcs(SpaprPhbState *phb, PCIBus *bus)
> int i;
> uint8_t chassis;
>
> - if (!phb->dr_enabled) {
> - return;
> - }
> -
> chassis = chassis_from_bus(bus);
>
> for (i = PCI_SLOT_MAX * PCI_FUNC_MAX - 1; i >= 0; i--) {
> @@ -1548,17 +1540,6 @@ static void spapr_pci_pre_plug(HotplugHandler *plug_handler,
> PCIBus *bus = PCI_BUS(qdev_get_parent_bus(DEVICE(pdev)));
> uint32_t slotnr = PCI_SLOT(pdev->devfn);
>
> - if (!phb->dr_enabled) {
> - /* if this is a hotplug operation initiated by the user
> - * we need to let them know it's not enabled
> - */
> - if (plugged_dev->hotplugged) {
> - error_setg(errp, "Bus '%s' does not support hotplugging",
> - phb->parent_obj.bus->qbus.name);
> - return;
> - }
> - }
> -
> if (IS_PCI_BRIDGE(plugged_dev)) {
> if (!bridge_has_valid_chassis_nr(OBJECT(plugged_dev), errp)) {
> return;
> @@ -1591,14 +1572,6 @@ static void spapr_pci_plug(HotplugHandler *plug_handler,
> SpaprDrc *drc = drc_from_dev(phb, pdev);
> uint32_t slotnr = PCI_SLOT(pdev->devfn);
>
> - /*
> - * If DR is disabled we don't need to do anything in the case of
> - * hotplug or coldplug callbacks.
> - */
> - if (!phb->dr_enabled) {
> - return;
> - }
> -
> g_assert(drc);
>
> if (IS_PCI_BRIDGE(plugged_dev)) {
> @@ -1673,12 +1646,6 @@ static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
> PCIDevice *pdev = PCI_DEVICE(plugged_dev);
> SpaprDrc *drc = drc_from_dev(phb, pdev);
>
> - if (!phb->dr_enabled) {
> - error_setg(errp, "Bus '%s' does not support hotplugging",
> - phb->parent_obj.bus->qbus.name);
> - return;
> - }
> -
> g_assert(drc);
> g_assert(drc->dev == plugged_dev);
>
> @@ -2089,8 +2056,6 @@ static Property spapr_phb_properties[] = {
> SPAPR_PCI_MEM64_WIN_SIZE),
> DEFINE_PROP_UINT64("io_win_size", SpaprPhbState, io_win_size,
> SPAPR_PCI_IO_WIN_SIZE),
> - DEFINE_PROP_BOOL("dynamic-reconfiguration", SpaprPhbState, dr_enabled,
> - true),
> /* Default DMA window is 0..1GB */
> DEFINE_PROP_UINT64("dma_win_addr", SpaprPhbState, dma_win_addr, 0),
> DEFINE_PROP_UINT64("dma_win_size", SpaprPhbState, dma_win_size, 0x40000000),
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 04/14] ppc/spapr: remove deprecated machine pseries-2.4
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (2 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 03/14] ppc/spapr: remove deprecated machine pseries-2.3 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 6:06 ` Cédric Le Goater
2024-10-07 15:38 ` [PATCH v3 05/14] ppc/spapr: remove deprecated machine pseries-2.5 Harsh Prateek Bora
` (9 subsequent siblings)
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.4 specific code with this patch for now.
While at it, also remove SpaprMachineClass::dr_lmb_enabled which is
now turned useless.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
include/hw/ppc/spapr.h | 1 -
hw/ppc/spapr.c | 38 ++++----------------------------------
2 files changed, 4 insertions(+), 35 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index f6de3e9972..1821ef96c7 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -141,7 +141,6 @@ struct SpaprMachineClass {
MachineClass parent_class;
/*< public >*/
- bool dr_lmb_enabled; /* enable dynamic-reconfig/hotplug of LMBs */
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 599a59910c..4d7705c89f 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -682,7 +682,6 @@ static int spapr_dt_dynamic_reconfiguration_memory(SpaprMachineState *spapr,
static int spapr_dt_memory(SpaprMachineState *spapr, void *fdt)
{
MachineState *machine = MACHINE(spapr);
- SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
hwaddr mem_start, node_size;
int i, nb_nodes = machine->numa_state->num_nodes;
NodeInfo *nodes = machine->numa_state->nodes;
@@ -724,7 +723,6 @@ static int spapr_dt_memory(SpaprMachineState *spapr, void *fdt)
if (spapr_ovec_test(spapr->ov5_cas, OV5_DRCONF_MEMORY)) {
int ret;
- g_assert(smc->dr_lmb_enabled);
ret = spapr_dt_dynamic_reconfiguration_memory(spapr, fdt);
if (ret) {
return ret;
@@ -1307,9 +1305,7 @@ void *spapr_build_fdt(SpaprMachineState *spapr, bool reset, size_t space)
spapr_dt_cpus(fdt, spapr);
/* ibm,drc-indexes and friends */
- if (smc->dr_lmb_enabled) {
- root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_LMB;
- }
+ root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_LMB;
if (smc->dr_phb_enabled) {
root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_PHB;
}
@@ -2929,10 +2925,8 @@ static void spapr_machine_init(MachineState *machine)
spapr->ov5 = spapr_ovec_new();
spapr->ov5_cas = spapr_ovec_new();
- if (smc->dr_lmb_enabled) {
- spapr_ovec_set(spapr->ov5, OV5_DRCONF_MEMORY);
- spapr_validate_node_memory(machine, &error_fatal);
- }
+ spapr_ovec_set(spapr->ov5, OV5_DRCONF_MEMORY);
+ spapr_validate_node_memory(machine, &error_fatal);
spapr_ovec_set(spapr->ov5, OV5_FORM1_AFFINITY);
@@ -3016,9 +3010,7 @@ static void spapr_machine_init(MachineState *machine)
machine_memory_devices_init(machine, device_mem_base, device_mem_size);
}
- if (smc->dr_lmb_enabled) {
- spapr_create_lmb_dr_connectors(spapr);
- }
+ spapr_create_lmb_dr_connectors(spapr);
if (mc->nvdimm_supported) {
spapr_create_nvdimm_dr_connectors(spapr);
@@ -3662,7 +3654,6 @@ static void spapr_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev)
static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
Error **errp)
{
- const SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(hotplug_dev);
SpaprMachineState *spapr = SPAPR_MACHINE(hotplug_dev);
bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM);
PCDIMMDevice *dimm = PC_DIMM(dev);
@@ -3671,11 +3662,6 @@ static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
Object *memdev;
hwaddr pagesize;
- if (!smc->dr_lmb_enabled) {
- error_setg(errp, "Memory hotplug not supported for this machine");
- return;
- }
-
size = memory_device_get_region_size(MEMORY_DEVICE(dimm), &local_err);
if (local_err) {
error_propagate(errp, local_err);
@@ -4713,7 +4699,6 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
hc->unplug_request = spapr_machine_device_unplug_request;
hc->unplug = spapr_machine_device_unplug;
- smc->dr_lmb_enabled = true;
smc->update_dt_enabled = true;
mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power10_v2.0");
mc->has_hotpluggable_cpus = true;
@@ -5334,21 +5319,6 @@ static void spapr_machine_2_5_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 5);
-/*
- * pseries-2.4
- */
-
-static void spapr_machine_2_4_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
-
- spapr_machine_2_5_class_options(mc);
- smc->dr_lmb_enabled = false;
- compat_props_add(mc->compat_props, hw_compat_2_4, hw_compat_2_4_len);
-}
-
-DEFINE_SPAPR_MACHINE(2, 4);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 04/14] ppc/spapr: remove deprecated machine pseries-2.4
2024-10-07 15:38 ` [PATCH v3 04/14] ppc/spapr: remove deprecated machine pseries-2.4 Harsh Prateek Bora
@ 2024-10-11 6:06 ` Cédric Le Goater
0 siblings, 0 replies; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 6:06 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
> deprecated with reasons mentioned in its commit log.
> Removing pseries-2.4 specific code with this patch for now.
>
> While at it, also remove SpaprMachineClass::dr_lmb_enabled which is
> now turned useless.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> include/hw/ppc/spapr.h | 1 -
> hw/ppc/spapr.c | 38 ++++----------------------------------
> 2 files changed, 4 insertions(+), 35 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index f6de3e9972..1821ef96c7 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -141,7 +141,6 @@ struct SpaprMachineClass {
> MachineClass parent_class;
>
> /*< public >*/
> - bool dr_lmb_enabled; /* enable dynamic-reconfig/hotplug of LMBs */
> bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
> bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
> bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 599a59910c..4d7705c89f 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -682,7 +682,6 @@ static int spapr_dt_dynamic_reconfiguration_memory(SpaprMachineState *spapr,
> static int spapr_dt_memory(SpaprMachineState *spapr, void *fdt)
> {
> MachineState *machine = MACHINE(spapr);
> - SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
> hwaddr mem_start, node_size;
> int i, nb_nodes = machine->numa_state->num_nodes;
> NodeInfo *nodes = machine->numa_state->nodes;
> @@ -724,7 +723,6 @@ static int spapr_dt_memory(SpaprMachineState *spapr, void *fdt)
> if (spapr_ovec_test(spapr->ov5_cas, OV5_DRCONF_MEMORY)) {
> int ret;
>
> - g_assert(smc->dr_lmb_enabled);
> ret = spapr_dt_dynamic_reconfiguration_memory(spapr, fdt);
> if (ret) {
> return ret;
> @@ -1307,9 +1305,7 @@ void *spapr_build_fdt(SpaprMachineState *spapr, bool reset, size_t space)
> spapr_dt_cpus(fdt, spapr);
>
> /* ibm,drc-indexes and friends */
> - if (smc->dr_lmb_enabled) {
> - root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_LMB;
> - }
> + root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_LMB;
> if (smc->dr_phb_enabled) {
> root_drc_type_mask |= SPAPR_DR_CONNECTOR_TYPE_PHB;
> }
> @@ -2929,10 +2925,8 @@ static void spapr_machine_init(MachineState *machine)
> spapr->ov5 = spapr_ovec_new();
> spapr->ov5_cas = spapr_ovec_new();
>
> - if (smc->dr_lmb_enabled) {
> - spapr_ovec_set(spapr->ov5, OV5_DRCONF_MEMORY);
> - spapr_validate_node_memory(machine, &error_fatal);
> - }
> + spapr_ovec_set(spapr->ov5, OV5_DRCONF_MEMORY);
> + spapr_validate_node_memory(machine, &error_fatal);
>
> spapr_ovec_set(spapr->ov5, OV5_FORM1_AFFINITY);
>
> @@ -3016,9 +3010,7 @@ static void spapr_machine_init(MachineState *machine)
> machine_memory_devices_init(machine, device_mem_base, device_mem_size);
> }
>
> - if (smc->dr_lmb_enabled) {
> - spapr_create_lmb_dr_connectors(spapr);
> - }
> + spapr_create_lmb_dr_connectors(spapr);
>
> if (mc->nvdimm_supported) {
> spapr_create_nvdimm_dr_connectors(spapr);
> @@ -3662,7 +3654,6 @@ static void spapr_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev)
> static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
> Error **errp)
> {
> - const SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(hotplug_dev);
> SpaprMachineState *spapr = SPAPR_MACHINE(hotplug_dev);
> bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM);
> PCDIMMDevice *dimm = PC_DIMM(dev);
> @@ -3671,11 +3662,6 @@ static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
> Object *memdev;
> hwaddr pagesize;
>
> - if (!smc->dr_lmb_enabled) {
> - error_setg(errp, "Memory hotplug not supported for this machine");
> - return;
> - }
> -
> size = memory_device_get_region_size(MEMORY_DEVICE(dimm), &local_err);
> if (local_err) {
> error_propagate(errp, local_err);
> @@ -4713,7 +4699,6 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
> hc->unplug_request = spapr_machine_device_unplug_request;
> hc->unplug = spapr_machine_device_unplug;
>
> - smc->dr_lmb_enabled = true;
> smc->update_dt_enabled = true;
> mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power10_v2.0");
> mc->has_hotpluggable_cpus = true;
> @@ -5334,21 +5319,6 @@ static void spapr_machine_2_5_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(2, 5);
>
> -/*
> - * pseries-2.4
> - */
> -
> -static void spapr_machine_2_4_class_options(MachineClass *mc)
> -{
> - SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> -
> - spapr_machine_2_5_class_options(mc);
> - smc->dr_lmb_enabled = false;
> - compat_props_add(mc->compat_props, hw_compat_2_4, hw_compat_2_4_len);
> -}
> -
> -DEFINE_SPAPR_MACHINE(2, 4);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 05/14] ppc/spapr: remove deprecated machine pseries-2.5
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (3 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 04/14] ppc/spapr: remove deprecated machine pseries-2.4 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 6:05 ` Cédric Le Goater
2024-10-07 15:38 ` [PATCH v3 06/14] ppc/spapr: remove deprecated machine pseries-2.6 Harsh Prateek Bora
` (8 subsequent siblings)
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.5 specific code with this patch for now.
Also drop sPAPRMachineClass::use_ohci_by_default which is now useless.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
include/hw/ppc/spapr.h | 1 -
hw/ppc/spapr.c | 25 +------------------------
2 files changed, 1 insertion(+), 25 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 1821ef96c7..6e9e62386c 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -143,7 +143,6 @@ struct SpaprMachineClass {
/*< public >*/
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
- bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
bool pre_2_10_has_unused_icps;
bool legacy_irq_allocation;
uint32_t nr_xirqs;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4d7705c89f..f63843d107 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3070,11 +3070,7 @@ static void spapr_machine_init(MachineState *machine)
}
if (machine->usb) {
- if (smc->use_ohci_by_default) {
- pci_create_simple(phb->bus, -1, "pci-ohci");
- } else {
- pci_create_simple(phb->bus, -1, "nec-usb-xhci");
- }
+ pci_create_simple(phb->bus, -1, "nec-usb-xhci");
if (has_vga) {
USBBus *usb_bus;
@@ -5300,25 +5296,6 @@ static void spapr_machine_2_6_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 6);
-/*
- * pseries-2.5
- */
-
-static void spapr_machine_2_5_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
- static GlobalProperty compat[] = {
- { "spapr-vlan", "use-rx-buffer-pools", "off" },
- };
-
- spapr_machine_2_6_class_options(mc);
- smc->use_ohci_by_default = true;
- compat_props_add(mc->compat_props, hw_compat_2_5, hw_compat_2_5_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
-}
-
-DEFINE_SPAPR_MACHINE(2, 5);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 05/14] ppc/spapr: remove deprecated machine pseries-2.5
2024-10-07 15:38 ` [PATCH v3 05/14] ppc/spapr: remove deprecated machine pseries-2.5 Harsh Prateek Bora
@ 2024-10-11 6:05 ` Cédric Le Goater
0 siblings, 0 replies; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 6:05 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
> deprecated with reasons mentioned in its commit log.
> Removing pseries-2.5 specific code with this patch for now.
>
> Also drop sPAPRMachineClass::use_ohci_by_default which is now useless.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> include/hw/ppc/spapr.h | 1 -
> hw/ppc/spapr.c | 25 +------------------------
> 2 files changed, 1 insertion(+), 25 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index 1821ef96c7..6e9e62386c 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -143,7 +143,6 @@ struct SpaprMachineClass {
> /*< public >*/
> bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
> bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
> - bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
> bool pre_2_10_has_unused_icps;
> bool legacy_irq_allocation;
> uint32_t nr_xirqs;
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 4d7705c89f..f63843d107 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3070,11 +3070,7 @@ static void spapr_machine_init(MachineState *machine)
> }
>
> if (machine->usb) {
> - if (smc->use_ohci_by_default) {
> - pci_create_simple(phb->bus, -1, "pci-ohci");
> - } else {
> - pci_create_simple(phb->bus, -1, "nec-usb-xhci");
> - }
> + pci_create_simple(phb->bus, -1, "nec-usb-xhci");
>
> if (has_vga) {
> USBBus *usb_bus;
> @@ -5300,25 +5296,6 @@ static void spapr_machine_2_6_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(2, 6);
>
> -/*
> - * pseries-2.5
> - */
> -
> -static void spapr_machine_2_5_class_options(MachineClass *mc)
> -{
> - SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> - static GlobalProperty compat[] = {
> - { "spapr-vlan", "use-rx-buffer-pools", "off" },
> - };
> -
> - spapr_machine_2_6_class_options(mc);
> - smc->use_ohci_by_default = true;
> - compat_props_add(mc->compat_props, hw_compat_2_5, hw_compat_2_5_len);
> - compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
> -}
> -
> -DEFINE_SPAPR_MACHINE(2, 5);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 06/14] ppc/spapr: remove deprecated machine pseries-2.6
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (4 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 05/14] ppc/spapr: remove deprecated machine pseries-2.5 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 07/14] ppc/spapr: remove deprecated machine pseries-2.7 Harsh Prateek Bora
` (7 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.6 specific code with this patch for now.
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>
---
hw/ppc/spapr.c | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f63843d107..a9c988b8f6 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5278,24 +5278,6 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 7);
-/*
- * pseries-2.6
- */
-
-static void spapr_machine_2_6_class_options(MachineClass *mc)
-{
- static GlobalProperty compat[] = {
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "ddw", "off" },
- };
-
- spapr_machine_2_7_class_options(mc);
- mc->has_hotpluggable_cpus = false;
- compat_props_add(mc->compat_props, hw_compat_2_6, hw_compat_2_6_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
-}
-
-DEFINE_SPAPR_MACHINE(2, 6);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 07/14] ppc/spapr: remove deprecated machine pseries-2.7
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (5 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 06/14] ppc/spapr: remove deprecated machine pseries-2.6 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 08/14] ppc/spapr: remove deprecated machine pseries-2.8 Harsh Prateek Bora
` (6 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.7 specific code with this patch for now.
While at it, also remove pre-2.8-migration and pci/mmio hacks introduced
for backward compatibility.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
include/hw/pci-host/spapr.h | 4 --
target/ppc/cpu.h | 5 ---
hw/ppc/spapr.c | 75 -------------------------------------
hw/ppc/spapr_pci.c | 57 ++++------------------------
target/ppc/cpu_init.c | 1 -
target/ppc/machine.c | 52 -------------------------
6 files changed, 7 insertions(+), 187 deletions(-)
diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h
index 79187e80fd..0db87f1281 100644
--- a/include/hw/pci-host/spapr.h
+++ b/include/hw/pci-host/spapr.h
@@ -83,10 +83,6 @@ struct SpaprPhbState {
bool pcie_ecs; /* Allow access to PCIe extended config space? */
/* Fields for migration compatibility hacks */
- bool pre_2_8_migration;
- uint32_t mig_liobn;
- hwaddr mig_mem_win_addr, mig_mem_win_size;
- hwaddr mig_io_win_addr, mig_io_win_size;
bool pre_5_1_assoc;
};
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index 321ed2da75..cab4a46fc1 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1456,11 +1456,6 @@ struct ArchCPU {
opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
/* Fields related to migration compatibility hacks */
- bool pre_2_8_migration;
- target_ulong mig_msr_mask;
- uint64_t mig_insns_flags;
- uint64_t mig_insns_flags2;
- uint32_t mig_nb_BATs;
bool pre_2_10_migration;
bool pre_3_0_migration;
int32_t mig_slb_nr;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a9c988b8f6..c89ab89b97 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5203,81 +5203,6 @@ static void spapr_machine_2_8_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 8);
-/*
- * pseries-2.7
- */
-
-static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index,
- uint64_t *buid, hwaddr *pio,
- hwaddr *mmio32, hwaddr *mmio64,
- unsigned n_dma, uint32_t *liobns, Error **errp)
-{
- /* Legacy PHB placement for pseries-2.7 and earlier machine types */
- const uint64_t base_buid = 0x800000020000000ULL;
- const hwaddr phb_spacing = 0x1000000000ULL; /* 64 GiB */
- const hwaddr mmio_offset = 0xa0000000; /* 2 GiB + 512 MiB */
- const hwaddr pio_offset = 0x80000000; /* 2 GiB */
- const uint32_t max_index = 255;
- const hwaddr phb0_alignment = 0x10000000000ULL; /* 1 TiB */
-
- uint64_t ram_top = MACHINE(spapr)->ram_size;
- hwaddr phb0_base, phb_base;
- int i;
-
- /* Do we have device memory? */
- if (MACHINE(spapr)->device_memory) {
- /* Can't just use maxram_size, because there may be an
- * alignment gap between normal and device memory regions
- */
- ram_top = MACHINE(spapr)->device_memory->base +
- memory_region_size(&MACHINE(spapr)->device_memory->mr);
- }
-
- phb0_base = QEMU_ALIGN_UP(ram_top, phb0_alignment);
-
- if (index > max_index) {
- error_setg(errp, "\"index\" for PAPR PHB is too large (max %u)",
- max_index);
- return false;
- }
-
- *buid = base_buid + index;
- for (i = 0; i < n_dma; ++i) {
- liobns[i] = SPAPR_PCI_LIOBN(index, i);
- }
-
- phb_base = phb0_base + index * phb_spacing;
- *pio = phb_base + pio_offset;
- *mmio32 = phb_base + mmio_offset;
- /*
- * We don't set the 64-bit MMIO window, relying on the PHB's
- * fallback behaviour of automatically splitting a large "32-bit"
- * window into contiguous 32-bit and 64-bit windows
- */
-
- return true;
-}
-
-static void spapr_machine_2_7_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
- static GlobalProperty compat[] = {
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem_win_size", "0xf80000000", },
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem64_win_size", "0", },
- { TYPE_POWERPC_CPU, "pre-2.8-migration", "on", },
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "pre-2.8-migration", "on", },
- };
-
- spapr_machine_2_8_class_options(mc);
- mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3");
- mc->default_machine_opts = "modern-hotplug-events=off";
- compat_props_add(mc->compat_props, hw_compat_2_7, hw_compat_2_7_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
- smc->phb_placement = phb_placement_2_7;
-}
-
-DEFINE_SPAPR_MACHINE(2, 7);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 8f1964ce52..7e24084673 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1814,30 +1814,15 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
assert(sphb->index != (uint32_t)-1); /* checked in spapr_phb_pre_plug() */
- if (sphb->mem64_win_size != 0) {
- if (sphb->mem_win_size > SPAPR_PCI_MEM32_WIN_SIZE) {
- error_setg(errp, "32-bit memory window of size 0x%"HWADDR_PRIx
- " (max 2 GiB)", sphb->mem_win_size);
- return;
- }
-
- /* 64-bit window defaults to identity mapping */
- sphb->mem64_win_pciaddr = sphb->mem64_win_addr;
- } else if (sphb->mem_win_size > SPAPR_PCI_MEM32_WIN_SIZE) {
- /*
- * For compatibility with old configuration, if no 64-bit MMIO
- * window is specified, but the ordinary (32-bit) memory
- * window is specified as > 2GiB, we treat it as a 2GiB 32-bit
- * window, with a 64-bit MMIO window following on immediately
- * afterwards
- */
- sphb->mem64_win_size = sphb->mem_win_size - SPAPR_PCI_MEM32_WIN_SIZE;
- sphb->mem64_win_addr = sphb->mem_win_addr + SPAPR_PCI_MEM32_WIN_SIZE;
- sphb->mem64_win_pciaddr =
- SPAPR_PCI_MEM_WIN_BUS_OFFSET + SPAPR_PCI_MEM32_WIN_SIZE;
- sphb->mem_win_size = SPAPR_PCI_MEM32_WIN_SIZE;
+ if (sphb->mem_win_size > SPAPR_PCI_MEM32_WIN_SIZE) {
+ error_setg(errp, "32-bit memory window of size 0x%"HWADDR_PRIx
+ " (max 2 GiB)", sphb->mem_win_size);
+ return;
}
+ /* 64-bit window defaults to identity mapping */
+ sphb->mem64_win_pciaddr = sphb->mem64_win_addr;
+
if (spapr_pci_find_phb(spapr, sphb->buid)) {
SpaprPhbState *s;
@@ -2066,8 +2051,6 @@ static Property spapr_phb_properties[] = {
(1ULL << 12) | (1ULL << 16)
| (1ULL << 21) | (1ULL << 24)),
DEFINE_PROP_UINT32("numa_node", SpaprPhbState, numa_node, -1),
- DEFINE_PROP_BOOL("pre-2.8-migration", SpaprPhbState,
- pre_2_8_migration, false),
DEFINE_PROP_BOOL("pcie-extended-configuration-space", SpaprPhbState,
pcie_ecs, true),
DEFINE_PROP_BOOL("pre-5.1-associativity", SpaprPhbState,
@@ -2105,20 +2088,6 @@ static int spapr_pci_pre_save(void *opaque)
gpointer key, value;
int i;
- if (sphb->pre_2_8_migration) {
- sphb->mig_liobn = sphb->dma_liobn[0];
- sphb->mig_mem_win_addr = sphb->mem_win_addr;
- sphb->mig_mem_win_size = sphb->mem_win_size;
- sphb->mig_io_win_addr = sphb->io_win_addr;
- sphb->mig_io_win_size = sphb->io_win_size;
-
- if ((sphb->mem64_win_size != 0)
- && (sphb->mem64_win_addr
- == (sphb->mem_win_addr + sphb->mem_win_size))) {
- sphb->mig_mem_win_size += sphb->mem64_win_size;
- }
- }
-
g_free(sphb->msi_devs);
sphb->msi_devs = NULL;
sphb->msi_devs_num = g_hash_table_size(sphb->msi);
@@ -2165,13 +2134,6 @@ static int spapr_pci_post_load(void *opaque, int version_id)
return 0;
}
-static bool pre_2_8_migration(void *opaque, int version_id)
-{
- SpaprPhbState *sphb = opaque;
-
- return sphb->pre_2_8_migration;
-}
-
static const VMStateDescription vmstate_spapr_pci = {
.name = "spapr_pci",
.version_id = 2,
@@ -2181,11 +2143,6 @@ static const VMStateDescription vmstate_spapr_pci = {
.post_load = spapr_pci_post_load,
.fields = (const VMStateField[]) {
VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL),
- VMSTATE_UINT32_TEST(mig_liobn, SpaprPhbState, pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_mem_win_addr, SpaprPhbState, pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_mem_win_size, SpaprPhbState, pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_io_win_addr, SpaprPhbState, pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_io_win_size, SpaprPhbState, pre_2_8_migration),
VMSTATE_STRUCT_ARRAY(lsi_table, SpaprPhbState, PCI_NUM_PINS, 0,
vmstate_spapr_pci_lsi, SpaprPciLsi),
VMSTATE_INT32(msi_devs_num, SpaprPhbState),
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index 23881d09e9..7768392986 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7452,7 +7452,6 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
}
static Property ppc_cpu_properties[] = {
- DEFINE_PROP_BOOL("pre-2.8-migration", PowerPCCPU, pre_2_8_migration, false),
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,
diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index d433fd45fc..21bed7c7c8 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -118,13 +118,6 @@ static const VMStateInfo vmstate_info_vsr = {
#define VMSTATE_VSR_ARRAY(_f, _s, _n) \
VMSTATE_VSR_ARRAY_V(_f, _s, _n, 0)
-static bool cpu_pre_2_8_migration(void *opaque, int version_id)
-{
- PowerPCCPU *cpu = opaque;
-
- return cpu->pre_2_8_migration;
-}
-
#if defined(TARGET_PPC64)
static bool cpu_pre_3_0_migration(void *opaque, int version_id)
{
@@ -139,22 +132,6 @@ static int cpu_pre_save(void *opaque)
PowerPCCPU *cpu = opaque;
CPUPPCState *env = &cpu->env;
int i;
- uint64_t insns_compat_mask =
- PPC_INSNS_BASE | PPC_ISEL | PPC_STRING | PPC_MFTB
- | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES
- | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | PPC_FLOAT_FRSQRTES
- | PPC_FLOAT_STFIWX | PPC_FLOAT_EXT
- | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ
- | PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC
- | PPC_64B | PPC_64BX | PPC_ALTIVEC
- | PPC_SEGMENT_64B | PPC_SLBI | PPC_POPCNTB | PPC_POPCNTWD;
- uint64_t insns_compat_mask2 = PPC2_VSX | PPC2_VSX207 | PPC2_DFP | PPC2_DBRX
- | PPC2_PERM_ISA206 | PPC2_DIVE_ISA206
- | PPC2_ATOMIC_ISA206 | PPC2_FP_CVT_ISA206
- | PPC2_FP_TST_ISA206 | PPC2_BCTAR_ISA207
- | PPC2_LSQ_ISA207 | PPC2_ALTIVEC_207
- | PPC2_ISA205 | PPC2_ISA207S | PPC2_FP_CVT_S64 | PPC2_TM
- | PPC2_MEM_LWSYNC;
env->spr[SPR_LR] = env->lr;
env->spr[SPR_CTR] = env->ctr;
@@ -177,29 +154,6 @@ static int cpu_pre_save(void *opaque)
env->spr[SPR_IBAT4U + 2 * i + 1] = env->IBAT[1][i + 4];
}
- /* Hacks for migration compatibility between 2.6, 2.7 & 2.8 */
- if (cpu->pre_2_8_migration) {
- /*
- * Mask out bits that got added to msr_mask since the versions
- * which stupidly included it in the migration stream.
- */
- target_ulong metamask = 0
-#if defined(TARGET_PPC64)
- | (1ULL << MSR_TS0)
- | (1ULL << MSR_TS1)
-#endif
- ;
- cpu->mig_msr_mask = env->msr_mask & ~metamask;
- cpu->mig_insns_flags = env->insns_flags & insns_compat_mask;
- /*
- * CPU models supported by old machines all have
- * PPC_MEM_TLBIE, so we set it unconditionally to allow
- * backward migration from a POWER9 host to a POWER8 host.
- */
- cpu->mig_insns_flags |= PPC_MEM_TLBIE;
- cpu->mig_insns_flags2 = env->insns_flags2 & insns_compat_mask2;
- cpu->mig_nb_BATs = env->nb_BATs;
- }
if (cpu->pre_3_0_migration) {
if (cpu->hash64_opts) {
cpu->mig_slb_nr = cpu->hash64_opts->slb_size;
@@ -760,12 +714,6 @@ const VMStateDescription vmstate_ppc_cpu = {
/* Backward compatible internal state */
VMSTATE_UINTTL(env.hflags_compat_nmsr, PowerPCCPU),
- /* Sanity checking */
- VMSTATE_UINTTL_TEST(mig_msr_mask, PowerPCCPU, cpu_pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_insns_flags, PowerPCCPU, cpu_pre_2_8_migration),
- VMSTATE_UINT64_TEST(mig_insns_flags2, PowerPCCPU,
- cpu_pre_2_8_migration),
- VMSTATE_UINT32_TEST(mig_nb_BATs, PowerPCCPU, cpu_pre_2_8_migration),
VMSTATE_END_OF_LIST()
},
.subsections = (const VMStateDescription * const []) {
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 08/14] ppc/spapr: remove deprecated machine pseries-2.8
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (6 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 07/14] ppc/spapr: remove deprecated machine pseries-2.7 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 09/14] ppc/spapr: remove deprecated machine pseries-2.9 Harsh Prateek Bora
` (5 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.8 specific code with this patch for now.
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>
---
hw/ppc/spapr.c | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index c89ab89b97..93decfcbeb 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5185,24 +5185,6 @@ static void spapr_machine_2_9_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 9);
-/*
- * pseries-2.8
- */
-
-static void spapr_machine_2_8_class_options(MachineClass *mc)
-{
- static GlobalProperty compat[] = {
- { TYPE_SPAPR_PCI_HOST_BRIDGE, "pcie-extended-configuration-space", "off" },
- };
-
- spapr_machine_2_9_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_8, hw_compat_2_8_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
- mc->numa_mem_align_shift = 23;
-}
-
-DEFINE_SPAPR_MACHINE(2, 8);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 09/14] ppc/spapr: remove deprecated machine pseries-2.9
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (7 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 08/14] ppc/spapr: remove deprecated machine pseries-2.8 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 10/14] ppc/spapr: remove deprecated machine pseries-2.10 Harsh Prateek Bora
` (4 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 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>
---
include/hw/ppc/spapr.h | 1 -
target/ppc/cpu.h | 1 -
hw/intc/xics.c | 16 -------
hw/ppc/spapr.c | 104 -----------------------------------------
migration/savevm.c | 19 --------
target/ppc/cpu_init.c | 2 -
target/ppc/machine.c | 2 +-
7 files changed, 1 insertion(+), 144 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 6e9e62386c..af4aa1cb0f 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -143,7 +143,6 @@ struct SpaprMachineClass {
/*< public >*/
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
- bool pre_2_10_has_unused_icps;
bool legacy_irq_allocation;
uint32_t nr_xirqs;
bool broken_host_serial_model; /* present real host info to the guest */
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index cab4a46fc1..74a0ab768d 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1456,7 +1456,6 @@ struct ArchCPU {
opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
/* Fields related to migration compatibility hacks */
- bool pre_2_10_migration;
bool pre_3_0_migration;
int32_t mig_slb_nr;
};
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 6f4d5271ea..e893363dc9 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -335,22 +335,6 @@ static void icp_realize(DeviceState *dev, Error **errp)
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)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 93decfcbeb..14a1314af6 100644
--- a/hw/ppc/spapr.c
+++ b/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;
}
-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)
{
MachineState *ms = MACHINE(spapr);
@@ -2711,7 +2656,6 @@ static void spapr_init_cpus(SpaprMachineState *spapr)
{
MachineState *machine = MACHINE(spapr);
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 CPUArchIdList *possible_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;
}
- 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++) {
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)
{
MachineState *ms = MACHINE(hotplug_dev);
- SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(ms);
CPUCore *cc = CPU_CORE(dev);
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);
core_slot->cpu = NULL;
qdev_unrealize(dev);
@@ -4009,7 +3932,6 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev)
{
SpaprMachineState *spapr = SPAPR_MACHINE(OBJECT(hotplug_dev));
MachineClass *mc = MACHINE_GET_CLASS(spapr);
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
SpaprCpuCore *core = SPAPR_CPU_CORE(OBJECT(dev));
CPUCore *cc = CPU_CORE(dev);
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,
@@ -5165,26 +5081,6 @@ static void spapr_machine_2_10_class_options(MachineClass *mc)
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)
{
type_register_static(&spapr_machine_info);
diff --git a/migration/savevm.c b/migration/savevm.c
index 7e1e27182a..839a34402b 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -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,
const VMStateDescription *vmsd,
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index 7768392986..39c19e6674 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7452,8 +7452,6 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
}
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,
false),
DEFINE_PROP_END_OF_LIST(),
diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 21bed7c7c8..47495b68b1 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -630,7 +630,7 @@ static bool compat_needed(void *opaque)
PowerPCCPU *cpu = opaque;
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 = {
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 10/14] ppc/spapr: remove deprecated machine pseries-2.10
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (8 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 09/14] ppc/spapr: remove deprecated machine pseries-2.9 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 11/14] ppc/spapr: remove deprecated machine pseries-2.11 Harsh Prateek Bora
` (3 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.10 specific code with this patch for now.
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>
---
hw/ppc/spapr.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 14a1314af6..4c76d2841c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5069,18 +5069,6 @@ static void spapr_machine_2_11_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 11);
-/*
- * pseries-2.10
- */
-
-static void spapr_machine_2_10_class_options(MachineClass *mc)
-{
- spapr_machine_2_11_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_10, hw_compat_2_10_len);
-}
-
-DEFINE_SPAPR_MACHINE(2, 10);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 11/14] ppc/spapr: remove deprecated machine pseries-2.11
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (9 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 10/14] ppc/spapr: remove deprecated machine pseries-2.10 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 12/14] ppc/spapr: remove deprecated machine pseries-2.12-sxxm Harsh Prateek Bora
` (2 subsequent siblings)
13 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 1392617d3576 intended to tag pseries-2.1 - 2.11 machines as
deprecated with reasons mentioned in its commit log.
Removing pseries-2.11 specific code with this patch.
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>
---
hw/ppc/spapr.c | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4c76d2841c..faf88a177b 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5054,21 +5054,6 @@ static void spapr_machine_2_12_sxxm_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE_TAGGED(2, 12, sxxm);
-/*
- * pseries-2.11
- */
-
-static void spapr_machine_2_11_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
-
- spapr_machine_2_12_class_options(mc);
- smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_ON;
- compat_props_add(mc->compat_props, hw_compat_2_11, hw_compat_2_11_len);
-}
-
-DEFINE_SPAPR_MACHINE(2, 11);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 12/14] ppc/spapr: remove deprecated machine pseries-2.12-sxxm
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (10 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 11/14] ppc/spapr: remove deprecated machine pseries-2.11 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 5:58 ` Cédric Le Goater
2024-10-07 15:38 ` [PATCH v3 13/14] ppc/spapr: remove deprecated machine pseries-2.12 Harsh Prateek Bora
2024-10-07 15:38 ` [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0 Harsh Prateek Bora
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 0cac0f1b964 marked pseries-2.12 machines as deprecated
with reasons mentioned in its commit log.
Removing pseries-2.12-sxxm specific code with this patch.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
hw/ppc/spapr.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index faf88a177b..9089134d07 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5042,18 +5042,6 @@ static void spapr_machine_2_12_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2, 12);
-static void spapr_machine_2_12_sxxm_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
-
- spapr_machine_2_12_class_options(mc);
- smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
- smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
- smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
-}
-
-DEFINE_SPAPR_MACHINE_TAGGED(2, 12, sxxm);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 12/14] ppc/spapr: remove deprecated machine pseries-2.12-sxxm
2024-10-07 15:38 ` [PATCH v3 12/14] ppc/spapr: remove deprecated machine pseries-2.12-sxxm Harsh Prateek Bora
@ 2024-10-11 5:58 ` Cédric Le Goater
0 siblings, 0 replies; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 5:58 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> Commit 0cac0f1b964 marked pseries-2.12 machines as deprecated
> with reasons mentioned in its commit log.
> Removing pseries-2.12-sxxm specific code with this patch.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> ---
> hw/ppc/spapr.c | 12 ------------
> 1 file changed, 12 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index faf88a177b..9089134d07 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -5042,18 +5042,6 @@ static void spapr_machine_2_12_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(2, 12);
>
> -static void spapr_machine_2_12_sxxm_class_options(MachineClass *mc)
> -{
> - SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> -
> - spapr_machine_2_12_class_options(mc);
> - smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
> - smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
> - smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD;
> -}
> -
> -DEFINE_SPAPR_MACHINE_TAGGED(2, 12, sxxm);
I think macro DEFINE_SPAPR_MACHINE_TAGGED can be remove now.
Thanks,
C.
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 13/14] ppc/spapr: remove deprecated machine pseries-2.12
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (11 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 12/14] ppc/spapr: remove deprecated machine pseries-2.12-sxxm Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 6:01 ` Cédric Le Goater
2024-10-07 15:38 ` [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0 Harsh Prateek Bora
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
Commit 0cac0f1b964 marked pseries-2.12 machines as deprecated
with reasons mentioned in its commit log.
Removing pseries-2.12 specific code with this patch.
While at it, also remove pre-3.0-migration hacks introduced for backward
compatibility which are now turned useless.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
docs/about/deprecated.rst | 8 --------
include/hw/ppc/spapr_cpu_core.h | 1 -
target/ppc/cpu.h | 4 ----
hw/ppc/spapr.c | 25 -------------------------
hw/ppc/spapr_cpu_core.c | 12 +++---------
target/ppc/cpu_init.c | 3 +--
target/ppc/machine.c | 16 ----------------
7 files changed, 4 insertions(+), 65 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 48b230b0a0..3b312a5de2 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -243,14 +243,6 @@ These old machine types are quite neglected nowadays and thus might have
various pitfalls with regards to live migration. Use a newer machine type
instead.
-``pseries-2.1`` up to ``pseries-2.12`` (since 9.0)
-''''''''''''''''''''''''''''''''''''''''''''''''''
-
-Older pseries machines before version 3.0 have undergone many changes
-to correct issues, mostly regarding migration compatibility. These are
-no longer maintained and removing them will make the code easier to
-read and maintain. Use versions 3.0 and above as a replacement.
-
PPC 405 ``ref405ep`` machine (since 9.1)
''''''''''''''''''''''''''''''''''''''''
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 69a52e39b8..68f7083483 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -28,7 +28,6 @@ struct SpaprCpuCore {
/*< public >*/
PowerPCCPU **threads;
int node_id;
- bool pre_3_0_migration; /* older machine don't know about SpaprCpuState */
};
struct SpaprCpuCoreClass {
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index 74a0ab768d..506c8c825c 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1454,10 +1454,6 @@ struct ArchCPU {
/* Those resources are used only during code translation */
/* opcode handlers */
opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
-
- /* Fields related to migration compatibility hacks */
- bool pre_3_0_migration;
- int32_t mig_slb_nr;
};
/**
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 9089134d07..f15467049a 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -5017,31 +5017,6 @@ static void spapr_machine_3_0_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(3, 0);
-/*
- * pseries-2.12
- */
-static void spapr_machine_2_12_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
- static GlobalProperty compat[] = {
- { TYPE_POWERPC_CPU, "pre-3.0-migration", "on" },
- { TYPE_SPAPR_CPU_CORE, "pre-3.0-migration", "on" },
- };
-
- spapr_machine_3_0_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_2_12, hw_compat_2_12_len);
- compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
-
- /* We depend on kvm_enabled() to choose a default value for the
- * hpt-max-page-size capability. Of course we can't do it here
- * because this is too early and the HW accelerator isn't initialized
- * yet. Postpone this to machine init (see default_caps_with_cpu()).
- */
- smc->default_caps.caps[SPAPR_CAP_HPT_MAXPAGESIZE] = 0;
-}
-
-DEFINE_SPAPR_MACHINE(2, 12);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 4642245168..1a84345f36 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -197,9 +197,7 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc)
{
CPUPPCState *env = &cpu->env;
- if (!sc->pre_3_0_migration) {
- vmstate_unregister(NULL, &vmstate_spapr_cpu_state, cpu->machine_data);
- }
+ vmstate_unregister(NULL, &vmstate_spapr_cpu_state, cpu->machine_data);
spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu);
cpu_ppc_tb_free(env);
qdev_unrealize(DEVICE(cpu));
@@ -285,10 +283,8 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
return false;
}
- if (!sc->pre_3_0_migration) {
- vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
- cpu->machine_data);
- }
+ vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
+ cpu->machine_data);
return true;
}
@@ -366,8 +362,6 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
static Property spapr_cpu_core_properties[] = {
DEFINE_PROP_INT32("node-id", SpaprCpuCore, node_id, CPU_UNSET_NUMA_NODE_ID),
- DEFINE_PROP_BOOL("pre-3.0-migration", SpaprCpuCore, pre_3_0_migration,
- false),
DEFINE_PROP_END_OF_LIST()
};
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index 39c19e6674..011e53d961 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7452,8 +7452,7 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
}
static Property ppc_cpu_properties[] = {
- DEFINE_PROP_BOOL("pre-3.0-migration", PowerPCCPU, pre_3_0_migration,
- false),
+ /* add default property here */
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 47495b68b1..2738f429c9 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -118,15 +118,6 @@ static const VMStateInfo vmstate_info_vsr = {
#define VMSTATE_VSR_ARRAY(_f, _s, _n) \
VMSTATE_VSR_ARRAY_V(_f, _s, _n, 0)
-#if defined(TARGET_PPC64)
-static bool cpu_pre_3_0_migration(void *opaque, int version_id)
-{
- PowerPCCPU *cpu = opaque;
-
- return cpu->pre_3_0_migration;
-}
-#endif
-
static int cpu_pre_save(void *opaque)
{
PowerPCCPU *cpu = opaque;
@@ -154,12 +145,6 @@ static int cpu_pre_save(void *opaque)
env->spr[SPR_IBAT4U + 2 * i + 1] = env->IBAT[1][i + 4];
}
- if (cpu->pre_3_0_migration) {
- if (cpu->hash64_opts) {
- cpu->mig_slb_nr = cpu->hash64_opts->slb_size;
- }
- }
-
/* Used to retain migration compatibility for pre 6.0 for 601 machines. */
env->hflags_compat_nmsr = 0;
@@ -508,7 +493,6 @@ static const VMStateDescription vmstate_slb = {
.needed = slb_needed,
.post_load = slb_post_load,
.fields = (const VMStateField[]) {
- VMSTATE_INT32_TEST(mig_slb_nr, PowerPCCPU, cpu_pre_3_0_migration),
VMSTATE_SLB_ARRAY(env.slb, PowerPCCPU, MAX_SLB_ENTRIES),
VMSTATE_END_OF_LIST()
}
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 13/14] ppc/spapr: remove deprecated machine pseries-2.12
2024-10-07 15:38 ` [PATCH v3 13/14] ppc/spapr: remove deprecated machine pseries-2.12 Harsh Prateek Bora
@ 2024-10-11 6:01 ` Cédric Le Goater
0 siblings, 0 replies; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 6:01 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> Commit 0cac0f1b964 marked pseries-2.12 machines as deprecated
> with reasons mentioned in its commit log.
> Removing pseries-2.12 specific code with this patch.
>
> While at it, also remove pre-3.0-migration hacks introduced for backward
> compatibility which are now turned useless.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> ---
> docs/about/deprecated.rst | 8 --------
> include/hw/ppc/spapr_cpu_core.h | 1 -
> target/ppc/cpu.h | 4 ----
> hw/ppc/spapr.c | 25 -------------------------
> hw/ppc/spapr_cpu_core.c | 12 +++---------
> target/ppc/cpu_init.c | 3 +--
> target/ppc/machine.c | 16 ----------------
> 7 files changed, 4 insertions(+), 65 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 48b230b0a0..3b312a5de2 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -243,14 +243,6 @@ These old machine types are quite neglected nowadays and thus might have
> various pitfalls with regards to live migration. Use a newer machine type
> instead.
>
> -``pseries-2.1`` up to ``pseries-2.12`` (since 9.0)
> -''''''''''''''''''''''''''''''''''''''''''''''''''
> -
> -Older pseries machines before version 3.0 have undergone many changes
> -to correct issues, mostly regarding migration compatibility. These are
> -no longer maintained and removing them will make the code easier to
> -read and maintain. Use versions 3.0 and above as a replacement.
> -
> PPC 405 ``ref405ep`` machine (since 9.1)
> ''''''''''''''''''''''''''''''''''''''''
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 69a52e39b8..68f7083483 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -28,7 +28,6 @@ struct SpaprCpuCore {
> /*< public >*/
> PowerPCCPU **threads;
> int node_id;
> - bool pre_3_0_migration; /* older machine don't know about SpaprCpuState */
> };
>
> struct SpaprCpuCoreClass {
> diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
> index 74a0ab768d..506c8c825c 100644
> --- a/target/ppc/cpu.h
> +++ b/target/ppc/cpu.h
> @@ -1454,10 +1454,6 @@ struct ArchCPU {
> /* Those resources are used only during code translation */
> /* opcode handlers */
> opc_handler_t *opcodes[PPC_CPU_OPCODES_LEN];
> -
> - /* Fields related to migration compatibility hacks */
> - bool pre_3_0_migration;
> - int32_t mig_slb_nr;
> };
>
> /**
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 9089134d07..f15467049a 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -5017,31 +5017,6 @@ static void spapr_machine_3_0_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(3, 0);
>
> -/*
> - * pseries-2.12
> - */
> -static void spapr_machine_2_12_class_options(MachineClass *mc)
> -{
> - SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> - static GlobalProperty compat[] = {
> - { TYPE_POWERPC_CPU, "pre-3.0-migration", "on" },
> - { TYPE_SPAPR_CPU_CORE, "pre-3.0-migration", "on" },
> - };
> -
> - spapr_machine_3_0_class_options(mc);
> - compat_props_add(mc->compat_props, hw_compat_2_12, hw_compat_2_12_len);
> - compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
> -
> - /* We depend on kvm_enabled() to choose a default value for the
> - * hpt-max-page-size capability. Of course we can't do it here
> - * because this is too early and the HW accelerator isn't initialized
> - * yet. Postpone this to machine init (see default_caps_with_cpu()).
> - */
> - smc->default_caps.caps[SPAPR_CAP_HPT_MAXPAGESIZE] = 0;
> -}
> -
> -DEFINE_SPAPR_MACHINE(2, 12);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 4642245168..1a84345f36 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -197,9 +197,7 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc)
> {
> CPUPPCState *env = &cpu->env;
>
> - if (!sc->pre_3_0_migration) {
> - vmstate_unregister(NULL, &vmstate_spapr_cpu_state, cpu->machine_data);
> - }
> + vmstate_unregister(NULL, &vmstate_spapr_cpu_state, cpu->machine_data);
> spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu);
> cpu_ppc_tb_free(env);
> qdev_unrealize(DEVICE(cpu));
> @@ -285,10 +283,8 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr,
> return false;
> }
>
> - if (!sc->pre_3_0_migration) {
> - vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
> - cpu->machine_data);
> - }
> + vmstate_register(NULL, cs->cpu_index, &vmstate_spapr_cpu_state,
> + cpu->machine_data);
> return true;
> }
>
> @@ -366,8 +362,6 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
>
> static Property spapr_cpu_core_properties[] = {
> DEFINE_PROP_INT32("node-id", SpaprCpuCore, node_id, CPU_UNSET_NUMA_NODE_ID),
> - DEFINE_PROP_BOOL("pre-3.0-migration", SpaprCpuCore, pre_3_0_migration,
> - false),
> DEFINE_PROP_END_OF_LIST()
> };
>
> diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
> index 39c19e6674..011e53d961 100644
> --- a/target/ppc/cpu_init.c
> +++ b/target/ppc/cpu_init.c
> @@ -7452,8 +7452,7 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
> }
>
> static Property ppc_cpu_properties[] = {
> - DEFINE_PROP_BOOL("pre-3.0-migration", PowerPCCPU, pre_3_0_migration,
> - false),
> + /* add default property here */
> DEFINE_PROP_END_OF_LIST(),
> };
>
> diff --git a/target/ppc/machine.c b/target/ppc/machine.c
> index 47495b68b1..2738f429c9 100644
> --- a/target/ppc/machine.c
> +++ b/target/ppc/machine.c
> @@ -118,15 +118,6 @@ static const VMStateInfo vmstate_info_vsr = {
> #define VMSTATE_VSR_ARRAY(_f, _s, _n) \
> VMSTATE_VSR_ARRAY_V(_f, _s, _n, 0)
>
> -#if defined(TARGET_PPC64)
> -static bool cpu_pre_3_0_migration(void *opaque, int version_id)
> -{
> - PowerPCCPU *cpu = opaque;
> -
> - return cpu->pre_3_0_migration;
> -}
> -#endif
> -
> static int cpu_pre_save(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> @@ -154,12 +145,6 @@ static int cpu_pre_save(void *opaque)
> env->spr[SPR_IBAT4U + 2 * i + 1] = env->IBAT[1][i + 4];
> }
>
> - if (cpu->pre_3_0_migration) {
> - if (cpu->hash64_opts) {
> - cpu->mig_slb_nr = cpu->hash64_opts->slb_size;
> - }
> - }
> -
> /* Used to retain migration compatibility for pre 6.0 for 601 machines. */
> env->hflags_compat_nmsr = 0;
>
> @@ -508,7 +493,6 @@ static const VMStateDescription vmstate_slb = {
> .needed = slb_needed,
> .post_load = slb_post_load,
> .fields = (const VMStateField[]) {
> - VMSTATE_INT32_TEST(mig_slb_nr, PowerPCCPU, cpu_pre_3_0_migration),
> VMSTATE_SLB_ARRAY(env.slb, PowerPCCPU, MAX_SLB_ENTRIES),
> VMSTATE_END_OF_LIST()
> }
you should update the vmstate version too.
Thanks,
C.
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0
2024-10-07 15:38 [PATCH v3 00/14] ppc/spapr: remove deprecated machines specific code Harsh Prateek Bora
` (12 preceding siblings ...)
2024-10-07 15:38 ` [PATCH v3 13/14] ppc/spapr: remove deprecated machine pseries-2.12 Harsh Prateek Bora
@ 2024-10-07 15:38 ` Harsh Prateek Bora
2024-10-11 5:57 ` Cédric Le Goater
13 siblings, 1 reply; 25+ messages in thread
From: Harsh Prateek Bora @ 2024-10-07 15:38 UTC (permalink / raw)
To: qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413, clg
As per Qemu's deprecation policy [1], and the mailing list discussion
that happened on [2], pseries-3.0 is more than 6 years old since release
and therefore due for deletion as already deprecated for >3 years.
[1] https://www.qemu.org/docs/master/about/deprecated.html
[2] https://lore.kernel.org/qemu-devel/1d7c210e-d7a6-4233-b555-c99a41f3c4e2@kaod.org/
While at it, also remove related legacy irq hacks which are now obsolete.
Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
include/hw/ppc/spapr.h | 1 -
include/hw/ppc/spapr_irq.h | 1 -
hw/ppc/spapr.c | 27 +--------------------------
hw/ppc/spapr_events.c | 8 --------
hw/ppc/spapr_irq.c | 16 +---------------
hw/ppc/spapr_pci.c | 32 ++++----------------------------
hw/ppc/spapr_vio.c | 9 ---------
7 files changed, 6 insertions(+), 88 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index af4aa1cb0f..bac3f8561b 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -143,7 +143,6 @@ struct SpaprMachineClass {
/*< public >*/
bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
- bool legacy_irq_allocation;
uint32_t nr_xirqs;
bool broken_host_serial_model; /* present real host info to the guest */
bool pre_4_1_migration; /* don't migrate hpt-max-page-size */
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index cb9a85f657..5ddd1107c3 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -100,7 +100,6 @@ typedef struct SpaprIrq {
} SpaprIrq;
extern SpaprIrq spapr_irq_xics;
-extern SpaprIrq spapr_irq_xics_legacy;
extern SpaprIrq spapr_irq_xive;
extern SpaprIrq spapr_irq_dual;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f15467049a..8fa75ec541 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3312,9 +3312,7 @@ static char *spapr_get_ic_mode(Object *obj, Error **errp)
{
SpaprMachineState *spapr = SPAPR_MACHINE(obj);
- if (spapr->irq == &spapr_irq_xics_legacy) {
- return g_strdup("legacy");
- } else if (spapr->irq == &spapr_irq_xics) {
+ if (spapr->irq == &spapr_irq_xics) {
return g_strdup("xics");
} else if (spapr->irq == &spapr_irq_xive) {
return g_strdup("xive");
@@ -3328,11 +3326,6 @@ static void spapr_set_ic_mode(Object *obj, const char *value, Error **errp)
{
SpaprMachineState *spapr = SPAPR_MACHINE(obj);
- if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
- error_setg(errp, "This machine only uses the legacy XICS backend, don't pass ic-mode");
- return;
- }
-
/* The legacy IRQ backend can not be set */
if (strcmp(value, "xics") == 0) {
spapr->irq = &spapr_irq_xics;
@@ -4999,24 +4992,6 @@ static void spapr_machine_3_1_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(3, 1);
-/*
- * pseries-3.0
- */
-
-static void spapr_machine_3_0_class_options(MachineClass *mc)
-{
- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
-
- spapr_machine_3_1_class_options(mc);
- compat_props_add(mc->compat_props, hw_compat_3_0, hw_compat_3_0_len);
-
- smc->legacy_irq_allocation = true;
- smc->nr_xirqs = 0x400;
- smc->irq = &spapr_irq_xics_legacy;
-}
-
-DEFINE_SPAPR_MACHINE(3, 0);
-
static void spapr_machine_register_types(void)
{
type_register_static(&spapr_machine_info);
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index 4dbf8e2e2e..12ae5bf57c 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -1043,10 +1043,6 @@ void spapr_events_init(SpaprMachineState *spapr)
{
int epow_irq = SPAPR_IRQ_EPOW;
- if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
- epow_irq = spapr_irq_findone(spapr, &error_fatal);
- }
-
spapr_irq_claim(spapr, epow_irq, false, &error_fatal);
QTAILQ_INIT(&spapr->pending_events);
@@ -1067,10 +1063,6 @@ void spapr_events_init(SpaprMachineState *spapr)
if (spapr->use_hotplug_event_source) {
int hp_irq = SPAPR_IRQ_HOTPLUG;
- if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
- hp_irq = spapr_irq_findone(spapr, &error_fatal);
- }
-
spapr_irq_claim(spapr, hp_irq, false, &error_fatal);
spapr_event_sources_register(spapr->event_sources, EVENT_CLASS_HOT_PLUG,
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index aebd7eaabb..cb153651c3 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -33,11 +33,6 @@ static const TypeInfo spapr_intc_info = {
static void spapr_irq_msi_init(SpaprMachineState *spapr)
{
- if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
- /* Legacy mode doesn't use this allocator */
- return;
- }
-
spapr->irq_map_nr = spapr_irq_nr_msis(spapr);
spapr->irq_map = bitmap_new(spapr->irq_map_nr);
}
@@ -286,11 +281,7 @@ uint32_t spapr_irq_nr_msis(SpaprMachineState *spapr)
{
SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
- if (smc->legacy_irq_allocation) {
- return smc->nr_xirqs;
- } else {
- return SPAPR_XIRQ_BASE + smc->nr_xirqs - SPAPR_IRQ_MSI;
- }
+ return SPAPR_XIRQ_BASE + smc->nr_xirqs - SPAPR_IRQ_MSI;
}
void spapr_irq_init(SpaprMachineState *spapr, Error **errp)
@@ -588,11 +579,6 @@ int spapr_irq_find(SpaprMachineState *spapr, int num, bool align, Error **errp)
return first + ics->offset;
}
-SpaprIrq spapr_irq_xics_legacy = {
- .xics = true,
- .xive = false,
-};
-
static void spapr_irq_register_types(void)
{
type_register_static(&spapr_intc_info);
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 7e24084673..c2bf89b2fd 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -269,7 +269,6 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
target_ulong args, uint32_t nret,
target_ulong rets)
{
- SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
uint32_t config_addr = rtas_ld(args, 0);
uint64_t buid = rtas_ldq(args, 1);
unsigned int func = rtas_ld(args, 3);
@@ -374,13 +373,8 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
}
/* Allocate MSIs */
- if (smc->legacy_irq_allocation) {
- irq = spapr_irq_find(spapr, req_num, ret_intr_type == RTAS_TYPE_MSI,
- &err);
- } else {
- irq = spapr_irq_msi_alloc(spapr, req_num,
- ret_intr_type == RTAS_TYPE_MSI, &err);
- }
+ irq = spapr_irq_msi_alloc(spapr, req_num,
+ ret_intr_type == RTAS_TYPE_MSI, &err);
if (err) {
error_reportf_err(err, "Can't allocate MSIs for device %x: ",
config_addr);
@@ -394,9 +388,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
if (i) {
spapr_irq_free(spapr, irq, i);
}
- if (!smc->legacy_irq_allocation) {
- spapr_irq_msi_free(spapr, irq, req_num);
- }
+ spapr_irq_msi_free(spapr, irq, req_num);
error_reportf_err(err, "Can't allocate MSIs for device %x: ",
config_addr);
rtas_st(rets, 0, RTAS_OUT_HW_ERROR);
@@ -1776,12 +1768,9 @@ static void spapr_phb_unrealize(DeviceState *dev)
static void spapr_phb_destroy_msi(gpointer opaque)
{
SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
- SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
SpaprPciMsi *msi = opaque;
- if (!smc->legacy_irq_allocation) {
- spapr_irq_msi_free(spapr, msi->first_irq, msi->num);
- }
+ spapr_irq_msi_free(spapr, msi->first_irq, msi->num);
spapr_irq_free(spapr, msi->first_irq, msi->num);
g_free(msi);
}
@@ -1795,7 +1784,6 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
SpaprMachineState *spapr =
(SpaprMachineState *) object_dynamic_cast(qdev_get_machine(),
TYPE_SPAPR_MACHINE);
- SpaprMachineClass *smc = spapr ? SPAPR_MACHINE_GET_CLASS(spapr) : NULL;
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
SpaprPhbState *sphb = SPAPR_PCI_HOST_BRIDGE(sbd);
PCIHostState *phb = PCI_HOST_BRIDGE(sbd);
@@ -1943,18 +1931,6 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
for (i = 0; i < PCI_NUM_PINS; i++) {
int irq = SPAPR_IRQ_PCI_LSI + sphb->index * PCI_NUM_PINS + i;
- if (smc->legacy_irq_allocation) {
- irq = spapr_irq_findone(spapr, errp);
- if (irq < 0) {
- error_prepend(errp, "can't allocate LSIs: ");
- /*
- * Older machines will never support PHB hotplug, ie, this is an
- * init only path and QEMU will terminate. No need to rollback.
- */
- return;
- }
- }
-
if (spapr_irq_claim(spapr, irq, true, errp) < 0) {
error_prepend(errp, "can't allocate LSIs: ");
goto unrealize;
diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
index 6a5a7f57c7..c9ce796f63 100644
--- a/hw/ppc/spapr_vio.c
+++ b/hw/ppc/spapr_vio.c
@@ -507,15 +507,6 @@ static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp)
dev->irq = spapr_vio_reg_to_irq(dev->reg);
- if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
- int irq = spapr_irq_findone(spapr, errp);
-
- if (irq < 0) {
- return;
- }
- dev->irq = irq;
- }
-
if (spapr_irq_claim(spapr, dev->irq, false, errp) < 0) {
return;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0
2024-10-07 15:38 ` [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0 Harsh Prateek Bora
@ 2024-10-11 5:57 ` Cédric Le Goater
2025-04-29 13:29 ` Cédric Le Goater
0 siblings, 1 reply; 25+ messages in thread
From: Cédric Le Goater @ 2024-10-11 5:57 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
On 10/7/24 17:38, Harsh Prateek Bora wrote:
> As per Qemu's deprecation policy [1], and the mailing list discussion
> that happened on [2], pseries-3.0 is more than 6 years old since release
> and therefore due for deletion as already deprecated for >3 years.
>
> [1] https://www.qemu.org/docs/master/about/deprecated.html
> [2] https://lore.kernel.org/qemu-devel/1d7c210e-d7a6-4233-b555-c99a41f3c4e2@kaod.org/
>
> While at it, also remove related legacy irq hacks which are now obsolete.
>
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
I induced you in error. This version has not been deprecated yet.
We will have to wait a little longer (2 cycles) to remove it when
the automatic deprecation process starts. See c9fd2d9a48ee. You
can resend when the 10.1 cycle starts, around april 2025.
Thanks,
C.
> ---
> include/hw/ppc/spapr.h | 1 -
> include/hw/ppc/spapr_irq.h | 1 -
> hw/ppc/spapr.c | 27 +--------------------------
> hw/ppc/spapr_events.c | 8 --------
> hw/ppc/spapr_irq.c | 16 +---------------
> hw/ppc/spapr_pci.c | 32 ++++----------------------------
> hw/ppc/spapr_vio.c | 9 ---------
> 7 files changed, 6 insertions(+), 88 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index af4aa1cb0f..bac3f8561b 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -143,7 +143,6 @@ struct SpaprMachineClass {
> /*< public >*/
> bool dr_phb_enabled; /* enable dynamic-reconfig/hotplug of PHBs */
> bool update_dt_enabled; /* enable KVMPPC_H_UPDATE_DT */
> - bool legacy_irq_allocation;
> uint32_t nr_xirqs;
> bool broken_host_serial_model; /* present real host info to the guest */
> bool pre_4_1_migration; /* don't migrate hpt-max-page-size */
> diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
> index cb9a85f657..5ddd1107c3 100644
> --- a/include/hw/ppc/spapr_irq.h
> +++ b/include/hw/ppc/spapr_irq.h
> @@ -100,7 +100,6 @@ typedef struct SpaprIrq {
> } SpaprIrq;
>
> extern SpaprIrq spapr_irq_xics;
> -extern SpaprIrq spapr_irq_xics_legacy;
> extern SpaprIrq spapr_irq_xive;
> extern SpaprIrq spapr_irq_dual;
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index f15467049a..8fa75ec541 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3312,9 +3312,7 @@ static char *spapr_get_ic_mode(Object *obj, Error **errp)
> {
> SpaprMachineState *spapr = SPAPR_MACHINE(obj);
>
> - if (spapr->irq == &spapr_irq_xics_legacy) {
> - return g_strdup("legacy");
> - } else if (spapr->irq == &spapr_irq_xics) {
> + if (spapr->irq == &spapr_irq_xics) {
> return g_strdup("xics");
> } else if (spapr->irq == &spapr_irq_xive) {
> return g_strdup("xive");
> @@ -3328,11 +3326,6 @@ static void spapr_set_ic_mode(Object *obj, const char *value, Error **errp)
> {
> SpaprMachineState *spapr = SPAPR_MACHINE(obj);
>
> - if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
> - error_setg(errp, "This machine only uses the legacy XICS backend, don't pass ic-mode");
> - return;
> - }
> -
> /* The legacy IRQ backend can not be set */
> if (strcmp(value, "xics") == 0) {
> spapr->irq = &spapr_irq_xics;
> @@ -4999,24 +4992,6 @@ static void spapr_machine_3_1_class_options(MachineClass *mc)
>
> DEFINE_SPAPR_MACHINE(3, 1);
>
> -/*
> - * pseries-3.0
> - */
> -
> -static void spapr_machine_3_0_class_options(MachineClass *mc)
> -{
> - SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> -
> - spapr_machine_3_1_class_options(mc);
> - compat_props_add(mc->compat_props, hw_compat_3_0, hw_compat_3_0_len);
> -
> - smc->legacy_irq_allocation = true;
> - smc->nr_xirqs = 0x400;
> - smc->irq = &spapr_irq_xics_legacy;
> -}
> -
> -DEFINE_SPAPR_MACHINE(3, 0);
> -
> static void spapr_machine_register_types(void)
> {
> type_register_static(&spapr_machine_info);
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index 4dbf8e2e2e..12ae5bf57c 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -1043,10 +1043,6 @@ void spapr_events_init(SpaprMachineState *spapr)
> {
> int epow_irq = SPAPR_IRQ_EPOW;
>
> - if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
> - epow_irq = spapr_irq_findone(spapr, &error_fatal);
> - }
> -
> spapr_irq_claim(spapr, epow_irq, false, &error_fatal);
>
> QTAILQ_INIT(&spapr->pending_events);
> @@ -1067,10 +1063,6 @@ void spapr_events_init(SpaprMachineState *spapr)
> if (spapr->use_hotplug_event_source) {
> int hp_irq = SPAPR_IRQ_HOTPLUG;
>
> - if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
> - hp_irq = spapr_irq_findone(spapr, &error_fatal);
> - }
> -
> spapr_irq_claim(spapr, hp_irq, false, &error_fatal);
>
> spapr_event_sources_register(spapr->event_sources, EVENT_CLASS_HOT_PLUG,
> diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
> index aebd7eaabb..cb153651c3 100644
> --- a/hw/ppc/spapr_irq.c
> +++ b/hw/ppc/spapr_irq.c
> @@ -33,11 +33,6 @@ static const TypeInfo spapr_intc_info = {
>
> static void spapr_irq_msi_init(SpaprMachineState *spapr)
> {
> - if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
> - /* Legacy mode doesn't use this allocator */
> - return;
> - }
> -
> spapr->irq_map_nr = spapr_irq_nr_msis(spapr);
> spapr->irq_map = bitmap_new(spapr->irq_map_nr);
> }
> @@ -286,11 +281,7 @@ uint32_t spapr_irq_nr_msis(SpaprMachineState *spapr)
> {
> SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
>
> - if (smc->legacy_irq_allocation) {
> - return smc->nr_xirqs;
> - } else {
> - return SPAPR_XIRQ_BASE + smc->nr_xirqs - SPAPR_IRQ_MSI;
> - }
> + return SPAPR_XIRQ_BASE + smc->nr_xirqs - SPAPR_IRQ_MSI;
> }
>
> void spapr_irq_init(SpaprMachineState *spapr, Error **errp)
> @@ -588,11 +579,6 @@ int spapr_irq_find(SpaprMachineState *spapr, int num, bool align, Error **errp)
> return first + ics->offset;
> }
>
> -SpaprIrq spapr_irq_xics_legacy = {
> - .xics = true,
> - .xive = false,
> -};
> -
> static void spapr_irq_register_types(void)
> {
> type_register_static(&spapr_intc_info);
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 7e24084673..c2bf89b2fd 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -269,7 +269,6 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
> target_ulong args, uint32_t nret,
> target_ulong rets)
> {
> - SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
> uint32_t config_addr = rtas_ld(args, 0);
> uint64_t buid = rtas_ldq(args, 1);
> unsigned int func = rtas_ld(args, 3);
> @@ -374,13 +373,8 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
> }
>
> /* Allocate MSIs */
> - if (smc->legacy_irq_allocation) {
> - irq = spapr_irq_find(spapr, req_num, ret_intr_type == RTAS_TYPE_MSI,
> - &err);
> - } else {
> - irq = spapr_irq_msi_alloc(spapr, req_num,
> - ret_intr_type == RTAS_TYPE_MSI, &err);
> - }
> + irq = spapr_irq_msi_alloc(spapr, req_num,
> + ret_intr_type == RTAS_TYPE_MSI, &err);
> if (err) {
> error_reportf_err(err, "Can't allocate MSIs for device %x: ",
> config_addr);
> @@ -394,9 +388,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, SpaprMachineState *spapr,
> if (i) {
> spapr_irq_free(spapr, irq, i);
> }
> - if (!smc->legacy_irq_allocation) {
> - spapr_irq_msi_free(spapr, irq, req_num);
> - }
> + spapr_irq_msi_free(spapr, irq, req_num);
> error_reportf_err(err, "Can't allocate MSIs for device %x: ",
> config_addr);
> rtas_st(rets, 0, RTAS_OUT_HW_ERROR);
> @@ -1776,12 +1768,9 @@ static void spapr_phb_unrealize(DeviceState *dev)
> static void spapr_phb_destroy_msi(gpointer opaque)
> {
> SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
> - SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
> SpaprPciMsi *msi = opaque;
>
> - if (!smc->legacy_irq_allocation) {
> - spapr_irq_msi_free(spapr, msi->first_irq, msi->num);
> - }
> + spapr_irq_msi_free(spapr, msi->first_irq, msi->num);
> spapr_irq_free(spapr, msi->first_irq, msi->num);
> g_free(msi);
> }
> @@ -1795,7 +1784,6 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
> SpaprMachineState *spapr =
> (SpaprMachineState *) object_dynamic_cast(qdev_get_machine(),
> TYPE_SPAPR_MACHINE);
> - SpaprMachineClass *smc = spapr ? SPAPR_MACHINE_GET_CLASS(spapr) : NULL;
> SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
> SpaprPhbState *sphb = SPAPR_PCI_HOST_BRIDGE(sbd);
> PCIHostState *phb = PCI_HOST_BRIDGE(sbd);
> @@ -1943,18 +1931,6 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp)
> for (i = 0; i < PCI_NUM_PINS; i++) {
> int irq = SPAPR_IRQ_PCI_LSI + sphb->index * PCI_NUM_PINS + i;
>
> - if (smc->legacy_irq_allocation) {
> - irq = spapr_irq_findone(spapr, errp);
> - if (irq < 0) {
> - error_prepend(errp, "can't allocate LSIs: ");
> - /*
> - * Older machines will never support PHB hotplug, ie, this is an
> - * init only path and QEMU will terminate. No need to rollback.
> - */
> - return;
> - }
> - }
> -
> if (spapr_irq_claim(spapr, irq, true, errp) < 0) {
> error_prepend(errp, "can't allocate LSIs: ");
> goto unrealize;
> diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
> index 6a5a7f57c7..c9ce796f63 100644
> --- a/hw/ppc/spapr_vio.c
> +++ b/hw/ppc/spapr_vio.c
> @@ -507,15 +507,6 @@ static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp)
>
> dev->irq = spapr_vio_reg_to_irq(dev->reg);
>
> - if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
> - int irq = spapr_irq_findone(spapr, errp);
> -
> - if (irq < 0) {
> - return;
> - }
> - dev->irq = irq;
> - }
> -
> if (spapr_irq_claim(spapr, dev->irq, false, errp) < 0) {
> return;
> }
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0
2024-10-11 5:57 ` Cédric Le Goater
@ 2025-04-29 13:29 ` Cédric Le Goater
2025-05-02 10:24 ` Harsh Prateek Bora
0 siblings, 1 reply; 25+ messages in thread
From: Cédric Le Goater @ 2025-04-29 13:29 UTC (permalink / raw)
To: Harsh Prateek Bora, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
Hello Harsh,
On 10/11/24 07:57, Cédric Le Goater wrote:
> On 10/7/24 17:38, Harsh Prateek Bora wrote:
>> As per Qemu's deprecation policy [1], and the mailing list discussion
>> that happened on [2], pseries-3.0 is more than 6 years old since release
>> and therefore due for deletion as already deprecated for >3 years.
>>
>> [1] https://www.qemu.org/docs/master/about/deprecated.html
>> [2] https://lore.kernel.org/qemu-devel/1d7c210e-d7a6-4233-b555-c99a41f3c4e2@kaod.org/
>>
>> While at it, also remove related legacy irq hacks which are now obsolete.
>>
>> Suggested-by: Cédric Le Goater <clg@kaod.org>
>> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
>
> I induced you in error. This version has not been deprecated yet.
>
> We will have to wait a little longer (2 cycles) to remove it when
> the automatic deprecation process starts. See c9fd2d9a48ee. You
> can resend when the 10.1 cycle starts, around april 2025.
Machines pseries-3.0, 3.1 and 4.0 can now be removed.
Thanks,
C.
$ QEMU_DELETE_MACHINES=1 ./install/bin/qemu-system-ppc64 -machine ? | grep pseries
pseries-10.0 pSeries Logical Partition (PAPR compliant)
pseries pSeries Logical Partition (PAPR compliant) (alias of pseries-10.1)
pseries-10.1 pSeries Logical Partition (PAPR compliant) (default)
pseries-4.1 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-4.2 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-5.0 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-5.1 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-5.2 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-6.0 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-6.1 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-6.2 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-7.0 pSeries Logical Partition (PAPR compliant) (deprecated)
pseries-7.1 pSeries Logical Partition (PAPR compliant)
pseries-7.2 pSeries Logical Partition (PAPR compliant)
pseries-8.0 pSeries Logical Partition (PAPR compliant)
pseries-8.1 pSeries Logical Partition (PAPR compliant)
pseries-8.2 pSeries Logical Partition (PAPR compliant)
pseries-9.0 pSeries Logical Partition (PAPR compliant)
pseries-9.1 pSeries Logical Partition (PAPR compliant)
pseries-9.2 pSeries Logical Partition (PAPR compliant)
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 14/14] ppc/spapr: remove deprecated machine pseries-3.0
2025-04-29 13:29 ` Cédric Le Goater
@ 2025-05-02 10:24 ` Harsh Prateek Bora
0 siblings, 0 replies; 25+ messages in thread
From: Harsh Prateek Bora @ 2025-05-02 10:24 UTC (permalink / raw)
To: Cédric Le Goater, qemu-ppc, qemu-devel; +Cc: npiggin, danielhb413
Hi Cedric,
On 4/29/25 18:59, Cédric Le Goater wrote:
> Hello Harsh,
>
> On 10/11/24 07:57, Cédric Le Goater wrote:
>> On 10/7/24 17:38, Harsh Prateek Bora wrote:
>>> As per Qemu's deprecation policy [1], and the mailing list discussion
>>> that happened on [2], pseries-3.0 is more than 6 years old since release
>>> and therefore due for deletion as already deprecated for >3 years.
>>>
>>> [1] https://www.qemu.org/docs/master/about/deprecated.html
>>> [2]
>>> https://lore.kernel.org/qemu-devel/1d7c210e-d7a6-4233-b555-c99a41f3c4e2@kaod.org/
>>>
>>> While at it, also remove related legacy irq hacks which are now
>>> obsolete.
>>>
>>> Suggested-by: Cédric Le Goater <clg@kaod.org>
>>> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
>>
>> I induced you in error. This version has not been deprecated yet.
>>
>> We will have to wait a little longer (2 cycles) to remove it when
>> the automatic deprecation process starts. See c9fd2d9a48ee. You
>> can resend when the 10.1 cycle starts, around april 2025.
>
> Machines pseries-3.0, 3.1 and 4.0 can now be removed.
Sure, will look into it.
Thanks
Harsh
>
> Thanks,
>
> C.
>
> $ QEMU_DELETE_MACHINES=1 ./install/bin/qemu-system-ppc64 -machine ? |
> grep pseries
> pseries-10.0 pSeries Logical Partition (PAPR compliant)
> pseries pSeries Logical Partition (PAPR compliant) (alias
> of pseries-10.1)
> pseries-10.1 pSeries Logical Partition (PAPR compliant) (default)
> pseries-4.1 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-4.2 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-5.0 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-5.1 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-5.2 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-6.0 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-6.1 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-6.2 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-7.0 pSeries Logical Partition (PAPR compliant)
> (deprecated)
> pseries-7.1 pSeries Logical Partition (PAPR compliant)
> pseries-7.2 pSeries Logical Partition (PAPR compliant)
> pseries-8.0 pSeries Logical Partition (PAPR compliant)
> pseries-8.1 pSeries Logical Partition (PAPR compliant)
> pseries-8.2 pSeries Logical Partition (PAPR compliant)
> pseries-9.0 pSeries Logical Partition (PAPR compliant)
> pseries-9.1 pSeries Logical Partition (PAPR compliant)
> pseries-9.2 pSeries Logical Partition (PAPR compliant)
>
^ permalink raw reply [flat|nested] 25+ messages in thread