mbox series

[PATCHv2,0/7] Better handling of machine specific per-cpu information

Message ID 20180614010446.30854-1-david@gibson.dropbear.id.au
Headers show
Series Better handling of machine specific per-cpu information | expand

Message

David Gibson June 14, 2018, 1:04 a.m. UTC
It's moderately common for a machine type to need to keep track of
information that is specific to the platform it implements, but
per-cpu.

While it could keep such information inside the MachineState, this
makes lookup from the CPUState awkward.  So, this series adds a
standard way to stash machine-specific per-cpu information using a
void pointer in the PowerPCCPU object.  The machine is responsible for
alloc()ing, free()ing and (if applicable) migrating this state.

The meat of the series is the last two patches.  The first 5 clean up
a number of minor uglies I encountered while implementing.

Changes since v1:
  * Simplify the error handling cleanup in 2/7 to use &error_abort
    instead of more propagations

David Gibson (7):
  spapr: Clean up cpu realize/unrealize paths
  pnv: Fix some error handling cpu realize()
  pnv_core: Allocate cpu thread objects individually
  pnv: Clean up cpu realize path
  pnv: Add cpu unrealize path
  target/ppc: Replace intc pointer with a general machine_data pointer
  target/ppc, spapr: Move VPA information to machine_data

 hw/intc/xics.c                  |   5 +-
 hw/intc/xics_spapr.c            |  16 +++--
 hw/ppc/pnv.c                    |   8 +--
 hw/ppc/pnv_core.c               | 100 ++++++++++++++++++--------------
 hw/ppc/spapr.c                  |   8 +--
 hw/ppc/spapr_cpu_core.c         |  85 +++++++++++++--------------
 hw/ppc/spapr_hcall.c            |  77 +++++++++++++-----------
 include/hw/ppc/pnv_core.h       |  11 +++-
 include/hw/ppc/spapr_cpu_core.h |  13 +++++
 include/hw/ppc/xics.h           |   4 +-
 target/ppc/cpu.h                |   8 +--
 target/ppc/translate_init.inc.c |   8 ---
 12 files changed, 185 insertions(+), 158 deletions(-)

Comments

David Gibson June 14, 2018, 3:52 a.m. UTC | #1
On Thu, Jun 14, 2018 at 11:04:39AM +1000, David Gibson wrote:
> It's moderately common for a machine type to need to keep track of
> information that is specific to the platform it implements, but
> per-cpu.
> 
> While it could keep such information inside the MachineState, this
> makes lookup from the CPUState awkward.  So, this series adds a
> standard way to stash machine-specific per-cpu information using a
> void pointer in the PowerPCCPU object.  The machine is responsible for
> alloc()ing, free()ing and (if applicable) migrating this state.
> 
> The meat of the series is the last two patches.  The first 5 clean up
> a number of minor uglies I encountered while implementing.

Oops, realized 7/7 is totally broken on a KVM build.  I'll send a new
spin.