mirror of
https://github.com/torvalds/linux.git
synced 2024-12-19 01:23:20 +00:00
f87a88642e
This adds tce_iommu_take_ownership() and tce_iommu_release_ownership which call in a loop iommu_take_ownership()/iommu_release_ownership() for every table on the group. As there is just one now, no change in behaviour is expected. At the moment the iommu_table struct has a set_bypass() which enables/ disables DMA bypass on IODA2 PHB. This is exposed to POWERPC IOMMU code which calls this callback when external IOMMU users such as VFIO are about to get over a PHB. The set_bypass() callback is not really an iommu_table function but IOMMU/PE function. This introduces a iommu_table_group_ops struct and adds take_ownership()/release_ownership() callbacks to it which are called when an external user takes/releases control over the IOMMU. This replaces set_bypass() with ownership callbacks as it is not necessarily just bypass enabling, it can be something else/more so let's give it more generic name. The callbacks is implemented for IODA2 only. Other platforms (P5IOC2, IODA1) will use the old iommu_take_ownership/iommu_release_ownership API. The following patches will replace iommu_take_ownership/ iommu_release_ownership calls in IODA2 with full IOMMU table release/ create. As we here and touching bypass control, this removes pnv_pci_ioda2_setup_bypass_pe() as it does not do much more compared to pnv_pci_ioda2_set_bypass. This moves tce_bypass_base initialization to pnv_pci_ioda2_setup_dma_pe. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> [aw: for the vfio related changes] Acked-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
||
---|---|---|
.. | ||
eeh-powernv.c | ||
idle.c | ||
Kconfig | ||
Makefile | ||
opal-async.c | ||
opal-dump.c | ||
opal-elog.c | ||
opal-flash.c | ||
opal-hmi.c | ||
opal-irqchip.c | ||
opal-lpc.c | ||
opal-memory-errors.c | ||
opal-msglog.c | ||
opal-nvram.c | ||
opal-power.c | ||
opal-prd.c | ||
opal-rtc.c | ||
opal-sensor.c | ||
opal-sysparam.c | ||
opal-tracepoints.c | ||
opal-wrappers.S | ||
opal-xscom.c | ||
opal.c | ||
pci-ioda.c | ||
pci-p5ioc2.c | ||
pci.c | ||
pci.h | ||
powernv.h | ||
rng.c | ||
setup.c | ||
smp.c | ||
subcore-asm.S | ||
subcore.c | ||
subcore.h |