4f9924c4d4
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>
152 lines
2.4 KiB
Plaintext
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
|