Hello, These are models for the PCIe Host Bridges, PHB3 and PHB4, as found on POWER8 and POWER9 processors. It includes the PowerBus logic interface (PBCQ), IOMMU support, a single PCIe Gen.3/4 Root Complex, and support for MSI and LSI interrupt sources as found on each system depending on the interrupt controller: XICS or XIVE.
No default device layout is provided and PCI devices can be added on any of the available PCIe Root Port (pcie.0 .. 2) with address 0x0 as the firwware (skiboot) only accepts a single device per root port. To run a simple system with a network and a storage adapters, use a command line options such as : -device e1000e,netdev=net0,mac=C0:FF:EE:00:00:02,bus=pcie.0,addr=0x0 -netdev bridge,id=net0,helper=/usr/libexec/qemu-bridge-helper,br=virbr0,id=hostnet0 -device megasas,id=scsi0,bus=pcie.1,addr=0x0 -drive file=$disk,if=none,id=drive-scsi0-0-0-0,format=qcow2,cache=none -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=2 If more are needed, include a bridge. Multi chip is supported, each chip adding its set of PHB controllers and its PCI busses. The model doesn't emulate the EEH error handling and cold plugging PHB devices still needs some work. XICS requires some adjustment to support the PHB3 MSI. The changes are provided in the PHB3 model but they could be decoupled in prereq patches. Thanks, C. Benjamin Herrenschmidt (1): ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge Cédric Le Goater (1): ppc/pnv: Add models for POWER8 PHB3 PCIe Host bridge include/hw/pci-host/pnv_phb3.h | 164 +++ include/hw/pci-host/pnv_phb3_regs.h | 450 +++++++++ include/hw/pci-host/pnv_phb4.h | 230 +++++ include/hw/pci-host/pnv_phb4_regs.h | 553 ++++++++++ include/hw/pci/pcie_port.h | 1 + include/hw/ppc/pnv.h | 11 + include/hw/ppc/pnv_xscom.h | 20 + include/hw/ppc/xics.h | 5 + hw/intc/xics.c | 14 +- hw/pci-host/pnv_phb3.c | 1195 ++++++++++++++++++++++ hw/pci-host/pnv_phb3_msi.c | 349 +++++++ hw/pci-host/pnv_phb3_pbcq.c | 357 +++++++ hw/pci-host/pnv_phb4.c | 1438 +++++++++++++++++++++++++++ hw/pci-host/pnv_phb4_pec.c | 593 +++++++++++ hw/ppc/pnv.c | 176 +++- hw/pci-host/Makefile.objs | 2 + hw/ppc/Kconfig | 2 + 17 files changed, 5557 insertions(+), 3 deletions(-) create mode 100644 include/hw/pci-host/pnv_phb3.h create mode 100644 include/hw/pci-host/pnv_phb3_regs.h create mode 100644 include/hw/pci-host/pnv_phb4.h create mode 100644 include/hw/pci-host/pnv_phb4_regs.h create mode 100644 hw/pci-host/pnv_phb3.c create mode 100644 hw/pci-host/pnv_phb3_msi.c create mode 100644 hw/pci-host/pnv_phb3_pbcq.c create mode 100644 hw/pci-host/pnv_phb4.c create mode 100644 hw/pci-host/pnv_phb4_pec.c -- 2.21.1