linux/arch/powerpc/platforms/powernv
Russell Currey 8e3f1b1d82 powerpc/powernv/pci: Enable 64-bit devices to access >4GB DMA space
On PHB3/POWER8 systems, devices can select between two different sections
of address space, TVE#0 and TVE#1.  TVE#0 is intended for 32bit devices
that aren't capable of addressing more than 4GB.  Selecting TVE#1 instead,
with the capability of addressing over 4GB, is performed by setting bit 59
of a PCI address.

However, some devices aren't capable of addressing at least 59 bits, but
still want more than 4GB of DMA space.  In order to enable this, reconfigure
TVE#0 to be suitable for 64-bit devices by allocating memory past the
initial 4GB that is inaccessible by 64-bit DMAs.

This bypass mode is only enabled if a device requests 4GB or more of DMA
address space, if the system has PHB3 (POWER8 systems), and if the device
does not share a PE with any devices from different vendors.

Signed-off-by: Russell Currey <ruscur@russell.cc>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-06-27 12:14:28 +10:00
..
eeh-powernv.c powerpc/powernv/pci: Dynamically allocate PHB diag data 2017-06-27 12:14:27 +10:00
idle.c powerpc/64s/idle: Run latch switch is done with MSR[EE]=0 2017-06-19 19:46:30 +10:00
Kconfig powerpc/powernv: Always enable SMP when building powernv 2017-04-13 23:37:17 +10:00
Makefile powerpc/powernv: Split cxl code out into a separate file 2016-07-14 20:26:31 +10:00
npu-dma.c powerpc/powernv/npu-dma.c: Fix opal_npu_destroy_context() call 2017-05-25 23:07:39 +10:00
opal-async.c
opal-dump.c powerpc/powernv : Drop reference added by kset_find_obj() 2016-08-29 12:48:21 +10:00
opal-elog.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
opal-flash.c
opal-hmi.c powerpc/powernv: Display the correct error info for CAPP errors. 2017-02-09 10:31:36 +11:00
opal-irqchip.c powerpc/opal-irqchip: Use interrupt names if present 2017-02-09 10:31:37 +11:00
opal-kmsg.c
opal-lpc.c powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
opal-memory-errors.c
opal-msglog.c powerpc/powernv: Report size of OPAL memcons log 2017-01-25 13:33:55 +11:00
opal-nvram.c
opal-power.c
opal-prd.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
opal-rtc.c
opal-sensor.c powerpc/powernv: Handle OPAL_WRONG_STATE in opal_get_sensor_data() 2017-03-31 15:22:56 +11:00
opal-sysparam.c
opal-tracepoints.c tracing: Have the reg function allow to fail 2016-12-09 09:13:30 -05:00
opal-wrappers.S powerpc/64s: Fix OPAL_CALL non-maskable interrupt reentrancy 2017-05-30 14:59:51 +10:00
opal-xscom.c powerpc/powernv: Fix XSCOM address mangling for form 1 indirect 2017-03-28 10:52:03 +11:00
opal.c Merge branch 'kvm-ppc-next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD 2017-05-09 11:50:01 +02:00
pci-cxl.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pci-ioda.c powerpc/powernv/pci: Enable 64-bit devices to access >4GB DMA space 2017-06-27 12:14:28 +10:00
pci.c powerpc/powernv/pci: Add support for PHB4 diagnostics 2017-06-27 12:14:27 +10:00
pci.h powerpc/powernv/pci: Dynamically allocate PHB diag data 2017-06-27 12:14:27 +10:00
powernv.h powerpc/powernv: Move CPU-Offline idle state invocation from smp.c to idle.c 2017-04-11 08:45:09 +10:00
rng.c powerpc: Consolidate variants of real-mode MMIOs 2017-04-10 21:43:16 +10:00
setup.c Merge branch 'topic/xive' (early part) into next 2017-04-12 22:31:37 +10:00
smp.c powerpc/powernv: Simplify lazy IRQ handling in CPU offline 2017-06-19 19:46:26 +10:00
subcore-asm.S
subcore.c powerpc/64s/idle: Move soft interrupt mask logic into C code 2017-06-19 19:46:26 +10:00
subcore.h