qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] ppc: Officially deprecate the CPU "compat" property


From: Greg Kurz
Subject: Re: [PATCH] ppc: Officially deprecate the CPU "compat" property
Date: Thu, 27 Feb 2020 10:52:02 +0100

On Thu, 27 Feb 2020 09:46:41 +1100
David Gibson <address@hidden> wrote:

> On Wed, Feb 26, 2020 at 07:59:38PM +0100, Greg Kurz wrote:
> > Server class POWER CPUs have a "compat" property, which was obsoleted
> > by commit 7843c0d60d and replaced by a "max-cpu-compat" property on the
> > pseries machine type. A hack was introduced so that passing "compat" to
> > -cpu would still produce the desired effect, for the sake of backward
> > compatibility : it strips the "compat" option from the CPU properties
> > and applies internally it to the pseries machine. The accessors of the
> > "compat" property were updated to do nothing but warn the user about the
> > deprecated status when doing something like:
> > 
> > $ qemu-system-ppc64 -global POWER9-family-powerpc64-cpu.compat=power9
> > qemu-system-ppc64: warning: CPU 'compat' property is deprecated and has no
> >  effect; use max-cpu-compat machine property instead
> > 
> > This was merged during the QEMU 2.10 timeframe, a few weeks before we
> > formalized our deprecation process. As a consequence, the "compat"
> > property fell through the cracks and was never listed in the officialy
> > deprecated features.
> > 
> > We are now eight QEMU versions later, it is largely time to mention it
> > in qemu-deprecated.texi. Also, since -global XXX-powerpc64-cpu.compat=
> > has been emitting warnings since QEMU 2.10 and the usual way of setting
> > CPU properties is with -cpu, completely remove the "compat" property.
> > Keep the hack so that -cpu XXX,compat= stays functional some more time,
> > as required by our deprecation process.
> > 
> > The now empty powerpc_servercpu_properties[] list which was introduced
> > for "compat" and never had any other use is removed on the way. We can
> > re-add it in the future if the need for a server class POWER CPU specific
> > property arises again.
> > 
> > Signed-off-by: Greg Kurz <address@hidden>
> 
> Applied to ppc-for-5.0, thanks.
> 
> > ---
> >  qemu-deprecated.texi            |    6 +++++

I've just discovered that Paolo posted a series to convert documentation
to rST. Especially this patch that introduces docs/system/deprecated.rst :

https://patchew.org/QEMU/address@hidden/address@hidden/

Paolo and David,

Please advise on the better way to ensure the changes from _my_ patch
make it to the rST version.

Thanks!

> >  target/ppc/translate_init.inc.c |   44 
> > ++-------------------------------------
> >  2 files changed, 8 insertions(+), 42 deletions(-)
> > 
> > diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> > index 66eca3a1dede..56a69400c14a 100644
> > --- a/qemu-deprecated.texi
> > +++ b/qemu-deprecated.texi
> > @@ -242,6 +242,12 @@ The RISC-V no MMU cpus have been depcreated. The two 
> > CPUs: ``rv32imacu-nommu`` a
> >  ``rv64imacu-nommu`` should no longer be used. Instead the MMU status can 
> > be specified
> >  via the CPU ``mmu`` option when using the ``rv32`` or ``rv64`` CPUs.
> >  
> > +@subsection ``compat`` property of server class POWER CPUs (since 5.0)
> > +
> > +The ``compat`` property used to set backwards compatibility modes for
> > +the processor has been deprecated. The ``max-cpu-compat`` property of
> > +the ``pseries`` machine type should be used instead.
> > +
> >  @section System emulator devices
> >  
> >  @subsection ide-drive (since 4.2)
> > diff --git a/target/ppc/translate_init.inc.c 
> > b/target/ppc/translate_init.inc.c
> > index 53995f62eab2..2f7125c51f35 100644
> > --- a/target/ppc/translate_init.inc.c
> > +++ b/target/ppc/translate_init.inc.c
> > @@ -8492,44 +8492,6 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data)
> >      pcc->l1_icache_size = 0x10000;
> >  }
> >  
> > -/*
> > - * The CPU used to have a "compat" property which set the
> > - * compatibility mode PVR.  However, this was conceptually broken - it
> > - * only makes sense on the pseries machine type (otherwise the guest
> > - * owns the PCR and can control the compatibility mode itself).  It's
> > - * been replaced with the 'max-cpu-compat' property on the pseries
> > - * machine type.  For backwards compatibility, pseries specially
> > - * parses the -cpu parameter and converts old compat= parameters into
> > - * the appropriate machine parameters.  This stub implementation of
> > - * the parameter catches any uses on explicitly created CPUs.
> > - */
> > -static void getset_compat_deprecated(Object *obj, Visitor *v, const char 
> > *name,
> > -                                     void *opaque, Error **errp)
> > -{
> > -    QNull *null = NULL;
> > -
> > -    if (!qtest_enabled()) {
> > -        warn_report("CPU 'compat' property is deprecated and has no 
> > effect; "
> > -                    "use max-cpu-compat machine property instead");
> > -    }
> > -    visit_type_null(v, name, &null, NULL);
> > -    qobject_unref(null);
> > -}
> > -
> > -static const PropertyInfo ppc_compat_deprecated_propinfo = {
> > -    .name = "str",
> > -    .description = "compatibility mode (deprecated)",
> > -    .get = getset_compat_deprecated,
> > -    .set = getset_compat_deprecated,
> > -};
> > -static Property powerpc_servercpu_properties[] = {
> > -    {
> > -        .name = "compat",
> > -        .info = &ppc_compat_deprecated_propinfo,
> > -    },
> > -    DEFINE_PROP_END_OF_LIST(),
> > -};
> > -
> >  static void init_proc_POWER7(CPUPPCState *env)
> >  {
> >      /* Common Registers */
> > @@ -8611,7 +8573,6 @@ POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data)
> >  
> >      dc->fw_name = "PowerPC,POWER7";
> >      dc->desc = "POWER7";
> > -    device_class_set_props(dc, powerpc_servercpu_properties);
> >      pcc->pvr_match = ppc_pvr_match_power7;
> >      pcc->pcr_mask = PCR_VEC_DIS | PCR_VSX_DIS | PCR_COMPAT_2_05;
> >      pcc->pcr_supported = PCR_COMPAT_2_06 | PCR_COMPAT_2_05;
> > @@ -8776,7 +8737,6 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data)
> >  
> >      dc->fw_name = "PowerPC,POWER8";
> >      dc->desc = "POWER8";
> > -    device_class_set_props(dc, powerpc_servercpu_properties);
> >      pcc->pvr_match = ppc_pvr_match_power8;
> >      pcc->pcr_mask = PCR_TM_DIS | PCR_COMPAT_2_06 | PCR_COMPAT_2_05;
> >      pcc->pcr_supported = PCR_COMPAT_2_07 | PCR_COMPAT_2_06 | 
> > PCR_COMPAT_2_05;
> > @@ -8988,7 +8948,6 @@ POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data)
> >  
> >      dc->fw_name = "PowerPC,POWER9";
> >      dc->desc = "POWER9";
> > -    device_class_set_props(dc, powerpc_servercpu_properties);
> >      pcc->pvr_match = ppc_pvr_match_power9;
> >      pcc->pcr_mask = PCR_COMPAT_2_05 | PCR_COMPAT_2_06 | PCR_COMPAT_2_07;
> >      pcc->pcr_supported = PCR_COMPAT_3_00 | PCR_COMPAT_2_07 | 
> > PCR_COMPAT_2_06 |
> > @@ -9198,7 +9157,6 @@ POWERPC_FAMILY(POWER10)(ObjectClass *oc, void *data)
> >  
> >      dc->fw_name = "PowerPC,POWER10";
> >      dc->desc = "POWER10";
> > -    device_class_set_props(dc, powerpc_servercpu_properties);
> >      pcc->pvr_match = ppc_pvr_match_power10;
> >      pcc->pcr_mask = PCR_COMPAT_2_05 | PCR_COMPAT_2_06 | PCR_COMPAT_2_07 |
> >                      PCR_COMPAT_3_00;
> > @@ -10486,6 +10444,8 @@ static void ppc_cpu_parse_featurestr(const char 
> > *type, char *features,
> >          *s = '\0';
> >          for (i = 0; inpieces[i]; i++) {
> >              if (g_str_has_prefix(inpieces[i], "compat=")) {
> > +                warn_report_once("CPU 'compat' property is deprecated; "
> > +                    "use max-cpu-compat machine property instead");
> >                  compat_str = inpieces[i];
> >                  continue;
> >              }
> > 
> 

Attachment: pgp2VQBmYr7f5.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]