[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v4 00/20] ppc/pnv: booting the kernel and reaching use
From: |
Cédric Le Goater |
Subject: |
[Qemu-ppc] [PATCH v4 00/20] ppc/pnv: booting the kernel and reaching user space |
Date: |
Mon, 3 Oct 2016 09:24:36 +0200 |
Hello,
Here is a v4 addressing all the comments from v3 and adding a couple
more models. Most important changes are :
- a rework of the XSCOM model which now dispatches addresses to the
memory regions using pcb_addr << 3.
- the model for the native Interrupt Presentation Controllers based
on MMIOS, borrowed from Nikunj v3 patchset, plus some extras to
support HW CPU ids,
- a minimal PSI HB (Processor Service Interface Host Bus) model to
handle the external interrupt,
- initial support for the POWER9 LPC controller.
The initial patch provides a minimal platform with some RAM to load
the ROMs : firmware, kernel and initrd. The device tree is built with
what is available at reset time. Then, comes the PnvChip object acting
as a container for other devices required to run a system. The cores
are added to each chip with some restrictions on the number and the
ids. Next is the XSCOM model, the sideband bus which gives controls to
all the units in the POWER8 chip, the LPC controller for the console,
the native interrupt controller and the PSI HB model to handle the
external interrupt.
Last is an initial LPC controller model for the POWER9. We have a
console ! But, more important, it gives us an idea of what changes we
should consider. The LPC controller is a little different for POWER9
as it is accessed through MMIOs but it is not too complex to adapt the
code from POWER8. PSIHB has different XSCOMs addresses, we should be
OK with the current framework. The POWER9 interrupt controller is
another story for later.
The next step is a PHB3 model to include some PCI devices. Nevertheless,
the patchset has now enough support to be usable as a real machine. If
you still feel adventurous, you can grab skiboot and kernel images
here :
https://openpower.xyz/job/openpower-op-build/distro=ubuntu,target=palmetto/lastSuccessfulBuild/artifact/images/skiboot.lid
https://openpower.xyz/job/openpower-op-build/distro=ubuntu,target=palmetto/lastSuccessfulBuild/artifact/images/zImage.epapr
https://openpower.xyz/job/openpower-op-build/distro=ubuntu,target=palmetto/lastSuccessfulBuild/artifact/images/rootfs.cpio.xz
The code is available here (beware this is a wip branch)
https://github.com/legoater/qemu/commits/powernv-ipmi-2.8
Thanks,
C.
Benjamin Herrenschmidt (9):
ppc/pnv: add skeleton PowerNV platform
ppc/pnv: add a LPC controller
ppc/xics: Make the ICSState a list
ppc/xics: Split ICS into ics-base and ics class
ppc/xics: Add xics to the monitor "info pic" command
ppc/xics: Add "native" XICS subclass
ppc/pnv: Add cut down PSI bridge model and hookup external interrupt
ppc/pnv: Add OCC model stub with interrupt support
ppc/pnv: Add Naples chip support for LPC interrupts
Cédric Le Goater (11):
ppc/pnv: add a PnvChip object
ppc/pnv: add a core mask to PnvChip
ppc/pnv: add a PIR handler to PnvChip
ppc/pnv: add a PnvCore object
ppc/pnv: add XSCOM infrastructure
ppc/pnv: add XSCOM handlers to PnvCore
ppc/pnv: add a ISA bus
ppc/xics: introduce helpers to find an ICP from some (CPU) index
ppc/xics: introduce a helper to insert a new ics
ppc/pnv: add a XICS native to each PowerNV chip
ppc/pnv: add support for POWER9 LPC Controller
default-configs/ppc64-softmmu.mak | 4 +-
hmp-commands-info.hx | 2 +
hw/intc/Makefile.objs | 1 +
hw/intc/trace-events | 15 +-
hw/intc/xics.c | 337 ++++++++++-----
hw/intc/xics_kvm.c | 44 +-
hw/intc/xics_native.c | 327 ++++++++++++++
hw/intc/xics_spapr.c | 128 +++---
hw/ppc/Makefile.objs | 2 +
hw/ppc/pnv.c | 878 ++++++++++++++++++++++++++++++++++++++
hw/ppc/pnv_core.c | 253 +++++++++++
hw/ppc/pnv_lpc.c | 745 ++++++++++++++++++++++++++++++++
hw/ppc/pnv_occ.c | 135 ++++++
hw/ppc/pnv_psi.c | 598 ++++++++++++++++++++++++++
hw/ppc/pnv_xscom.c | 262 ++++++++++++
hw/ppc/ppc.c | 14 +
hw/ppc/spapr_events.c | 2 +-
hw/ppc/spapr_pci.c | 5 +-
hw/ppc/spapr_vio.c | 2 +-
include/hw/ppc/pnv.h | 164 +++++++
include/hw/ppc/pnv_core.h | 50 +++
include/hw/ppc/pnv_lpc.h | 107 +++++
include/hw/ppc/pnv_occ.h | 38 ++
include/hw/ppc/pnv_psi.h | 64 +++
include/hw/ppc/pnv_xscom.h | 75 ++++
include/hw/ppc/ppc.h | 2 +
include/hw/ppc/xics.h | 69 ++-
monitor.c | 4 +
28 files changed, 4129 insertions(+), 198 deletions(-)
create mode 100644 hw/intc/xics_native.c
create mode 100644 hw/ppc/pnv.c
create mode 100644 hw/ppc/pnv_core.c
create mode 100644 hw/ppc/pnv_lpc.c
create mode 100644 hw/ppc/pnv_occ.c
create mode 100644 hw/ppc/pnv_psi.c
create mode 100644 hw/ppc/pnv_xscom.c
create mode 100644 include/hw/ppc/pnv.h
create mode 100644 include/hw/ppc/pnv_core.h
create mode 100644 include/hw/ppc/pnv_lpc.h
create mode 100644 include/hw/ppc/pnv_occ.h
create mode 100644 include/hw/ppc/pnv_psi.h
create mode 100644 include/hw/ppc/pnv_xscom.h
--
2.7.4