target/ppc: Allow cpu compatiblity checks based on type, not instance
commitad99d04c76debb0d60c0bbb5d4f6ebb3509ddc91
authorDavid Gibson <david@gibson.dropbear.id.au>
Thu, 14 Jun 2018 06:33:58 +0000 (14 16:33 +1000)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 21 Jun 2018 11:22:53 +0000 (21 21:22 +1000)
tree480f8cb94e2d7f38fb7d6a1cdf048cd629bbf4d8
parentbb7ab95c96756663cf76914b171971d9582f828d
target/ppc: Allow cpu compatiblity checks based on type, not instance

ppc_check_compat() is used in a number of places to check if a cpu object
supports a certain compatiblity mode, subject to various constraints.

It takes a PowerPCCPU *, however it really only depends on the cpu's class.
We have upcoming cases where it would be useful to make compatibility
checks before we fully instantiate the cpu objects.

ppc_type_check_compat() will now make an equivalent check, but based on a
CPU's QOM typename instead of an instantiated CPU object.

We make use of the new interface in several places in spapr, where we're
essentially making a global check, rather than one specific to a particular
cpu.  This avoids some ugly uses of first_cpu to grab a "representative"
instance.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
hw/ppc/spapr.c
hw/ppc/spapr_caps.c
target/ppc/compat.c
target/ppc/cpu.h