ppc/pnv: Add models for POWER8 PHB3 PCIe Host bridge
commit9ae1329ee2fee95f201ca219090d7c742eaf6a90
authorCédric Le Goater <clg@kaod.org>
Mon, 27 Jan 2020 14:45:06 +0000 (27 15:45 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Sun, 2 Feb 2020 03:07:57 +0000 (2 14:07 +1100)
treefea34e2d2ac683817d1affb4c46537051b96431f
parent4f9924c4d4cf9c039e247c5cdbbf71bce4e573c3
ppc/pnv: Add models for POWER8 PHB3 PCIe Host bridge

This is a model of the PCIe Host Bridge (PHB3) found on a POWER8
processor. It includes the PowerBus logic interface (PBCQ), IOMMU
support, a single PCIe Gen.3 Root Complex, and support for MSI and LSI
interrupt sources as found on a POWER8 system using the XICS interrupt
controller.

The POWER8 processor comes in different flavors: Venice, Murano,
Naple, each having a different number of PHBs. To make things simpler,
the models provides 3 PHB3 per chip. Some platforms, like the
Firestone, can also couple PHBs on the first chip to provide more
bandwidth but this is too specific to model in QEMU.

XICS requires some adjustment to support the PHB3 MSI. The changes are
provided here but they could be decoupled in prereq patches.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20200127144506.11132-3-clg@kaod.org>
[dwg: Use device_class_set_props()]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/intc/xics.c
hw/pci-host/Makefile.objs
hw/pci-host/pnv_phb3.c [new file with mode: 0644]
hw/pci-host/pnv_phb3_msi.c [new file with mode: 0644]
hw/pci-host/pnv_phb3_pbcq.c [new file with mode: 0644]
hw/ppc/pnv.c
include/hw/pci-host/pnv_phb3.h [new file with mode: 0644]
include/hw/pci-host/pnv_phb3_regs.h [new file with mode: 0644]
include/hw/ppc/pnv.h
include/hw/ppc/pnv_xscom.h
include/hw/ppc/xics.h