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