target/ppc/cpu-models.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
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(-)
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")
--
2.49.0
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")
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")
>
© 2016 - 2026 Red Hat, Inc.