qemu-ppc
[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: David Gibson
Subject: Re: [PATCH] ppc: Officially deprecate the CPU "compat" property
Date: Thu, 27 Feb 2020 09:46:41 +1100

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 +++++
>  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;
>              }
> 

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


reply via email to

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