qemu/include/hw
Cédric Le Goater 967b75230b ppc/pnv: add XSCOM infrastructure
On a real POWER8 system, the Pervasive Interconnect Bus (PIB) serves
as a backbone to connect different units of the system. The host
firmware connects to the PIB through a bridge unit, the
Alter-Display-Unit (ADU), which gives him access to all the chiplets
on the PCB network (Pervasive Connect Bus), the PIB acting as the root
of this network.

XSCOM (serial communication) is the interface to the sideband bus
provided by the POWER8 pervasive unit to read and write to chiplets
resources. This is needed by the host firmware, OPAL and to a lesser
extent, Linux. This is among others how the PCI Host bridges get
configured at boot or how the LPC bus is accessed.

To represent the ADU of a real system, we introduce a specific
AddressSpace to dispatch XSCOM accesses to the targeted chiplets. The
translation of an XSCOM address into a PCB register address is
slightly different between the P9 and the P8. This is handled before
the dispatch using a 8byte alignment for all.

To customize the device tree, a QOM InterfaceClass, PnvXScomInterface,
is provided with a populate() handler. The chip populates the device
tree by simply looping on its children. Therefore, each model needing
custom nodes should not forget to declare itself as a child at
instantiation time.

Based on previous work done by :
      Benjamin Herrenschmidt <benh@kernel.crashing.org>

Signed-off-by: Cédric Le Goater <clg@kaod.org>
[dwg: Added cpu parameter to xscom_complete()]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-10-28 09:38:25 +11:00
..
acpi x86 and CPU queue, 2016-10-24 2016-10-25 10:25:27 +01:00
adc STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00
arm hw/arm/virt: no ITS on older machine types 2016-10-17 19:22:17 +01:00
audio
block
char char: use qemu_chr_fe* functions with CharBackend argument 2016-10-24 15:27:21 +02:00
core generic-loader: Add a generic loader 2016-10-04 13:28:09 +01:00
cpu
cris
display
dma dma: xlnx-zynq-devcfg: Fix up XLNX_ZYNQ_DEVCFG_R_MAX 2016-09-22 18:13:08 +01:00
gpio
i2c
i386 pc: Add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs 2016-10-24 17:29:15 -02:00
ide ide: Fix memory leak in ide_register_restart_cb() 2016-09-29 15:50:29 -04:00
input adb-keys.h: initial commit 2016-09-23 10:29:40 +10:00
intc * Thread Sanitizer fixes (Alex) 2016-10-10 10:39:29 +01:00
ipack
ipmi
isa portio: keep references on portio 2016-09-08 18:05:21 +04:00
kvm
lm32 intc: make HMP 'info irq' and 'info pic' commands use InterruptStatsProvider interface 2016-10-04 10:00:25 +02:00
m68k
mem
mips
misc aspeed: add a ram_size property to the memory controller 2016-09-22 18:13:06 +01:00
net cadence_gem: Add support for screening 2016-09-22 18:13:07 +01:00
nvram nvram: Rename openbios_firmware_abi.h into sun_nvram.h 2016-10-28 09:36:58 +11:00
pci hw/pci: Prepare for AMD IOMMU 2016-09-23 19:03:56 +03:00
pci-host spapr: Improved placement of PCI host bridges in guest memory map 2016-10-16 12:04:15 +11:00
ppc ppc/pnv: add XSCOM infrastructure 2016-10-28 09:38:25 +11:00
s390x s390x/kvm: disable cpu model for the 2.7 machine 2016-09-19 11:05:51 +02:00
scsi Remove unused function declarations 2016-09-15 15:32:22 +03:00
sd
sh4
smbios
sparc intc: make HMP 'info irq' and 'info pic' commands use InterruptStatsProvider interface 2016-10-04 10:00:25 +02:00
ssi aspeed: move the flash module mapping address under the controller definition 2016-10-17 19:22:16 +01:00
timer arm_mptimer: Convert to use ptimer 2016-10-24 16:26:53 +01:00
tricore
unicore32
usb
vfio vfio: Pass an error object to vfio_get_device 2016-10-17 10:58:00 -06:00
virtio virtio: cleanup VMSTATE_VIRTIO_DEVICE 2016-10-10 02:21:43 +03:00
watchdog
xen qdisk - hw/block/xen_disk: grant copy implementation 2016-09-27 18:18:55 -07:00
boards.h cpu: Support a target CPU having a variable page size 2016-10-24 16:26:49 +01:00
bt.h bt-hci-csr: drop unused argument 2016-10-08 09:02:19 +03:00
compat.h intel_iommu: reject broken EIM 2016-10-17 15:44:49 -02:00
devices.h
elf_ops.h loader: Add AddressSpace loading support to ELFs 2016-09-22 18:13:08 +01:00
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h
ide.h
irq.h
loader.h loader: Add AddressSpace loading support to targphys 2016-09-22 18:13:08 +01:00
nmi.h
or-irq.h irq: Add a new irq device that allows the ORing of lines 2016-10-04 13:28:07 +01:00
pcmcia.h
platform-bus.h
ptimer.h hw/ptimer: Add "no counter round down" policy 2016-10-24 16:26:52 +01:00
qdev-core.h bus: simplify name handling 2016-09-08 18:05:22 +04:00
qdev-dma.h
qdev-properties.h char: replace PROP_CHR with CharBackend 2016-10-24 15:27:20 +02:00
qdev.h
register.h
stream.h
sysbus.h sysbus: Remove ignored return value of FindSysbusDeviceFunc 2016-09-27 17:03:34 -03:00
usb.h