2013-02-05 15:03:15 +04:00
|
|
|
# shared objects
|
|
|
|
obj-y += ppc.o ppc_booke.o
|
|
|
|
# IBM pSeries (sPAPR)
|
2013-07-06 17:53:58 +04:00
|
|
|
obj-$(CONFIG_PSERIES) += spapr.o spapr_vio.o spapr_events.o
|
2013-02-05 15:20:00 +04:00
|
|
|
obj-$(CONFIG_PSERIES) += spapr_hcall.o spapr_iommu.o spapr_rtas.o
|
2015-02-06 06:55:47 +03:00
|
|
|
obj-$(CONFIG_PSERIES) += spapr_pci.o spapr_rtc.o
|
spapr_pci_vfio: Add spapr-pci-vfio-host-bridge to support vfio
The patch adds a spapr-pci-vfio-host-bridge device type
which is a PCI Host Bridge with VFIO support. The new device
inherits from the spapr-pci-host-bridge device and adds an "iommu"
property which is an IOMMU id. This ID represents a minimal entity
for which IOMMU isolation can be guaranteed. In SPAPR architecture IOMMU
group is called a Partitionable Endpoint (PE).
Current implementation supports one IOMMU id per QEMU VFIO PHB. Since
SPAPR allows multiple PHB for no extra cost, this does not seem to
be a problem. This limitation may change in the future though.
Example of use:
Configure and Add 3 functions of a multifunctional device to QEMU:
(the NEC PCI USB card is used as an example here):
-device spapr-pci-vfio-host-bridge,id=USB,iommu=4,index=7 \
-device vfio-pci,host=4:0:1.0,addr=1.0,bus=USB,multifunction=true
-device vfio-pci,host=4:0:1.1,addr=1.1,bus=USB
-device vfio-pci,host=4:0:1.2,addr=1.2,bus=USB
where:
* index=7 is a QEMU PHB index (used as source for MMIO/MSI/IO windows
offset);
* iommu=4 is an IOMMU id which can be found in sysfs:
[aik@vpl2 ~]$ cd /sys/bus/pci/devices/0004:00:00.0/
[aik@vpl2 0004:00:00.0]$ ls -l iommu_group
lrwxrwxrwx 1 root root 0 Jun 5 12:49 iommu_group -> ../../../kernel/iommu_groups/4
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
2014-06-10 09:39:23 +04:00
|
|
|
ifeq ($(CONFIG_PCI)$(CONFIG_PSERIES)$(CONFIG_LINUX), yyy)
|
|
|
|
obj-y += spapr_pci_vfio.o
|
|
|
|
endif
|
2013-02-05 15:03:15 +04:00
|
|
|
# PowerPC 4xx boards
|
2013-02-05 18:22:56 +04:00
|
|
|
obj-y += ppc405_boards.o ppc4xx_devs.o ppc405_uc.o ppc440_bamboo.o
|
2013-02-05 18:06:20 +04:00
|
|
|
obj-y += ppc4xx_pci.o
|
2013-01-26 23:41:58 +04:00
|
|
|
# PReP
|
2014-01-23 14:22:16 +04:00
|
|
|
obj-$(CONFIG_PREP) += prep.o
|
2013-01-24 03:03:54 +04:00
|
|
|
# OldWorld PowerMac
|
2014-01-23 19:37:55 +04:00
|
|
|
obj-$(CONFIG_MAC) += mac_oldworld.o
|
2013-01-24 03:03:54 +04:00
|
|
|
# NewWorld PowerMac
|
2014-01-23 19:37:55 +04:00
|
|
|
obj-$(CONFIG_MAC) += mac_newworld.o
|
2013-01-24 03:03:54 +04:00
|
|
|
# e500
|
2013-02-05 15:52:23 +04:00
|
|
|
obj-$(CONFIG_E500) += e500.o mpc8544ds.o e500plat.o
|
2013-02-05 18:22:56 +04:00
|
|
|
obj-$(CONFIG_E500) += mpc8544_guts.o ppce500_spin.o
|
2013-02-05 15:03:15 +04:00
|
|
|
# PowerPC 440 Xilinx ML507 reference board.
|
2014-08-26 08:30:18 +04:00
|
|
|
obj-$(CONFIG_XILINX) += virtex_ml507.o
|