qemu/include/hw/ppc
David Gibson 4445b1d27e spapr: Remove sPAPRConfigureConnectorState sub-structure
Most of the time, the state of a DRC object is contained in the single
'state' variable.  However, during the transition from UNISOLATE to
CONFIGURED state requires multiple calls to the ibm,configure-connector
RTAS call to retrieve the device tree for the attached device.  We need
some extra state to keep track of where we're up to in delivering the
device tree information to the guest.

Currently that extra state is in a sPAPRConfigureConnectorState
substructure which is only allocated when we're in the middle of the
configure connector process.  That sounds like a good idea, but the extra
state is only two integers - on many platforms that will take up the same
room as the (maybe NULL) ccs pointer even before malloc() overhead.  Plus
it's another object whose lifetime we need to manage.  In short, it's not
worth it.

So, fold the sPAPRConfigureConnectorState substructure directly into the
DRC object.

Previously the structure was allocated lazily when the configure-connector
call discovers it's not there.  Now, we need to initialize the subfields
pre-emptively, as soon as we enter UNISOLATE state.

Although it's not strictly necessary (the field values should only ever
be consulted when in UNISOLATE state), we try to keep them at -1 when in
other states, as a debugging aid.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Daniel Barboza <danielhb@linux.vnet.ibm.com>
Tested-by: Daniel Barboza <danielhb@linux.vnet.ibm.com>
2017-07-17 15:07:05 +10:00
..
fdt.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
mac_dbdma.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
openpic.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
pnv_core.h ppc/pnv: add XSCOM handlers to PnvCore 2016-10-28 09:38:25 +11:00
pnv_lpc.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
pnv_occ.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
pnv_psi.h ppc/pnv: Add cut down PSI bridge model and hookup external interrupt 2017-04-26 12:00:42 +10:00
pnv_xscom.h ppc/pnv: Add OCC model stub with interrupt support 2017-04-26 12:00:42 +10:00
pnv.h pnv: Fix build failures on some host platforms 2017-05-11 09:45:15 +10:00
ppc4xx.h Remove unused function declarations 2016-09-15 15:32:22 +03:00
ppc_e500.h
ppc.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
spapr_cpu_core.h spapr: add node-id property to sPAPR core 2017-05-11 16:08:48 -03:00
spapr_drc.h spapr: Remove sPAPRConfigureConnectorState sub-structure 2017-07-17 15:07:05 +10:00
spapr_ovec.h spapr: introduce the XIVE_EXPLOIT option in CAS 2017-07-11 11:04:02 +10:00
spapr_rtas.h tests: add RTAS command in the protocol 2016-09-23 10:29:40 +10:00
spapr_vio.h ppc/xics: use the QOM interface to get irqs 2017-03-01 11:23:39 +11:00
spapr.h spapr: Minor cleanups to events handling 2017-07-17 15:07:05 +10:00
xics.h xics: drop ICPStateClass::cpu_setup() handler 2017-06-09 12:17:59 +10:00