On Thu, 27 Feb 2020 09:46:41 +1100 David Gibson <[email protected]> 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 <[email protected]> > > 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/[email protected]/[email protected]/ 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; > > } > > >
pgps80ck7SozR.pgp
Description: OpenPGP digital signature
