[PATCH] ppc/pnv: Remove the XICSFabric Interface from the POWER9 machine

Cédric Le Goater posted 1 patch 4 years, 6 months ago
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test docker-clang@ubuntu failed
Test asan passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191003143617.21682-1-clg@kaod.org
Maintainers: David Gibson <david@gibson.dropbear.id.au>, "Cédric Le Goater" <clg@kaod.org>
hw/ppc/pnv.c | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
[PATCH] ppc/pnv: Remove the XICSFabric Interface from the POWER9 machine
Posted by Cédric Le Goater 4 years, 6 months ago
The POWER8 PowerNV machine needs to implement a XICSFabric interface
as this is the POWER8 interrupt controller model. But the POWER9
machine uselessly inherits of XICSFabric from the common PowerNV
machine definition.

Open code machine definitions to have a better control on the
different interfaces each machine should define.

Fixes: f30c843ced50 ("ppc/pnv: Introduce PowerNV machines with fixed CPU models")
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/ppc/pnv.c | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 77a86c6a2301..7cf64b6d2533 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -1485,23 +1485,21 @@ static void pnv_machine_class_init(ObjectClass *oc, void *data)
         .parent        = TYPE_PNV9_CHIP,          \
     }
 
-#define DEFINE_PNV_MACHINE_TYPE(cpu, class_initfn)      \
-    {                                                   \
-        .name          = MACHINE_TYPE_NAME(cpu),        \
-        .parent        = TYPE_PNV_MACHINE,              \
-        .instance_size = sizeof(PnvMachineState),       \
-        .instance_init = pnv_machine_instance_init,     \
-        .class_init    = class_initfn,                  \
-        .interfaces = (InterfaceInfo[]) {               \
-            { TYPE_XICS_FABRIC },                       \
-            { TYPE_INTERRUPT_STATS_PROVIDER },          \
-            { },                                        \
-        },                                              \
-    }
-
 static const TypeInfo types[] = {
-    DEFINE_PNV_MACHINE_TYPE("powernv8", pnv_machine_power8_class_init),
-    DEFINE_PNV_MACHINE_TYPE("powernv9", pnv_machine_power9_class_init),
+    {
+        .name          = MACHINE_TYPE_NAME("powernv9"),
+        .parent        = TYPE_PNV_MACHINE,
+        .class_init    = pnv_machine_power9_class_init,
+    },
+    {
+        .name          = MACHINE_TYPE_NAME("powernv8"),
+        .parent        = TYPE_PNV_MACHINE,
+        .class_init    = pnv_machine_power8_class_init,
+        .interfaces = (InterfaceInfo[]) {
+            { TYPE_XICS_FABRIC },
+            { },
+        },
+    },
     {
         .name          = TYPE_PNV_MACHINE,
         .parent        = TYPE_MACHINE,
@@ -1510,7 +1508,6 @@ static const TypeInfo types[] = {
         .instance_init = pnv_machine_instance_init,
         .class_init    = pnv_machine_class_init,
         .interfaces = (InterfaceInfo[]) {
-            { TYPE_XICS_FABRIC },
             { TYPE_INTERRUPT_STATS_PROVIDER },
             { },
         },
-- 
2.21.0


Re: [PATCH] ppc/pnv: Remove the XICSFabric Interface from the POWER9 machine
Posted by David Gibson 4 years, 6 months ago
On Thu, Oct 03, 2019 at 04:36:17PM +0200, Cédric Le Goater wrote:
> The POWER8 PowerNV machine needs to implement a XICSFabric interface
> as this is the POWER8 interrupt controller model. But the POWER9
> machine uselessly inherits of XICSFabric from the common PowerNV
> machine definition.
> 
> Open code machine definitions to have a better control on the
> different interfaces each machine should define.
> 
> Fixes: f30c843ced50 ("ppc/pnv: Introduce PowerNV machines with fixed CPU models")
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Applied to ppc-for-4.2, thanks.

> ---
>  hw/ppc/pnv.c | 31 ++++++++++++++-----------------
>  1 file changed, 14 insertions(+), 17 deletions(-)
> 
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 77a86c6a2301..7cf64b6d2533 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -1485,23 +1485,21 @@ static void pnv_machine_class_init(ObjectClass *oc, void *data)
>          .parent        = TYPE_PNV9_CHIP,          \
>      }
>  
> -#define DEFINE_PNV_MACHINE_TYPE(cpu, class_initfn)      \
> -    {                                                   \
> -        .name          = MACHINE_TYPE_NAME(cpu),        \
> -        .parent        = TYPE_PNV_MACHINE,              \
> -        .instance_size = sizeof(PnvMachineState),       \
> -        .instance_init = pnv_machine_instance_init,     \
> -        .class_init    = class_initfn,                  \
> -        .interfaces = (InterfaceInfo[]) {               \
> -            { TYPE_XICS_FABRIC },                       \
> -            { TYPE_INTERRUPT_STATS_PROVIDER },          \
> -            { },                                        \
> -        },                                              \
> -    }
> -
>  static const TypeInfo types[] = {
> -    DEFINE_PNV_MACHINE_TYPE("powernv8", pnv_machine_power8_class_init),
> -    DEFINE_PNV_MACHINE_TYPE("powernv9", pnv_machine_power9_class_init),
> +    {
> +        .name          = MACHINE_TYPE_NAME("powernv9"),
> +        .parent        = TYPE_PNV_MACHINE,
> +        .class_init    = pnv_machine_power9_class_init,
> +    },
> +    {
> +        .name          = MACHINE_TYPE_NAME("powernv8"),
> +        .parent        = TYPE_PNV_MACHINE,
> +        .class_init    = pnv_machine_power8_class_init,
> +        .interfaces = (InterfaceInfo[]) {
> +            { TYPE_XICS_FABRIC },
> +            { },
> +        },
> +    },
>      {
>          .name          = TYPE_PNV_MACHINE,
>          .parent        = TYPE_MACHINE,
> @@ -1510,7 +1508,6 @@ static const TypeInfo types[] = {
>          .instance_init = pnv_machine_instance_init,
>          .class_init    = pnv_machine_class_init,
>          .interfaces = (InterfaceInfo[]) {
> -            { TYPE_XICS_FABRIC },
>              { TYPE_INTERRUPT_STATS_PROVIDER },
>              { },
>          },

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson