[PATCH 00/14] ppc/pnv: Add support for user created PHB3/PHB4 devices

Cédric Le Goater posted 14 patches 2 years, 4 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211202144235.1276352-1-clg@kaod.org
There is a newer version of this series
include/hw/pci-host/pnv_phb3.h |   3 +
include/hw/pci-host/pnv_phb4.h |   5 ++
include/hw/ppc/pnv.h           |   7 +-
hw/pci-host/pnv_phb3.c         |  27 ++++++-
hw/pci-host/pnv_phb3_pbcq.c    |  11 +++
hw/pci-host/pnv_phb4_pec.c     |  96 ++++++++++++++++++++++---
hw/ppc/pnv.c                   | 125 ++++++++++++++-------------------
7 files changed, 190 insertions(+), 84 deletions(-)
[PATCH 00/14] ppc/pnv: Add support for user created PHB3/PHB4 devices
Posted by Cédric Le Goater 2 years, 4 months ago
Hello,

On the POWER8 processor, powernv8 machine, PHB3 devices can simply be
created with :

   -device pnv-phb3,chip-id=0,index=1 

with a maximum of 3 PHB3s per chip, each PHB3 adding a new PCIe bus.

On the POWER9 processor, powernv9 machine, the logic is different. The
the chip comes with 3 PHB4 PECs (PCI Express Controller) and each PEC
can have several PHBs :

  * PEC0 provides 1 PHB  (PHB0)
  * PEC1 provides 2 PHBs (PHB1 and PHB2)
  * PEC2 provides 3 PHBs (PHB3, PHB4 and PHB5)

The PEC devices can be created with :

   -device pnv-phb4-pec,chip-id=0,index=1

And the number of added PHB4 devices depends on the PEC index. Each
PHB4 adds a new PCIe bus.

The following changes are mostly cleanups and improvements of the
PHB3/4 realize routines to enable support. One important change is
related to the way the powernv machine populates the device tree. It
depends on the object hierarchy and it is necessary to reparent user
created devices to the chip they belong to (see PATCH 5). PHB3 is a
little more sophisticated because of its SysBusDevice nature (see
PATCH 6).

Thanks,

C.

Cédric Le Goater (14):
  ppc/pnv: Reduce the maximum of PHB3 devices
  ppc/pnv: Drop "num-phbs" property
  ppc/pnv: Move mapping of the PHB3 CQ regions under pnv_pbcq_realize()
  ppc/pnv: Introduce support for user created PHB3 devices
  ppc/pnv: Reparent user created PHB3 devices to the PnvChip
  ppc/pnv: Complete user created PHB3 devices
  ppc/pnv: Introduce a num_pecs class attribute for PHB4 PEC devices
  ppc/pnv: Introduce version and device_id class atributes for PHB4
    devices
  ppc/pnv: Introduce a "chip" property under the PHB4 model
  ppc/pnv: Introduce a num_stack class attribute
  ppc/pnv: Compute the PHB index from the PHB4 PEC model
  ppc/pnv: Remove "system-memory" property for he PHB4 PEC model
  ppc/pnv: Move realize of PEC stacks under the PEC model
  ppc/pnv: Introduce support for user created PHB4 devices

 include/hw/pci-host/pnv_phb3.h |   3 +
 include/hw/pci-host/pnv_phb4.h |   5 ++
 include/hw/ppc/pnv.h           |   7 +-
 hw/pci-host/pnv_phb3.c         |  27 ++++++-
 hw/pci-host/pnv_phb3_pbcq.c    |  11 +++
 hw/pci-host/pnv_phb4_pec.c     |  96 ++++++++++++++++++++++---
 hw/ppc/pnv.c                   | 125 ++++++++++++++-------------------
 7 files changed, 190 insertions(+), 84 deletions(-)

-- 
2.31.1