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 <c...@kaod.org>
Signed-off-by: Aditya Gupta <adit...@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")


Reply via email to