diff mbox series

target/ppc: Deprecate Power8E and Power8NVL

Message ID 20250328040608.1580515-1-adityag@linux.ibm.com (mailing list archive)
State New
Headers show
Series target/ppc: Deprecate Power8E and Power8NVL | expand

Commit Message

Aditya Gupta March 28, 2025, 4:06 a.m. UTC
Power8E and Power8NVL variants are not of much use in QEMU now, and not
being maintained either.

Deprecate the 8E and 8NVL variants.

After deprecation, QEMU will print a warning like below when the
CPU/Chips are used:

    $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8nvl -nographic
    qemu-system-ppc64: warning: CPU model power8nvl_v1.0-powerpc64-cpu is deprecated -- CPU is unmaintained.
    ...
    $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8e -nographic
    qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
    ...
    $ ./build/qemu-system-ppc64 -M pseries --cpu power8e -nographic
    qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
    ...

Suggested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>

---
Cover Letter
============

For me, Power8NVL won't even boot, getting stuck somewhere in early boot
in OPAL.

No direct way to deprecate the pnv chips, a field like deprecation_note
could be added, but felt not needed as the chip will only get used if
the user requests corresponding 8E / 8NVL CPU, which will print
deprecation warning.

Also, no separate pnv machine for 8E and 8NVL, user has to pass --cpu,
which will throw the deprecation warning. So just deprecating CPUs should
be enough.

Power8 itself also can be a candidate for deprecation if not needed ?
Will follow up if decided.
---
---
 target/ppc/cpu-models.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

Comments

Cédric Le Goater March 28, 2025, 7:23 a.m. UTC | #1
On 3/28/25 05:06, Aditya Gupta wrote:
> Power8E and Power8NVL variants are not of much use in QEMU now, and not
> being maintained either.
> 
> Deprecate the 8E and 8NVL variants.
> 
> After deprecation, QEMU will print a warning like below when the
> CPU/Chips are used:
> 
>      $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8nvl -nographic
>      qemu-system-ppc64: warning: CPU model power8nvl_v1.0-powerpc64-cpu is deprecated -- CPU is unmaintained.
>      ...
>      $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8e -nographic
>      qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
>      ...
>      $ ./build/qemu-system-ppc64 -M pseries --cpu power8e -nographic
>      qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
>      ...
> 
> Suggested-by: Cédric Le Goater <clg@kaod.org>
> Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>

Please update the documentation too.

https://qemu.readthedocs.io/en/v9.2.0/about/deprecated.html


> 
> ---
> Cover Letter
> ============
> 
> For me, Power8NVL won't even boot, getting stuck somewhere in early boot
> in OPAL.

Looks like a skiboot issue. skiboot-v6.4 works fine.

> 
> No direct way to deprecate the pnv chips, a field like deprecation_note
> could be added, but felt not needed as the chip will only get used if
> the user requests corresponding 8E / 8NVL CPU, which will print
> deprecation warning.
> 
> Also, no separate pnv machine for 8E and 8NVL, user has to pass --cpu,
> which will throw the deprecation warning. So just deprecating CPUs should
> be enough.
> 
> Power8 itself also can be a candidate for deprecation if not needed ?

That's a bit early.

run 'qemu-system-ppc64  -cpu ?' to see which CPUs are currently
available.


Thanks,

C.



> Will follow up if decided.
> ---
> ---
>   target/ppc/cpu-models.c | 17 ++++++++++++++---
>   1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> index ece348178188..6f2062e2c484 100644
> --- a/target/ppc/cpu-models.c
> +++ b/target/ppc/cpu-models.c
> @@ -32,17 +32,22 @@
>   /* PowerPC CPU definitions                                                 */
>   #define POWERPC_DEF_PREFIX(pvr, svr, type)                                  \
>       glue(glue(glue(glue(pvr, _), svr), _), type)
> -#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
> +#define POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, _is_deprecated) \
>       static void                                                             \
>       glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_class_init)            \
>       (ObjectClass *oc, void *data)                                           \
>       {                                                                       \
>           DeviceClass *dc = DEVICE_CLASS(oc);                                 \
> +        CPUClass *cc    = CPU_CLASS(oc);                                    \
>           PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);                       \
>                                                                               \
>           pcc->pvr          = _pvr;                                           \
>           pcc->svr          = _svr;                                           \
>           dc->desc          = _desc;                                          \
> +                                                                            \
> +        if (_is_deprecated) {                                               \
> +            cc->deprecation_note = "CPU is unmaintained.";                  \
> +        }                                                                   \
>       }                                                                       \
>                                                                               \
>       static const TypeInfo                                                   \
> @@ -63,6 +68,12 @@
>       type_init(                                                              \
>           glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_register_types))
>   
> +#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
> +    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, false)
> +
> +#define POWERPC_DEPRECATED_CPU(_name, _pvr, _type, _desc)                   \
> +    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type, true)
> +
>   #define POWERPC_DEF(_name, _pvr, _type, _desc)                              \
>       POWERPC_DEF_SVR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type)
>   
> @@ -722,11 +733,11 @@
>                   "POWER7 v2.3")
>       POWERPC_DEF("power7p_v2.1",  CPU_POWERPC_POWER7P_v21,            POWER7,
>                   "POWER7+ v2.1")
> -    POWERPC_DEF("power8e_v2.1",  CPU_POWERPC_POWER8E_v21,            POWER8,
> +    POWERPC_DEPRECATED_CPU("power8e_v2.1",  CPU_POWERPC_POWER8E_v21, POWER8,
>                   "POWER8E v2.1")
>       POWERPC_DEF("power8_v2.0",   CPU_POWERPC_POWER8_v20,             POWER8,
>                   "POWER8 v2.0")
> -    POWERPC_DEF("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10,         POWER8,
> +    POWERPC_DEPRECATED_CPU("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10, POWER8,
>                   "POWER8NVL v1.0")
>       POWERPC_DEF("power9_v2.0",   CPU_POWERPC_POWER9_DD20,            POWER9,
>                   "POWER9 v2.0")
Aditya Gupta March 29, 2025, 1:45 p.m. UTC | #2
On 25/03/28 08:23AM, Cédric Le Goater wrote:
> On 3/28/25 05:06, Aditya Gupta wrote:
> > Power8E and Power8NVL variants are not of much use in QEMU now, and not
> > being maintained either.
> > 
> > Deprecate the 8E and 8NVL variants.
> > 
> > After deprecation, QEMU will print a warning like below when the
> > CPU/Chips are used:
> > 
> >      $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8nvl -nographic
> >      qemu-system-ppc64: warning: CPU model power8nvl_v1.0-powerpc64-cpu is deprecated -- CPU is unmaintained.
> >      ...
> >      $ ./build/qemu-system-ppc64 -M powernv8 --cpu power8e -nographic
> >      qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
> >      ...
> >      $ ./build/qemu-system-ppc64 -M pseries --cpu power8e -nographic
> >      qemu-system-ppc64: warning: CPU model power8e_v2.1-powerpc64-cpu is deprecated -- CPU is unmaintained.
> >      ...
> > 
> > Suggested-by: Cédric Le Goater <clg@kaod.org>
> > Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
> 
> Please update the documentation too.
> 
> https://qemu.readthedocs.io/en/v9.2.0/about/deprecated.html

Sure Cédric, will mention it there.

> 
> 
> > 
> > ---
> > Cover Letter
> > ============
> > 
> > For me, Power8NVL won't even boot, getting stuck somewhere in early boot
> > in OPAL.
> 
> Looks like a skiboot issue. skiboot-v6.4 works fine.

Yes, did a git bisect, this seems to be the first bad commit:

    c5424f683ee3f8d07faeb87f41f4572c6afd67b1 is the first bad commit
    commit c5424f683ee3f8d07faeb87f41f4572c6afd67b1 (HEAD)
    Author: Nicholas Piggin <npiggin@gmail.com>
    Date:   Sun Oct 3 11:22:08 2021 +1000
    
        Remove support for POWER8 DD1
        
        This significantly simplifies the SLW code.
        
        HILE is now always supported.
        
		...

So support has been removed from skiboot sometime back ?

So releases before this are working with 8nvl. Maybe I can mention this
also in the deprecation in QEMU that newer versions of skiboot don't
support booting 8NVL QEMU.

> 
> > 
> > No direct way to deprecate the pnv chips, a field like deprecation_note
> > could be added, but felt not needed as the chip will only get used if
> > the user requests corresponding 8E / 8NVL CPU, which will print
> > deprecation warning.
> > 
> > Also, no separate pnv machine for 8E and 8NVL, user has to pass --cpu,
> > which will throw the deprecation warning. So just deprecating CPUs should
> > be enough.
> > 
> > Power8 itself also can be a candidate for deprecation if not needed ?
> 
> That's a bit early.

Got it

> 
> run 'qemu-system-ppc64  -cpu ?' to see which CPUs are currently
> available.

Checked, lists a lot of CPUs. This gave me the idea to print
"(deprecated)" in that list for deprecated CPUs (currently only 8e and
8nvl), like QEMU's 'cpu_list'.

Thanks,
- Aditya G

> 
> 
> Thanks,
> 
> C.
> 
> 
> 
> > Will follow up if decided.
> > ---
> > ---
> >   target/ppc/cpu-models.c | 17 ++++++++++++++---
> >   1 file changed, 14 insertions(+), 3 deletions(-)
> > 
> > diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> > index ece348178188..6f2062e2c484 100644
> > --- a/target/ppc/cpu-models.c
> > +++ b/target/ppc/cpu-models.c
> > @@ -32,17 +32,22 @@
> >   /* PowerPC CPU definitions                                                 */
> >   #define POWERPC_DEF_PREFIX(pvr, svr, type)                                  \
> >       glue(glue(glue(glue(pvr, _), svr), _), type)
> > -#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
> > +#define POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, _is_deprecated) \
> >       static void                                                             \
> >       glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_class_init)            \
> >       (ObjectClass *oc, void *data)                                           \
> >       {                                                                       \
> >           DeviceClass *dc = DEVICE_CLASS(oc);                                 \
> > +        CPUClass *cc    = CPU_CLASS(oc);                                    \
> >           PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);                       \
> >                                                                               \
> >           pcc->pvr          = _pvr;                                           \
> >           pcc->svr          = _svr;                                           \
> >           dc->desc          = _desc;                                          \
> > +                                                                            \
> > +        if (_is_deprecated) {                                               \
> > +            cc->deprecation_note = "CPU is unmaintained.";                  \
> > +        }                                                                   \
> >       }                                                                       \
> >                                                                               \
> >       static const TypeInfo                                                   \
> > @@ -63,6 +68,12 @@
> >       type_init(                                                              \
> >           glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_register_types))
> > +#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
> > +    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, false)
> > +
> > +#define POWERPC_DEPRECATED_CPU(_name, _pvr, _type, _desc)                   \
> > +    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type, true)
> > +
> >   #define POWERPC_DEF(_name, _pvr, _type, _desc)                              \
> >       POWERPC_DEF_SVR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type)
> > @@ -722,11 +733,11 @@
> >                   "POWER7 v2.3")
> >       POWERPC_DEF("power7p_v2.1",  CPU_POWERPC_POWER7P_v21,            POWER7,
> >                   "POWER7+ v2.1")
> > -    POWERPC_DEF("power8e_v2.1",  CPU_POWERPC_POWER8E_v21,            POWER8,
> > +    POWERPC_DEPRECATED_CPU("power8e_v2.1",  CPU_POWERPC_POWER8E_v21, POWER8,
> >                   "POWER8E v2.1")
> >       POWERPC_DEF("power8_v2.0",   CPU_POWERPC_POWER8_v20,             POWER8,
> >                   "POWER8 v2.0")
> > -    POWERPC_DEF("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10,         POWER8,
> > +    POWERPC_DEPRECATED_CPU("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10, POWER8,
> >                   "POWER8NVL v1.0")
> >       POWERPC_DEF("power9_v2.0",   CPU_POWERPC_POWER9_DD20,            POWER9,
> >                   "POWER9 v2.0")
>
diff mbox series

Patch

diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
index ece348178188..6f2062e2c484 100644
--- a/target/ppc/cpu-models.c
+++ b/target/ppc/cpu-models.c
@@ -32,17 +32,22 @@ 
 /* PowerPC CPU definitions                                                 */
 #define POWERPC_DEF_PREFIX(pvr, svr, type)                                  \
     glue(glue(glue(glue(pvr, _), svr), _), type)
-#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
+#define POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, _is_deprecated) \
     static void                                                             \
     glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_class_init)            \
     (ObjectClass *oc, void *data)                                           \
     {                                                                       \
         DeviceClass *dc = DEVICE_CLASS(oc);                                 \
+        CPUClass *cc    = CPU_CLASS(oc);                                    \
         PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);                       \
                                                                             \
         pcc->pvr          = _pvr;                                           \
         pcc->svr          = _svr;                                           \
         dc->desc          = _desc;                                          \
+                                                                            \
+        if (_is_deprecated) {                                               \
+            cc->deprecation_note = "CPU is unmaintained.";                  \
+        }                                                                   \
     }                                                                       \
                                                                             \
     static const TypeInfo                                                   \
@@ -63,6 +68,12 @@ 
     type_init(                                                              \
         glue(POWERPC_DEF_PREFIX(_pvr, _svr, _type), _cpu_register_types))
 
+#define POWERPC_DEF_SVR(_name, _desc, _pvr, _svr, _type)                    \
+    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, _svr, _type, false)
+
+#define POWERPC_DEPRECATED_CPU(_name, _pvr, _type, _desc)                   \
+    POWERPC_DEF_SVR_DEPR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type, true)
+
 #define POWERPC_DEF(_name, _pvr, _type, _desc)                              \
     POWERPC_DEF_SVR(_name, _desc, _pvr, POWERPC_SVR_NONE, _type)
 
@@ -722,11 +733,11 @@ 
                 "POWER7 v2.3")
     POWERPC_DEF("power7p_v2.1",  CPU_POWERPC_POWER7P_v21,            POWER7,
                 "POWER7+ v2.1")
-    POWERPC_DEF("power8e_v2.1",  CPU_POWERPC_POWER8E_v21,            POWER8,
+    POWERPC_DEPRECATED_CPU("power8e_v2.1",  CPU_POWERPC_POWER8E_v21, POWER8,
                 "POWER8E v2.1")
     POWERPC_DEF("power8_v2.0",   CPU_POWERPC_POWER8_v20,             POWER8,
                 "POWER8 v2.0")
-    POWERPC_DEF("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10,         POWER8,
+    POWERPC_DEPRECATED_CPU("power8nvl_v1.0", CPU_POWERPC_POWER8NVL_v10, POWER8,
                 "POWER8NVL v1.0")
     POWERPC_DEF("power9_v2.0",   CPU_POWERPC_POWER9_DD20,            POWER9,
                 "POWER9 v2.0")