mbox series

[00/19] ppc: support for the baremetal XIVE interrupt controller (POWER9)

Message ID 20190128094625.4428-1-clg@kaod.org (mailing list archive)
Headers show
Series ppc: support for the baremetal XIVE interrupt controller (POWER9) | expand

Message

Cédric Le Goater Jan. 28, 2019, 9:46 a.m. UTC
Hello,

Here is a series adding support for the XIVE interrupt controller as
found on POWER9 PowerNV mchines. It includes models for the baremetal
IC itself and a set of fixes and extensions of the POWER9 core
provided by Ben.

Thanks,

C.

Changes in v1 (since PnvXive was last sent) :

 - made more use of the register values instead of caching them under
   PnvXive
 - generalized the VST accessors.
 - reworked indirect accesses to the TIMA with a custom get_tctx()
   method
 - fixed the translation table definitions
 - XiveSource and XiveENDSource objects are now sized to the maximum
   allowed by HW and the memory regions exposing the ESB pages are
   resized at runtime when the firmware configures the controller.
 - included changes from Ben on the POWER9 core model to fix power
   management instructions, add support for sreset and the HV
   interrupt line


Benjamin Herrenschmidt (14):
  target/ppc: Remove some #if 0'ed code
  target/ppc: Make special ORs match x86 pause and don't generate on
    mttcg
  target/ppc: Fix nip on power management instructions
  target/ppc: Don't clobber MSR:EE on PM instructions
  target/ppc: Fix support for "STOP light" states on POWER9
  target/ppc: Move "wakeup reset" code to a separate function
  target/ppc: Disable ISA 2.06 PM instructions on POWER9
  target/ppc: Rename "in_pm_state" to "resume_as_sreset"
  target/ppc: Add POWER9 exception model
  target/ppc: Detect erroneous condition in interrupt delivery
  target/ppc: Add Hypervisor Virtualization Interrupt on POWER9
  target/ppc: Add POWER9 external interrupt model
  ppc/xive: Make XIVE generate the proper interrupt types
  target/ppc: Add support for LPCR:HEIC on POWER9

Cédric Le Goater (5):
  ppc/xive: hardwire the Physical CAM line of the thread context
  ppc: externalize ppc_get_vcpu_by_pir()
  xive: extend the XiveRouter get_tctx() method with the page offset
  ppc/pnv: xive: export the TIMA memory accessors
  ppc/pnv: add XIVE support

 hw/intc/pnv_xive_regs.h         |  315 ++++++
 include/hw/ppc/pnv.h            |   21 +
 include/hw/ppc/pnv_core.h       |    1 +
 include/hw/ppc/pnv_xive.h       |   95 ++
 include/hw/ppc/pnv_xscom.h      |    3 +
 include/hw/ppc/ppc.h            |    3 +
 include/hw/ppc/xive.h           |   12 +-
 target/ppc/cpu-qom.h            |    5 +
 target/ppc/cpu.h                |   26 +-
 hw/intc/pnv_xive.c              | 1698 +++++++++++++++++++++++++++++++
 hw/intc/spapr_xive.c            |    3 +-
 hw/intc/xics.c                  |    1 +
 hw/intc/xive.c                  |  167 ++-
 hw/ppc/pnv.c                    |   84 +-
 hw/ppc/pnv_core.c               |   16 +-
 hw/ppc/ppc.c                    |   32 +-
 target/ppc/excp_helper.c        |  176 ++--
 target/ppc/mmu_helper.c         |   12 -
 target/ppc/translate.c          |   34 +-
 target/ppc/translate_init.inc.c |   36 +-
 hw/intc/Makefile.objs           |    2 +-
 21 files changed, 2593 insertions(+), 149 deletions(-)
 create mode 100644 hw/intc/pnv_xive_regs.h
 create mode 100644 include/hw/ppc/pnv_xive.h
 create mode 100644 hw/intc/pnv_xive.c