qemu/hw/ppc/Kconfig
Benjamin Herrenschmidt 4f9924c4d4 ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge
These changes introduces models for the PCIe Host Bridge (PHB4) of the
POWER9 processor. It includes the PowerBus logic interface (PBCQ),
IOMMU support, a single PCIe Gen.4 Root Complex, and support for MSI
and LSI interrupt sources as found on a POWER9 system using the XIVE
interrupt controller.

POWER9 processor comes with 3 PHB4 PEC (PCI Express Controller) and
each PEC can have several PHBs. By default,

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

Each PEC has a set  "global" registers and some "per-stack" (per-PHB)
registers. Those are organized in two XSCOM ranges, the "Nest" range
and the "PCI" range, each range contains both some "PEC" registers and
some "per-stack" registers.

No default device layout is provided and PCI devices can be added on
any of the available PCIe Root Port (pcie.0 .. 2 of a Power9 chip)
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 PHB4 controllers
and its PCI busses. The model doesn't emulate the EEH error handling.

This model is not ready for hotplug yet.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[ clg: - numerous cleanups
       - commit log
       - fix for broken LSI support
       - PHB pic printinfo
       - large QOM rework ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20200127144506.11132-2-clg@kaod.org>
[dwg: Use device_class_set_props()]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-02-02 14:07:57 +11:00

152 lines
2.4 KiB
Plaintext

config PSERIES
bool
imply PCI_DEVICES
imply TEST_DEVICES
imply VIRTIO_VGA
select DIMM
select PCI
select SPAPR_VSCSI
select VFIO if LINUX # needed by spapr_pci_vfio.c
select XICS_SPAPR
select XIVE_SPAPR
select MSI_NONBROKEN
select FDT_PPC
select CHRP_NVRAM
config SPAPR_RNG
bool
default y
depends on PSERIES
config POWERNV
bool
imply PCI_DEVICES
imply TEST_DEVICES
select ISA_IPMI_BT
select IPMI_LOCAL
select ISA_BUS
select MC146818RTC
select XICS
select XIVE
select FDT_PPC
config PPC405
bool
select M48T59
select PFLASH_CFI02
select PPC4XX
select SERIAL
config PPC440
bool
imply PCI_DEVICES
imply TEST_DEVICES
imply E1000_PCI
select PCI_EXPRESS
select PPC4XX
select SERIAL
select FDT_PPC
config PPC4XX
bool
select BITBANG_I2C
select PCI
config SAM460EX
bool
select PPC405
select PFLASH_CFI01
select IDE_SII3112
select M41T80
select PPC440
select SERIAL
select SM501
select SMBUS_EEPROM
select USB_EHCI_SYSBUS
select USB_OHCI
select FDT_PPC
config PREP
bool
imply PCI_DEVICES
imply TEST_DEVICES
select CS4231A
select PREP_PCI
select I82378
select LSI_SCSI_PCI
select M48T59
select PC87312
select RS6000_MC
select FW_CFG_PPC
config RS6000_MC
bool
config MAC_OLDWORLD
bool
imply PCI_DEVICES
imply SUNGEM
imply TEST_DEVICES
select ADB
select GRACKLE_PCI
select HEATHROW_PIC
select MACIO
select FW_CFG_PPC
config MAC_NEWWORLD
bool
imply PCI_DEVICES
imply SUNGEM
imply TEST_DEVICES
select ADB
select MACIO
select MACIO_GPIO
select MAC_PMU
select UNIN_PCI
select FW_CFG_PPC
config E500
bool
imply AT24C
imply VIRTIO_PCI
select ETSEC
select OPENPIC
select PLATFORM_BUS
select PPCE500_PCI
select SERIAL
select MPC_I2C
select FDT_PPC
config VIRTEX
bool
select PPC4XX
select PFLASH_CFI01
select SERIAL
select XILINX
select XILINX_ETHLITE
select FDT_PPC
config XIVE
bool
depends on POWERNV || PSERIES
config XIVE_SPAPR
bool
default y
depends on PSERIES
select XIVE
select PCI
select PCIE_PORT
config XIVE_KVM
bool
default y
depends on XIVE_SPAPR && KVM
# Only used by 64-bit targets
config FW_CFG_PPC
bool
config FDT_PPC
bool