linux/arch/mips
Huacai Chen 1299b0e05e MIPS: Loongson: Add swiotlb to support All-Memory DMA
Loongson doesn't support DMA address above 4GB traditionally. If memory
is more than 4GB, CONFIG_SWIOTLB and ZONE_DMA32 should be selected. In
this way, DMA pages are allocated below 4GB preferably. However, if low
memory is not enough, high pages are allocated and swiotlb is used for
bouncing.

Moreover, we provide a platform-specific dma_map_ops::set_dma_mask() to
set a device's dma_mask and coherent_dma_mask. We use these masks to
distinguishes an allocated page can be used for DMA directly, or need
swiotlb to bounce.

Recently, we found that 32-bit DMA isn't a hardware bug, but a hardware
configuration issue. So, latest firmware has enable the DMA support as
high as 40-bit. To support all-memory DMA for all devices (besides the
Loongson platform limit, there are still some devices have their own
DMA32 limit), and also to be compatible with old firmware, we keep use
swiotlb.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Hongliang Tao <taohl@lemote.com>
Signed-off-by: Hua Yan <yanh@lemote.com>
Tested-by: Alex Smith <alex.smith@imgtec.com>
Reviewed-by: Alex Smith <alex.smith@imgtec.com>
Cc: John Crispin <john@phrozen.org>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/6636
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-03-31 18:17:12 +02:00
..
alchemy MIPS: Alchemy: pata_platform for DB1200 2014-03-26 23:09:21 +01:00
ar7 MIPS: Restore init.h usage to arch/mips/ar7/time.c 2014-03-26 23:09:23 +01:00
ath79 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
bcm47xx MIPS: BCM47XX: Add new file for device specific workarounds 2014-03-31 18:17:12 +02:00
bcm63xx MIPS: Use current_cpu_type() instead of c->cputype 2014-03-31 18:17:12 +02:00
boot mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
cavium-octeon mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
cobalt MIPS: Cobalt: Move to 8250/16550 serial early printk driver 2013-10-29 21:24:38 +01:00
configs MIPS: Add defconfig for Malta SMVP with EVA 2014-03-26 23:09:22 +01:00
dec DEC: Whitespace cleanup 2013-10-29 21:24:44 +01:00
emma MIPS: Remove panic_timeout settings 2013-11-26 12:12:27 +01:00
fw mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
include MIPS: Loongson: Add swiotlb to support All-Memory DMA 2014-03-31 18:17:12 +02:00
jazz Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
jz4740 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
kernel MIPS: Loongson: Add basic Loongson-3 CPU support 2014-03-31 18:17:12 +02:00
kvm mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lantiq mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lasat mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lib MIPS: lib: csum_partial: Add EVA support 2014-03-26 23:09:17 +01:00
loongson MIPS: Loongson: Add swiotlb to support All-Memory DMA 2014-03-31 18:17:12 +02:00
loongson1 MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
math-emu MIPS: Clear upper bits of FP registers on emulator writes 2014-03-26 23:09:10 +01:00
mm MIPS: Loongson: Add basic Loongson-3 CPU support 2014-03-31 18:17:12 +02:00
mti-malta MIPS: Malta: Fix CONFIG_BLK_DEV_IDE vestiges. 2014-03-31 18:17:12 +02:00
mti-sead3 MIPS: SEAD3: Don't use module_init in non-modular sead3-mtd.c code 2014-03-31 18:17:12 +02:00
netlogic Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
oprofile MIPS: Add support for the M5150 processor 2014-03-26 23:09:22 +01:00
pci MIPS: Loongson 3: Add HT-linked PCI support 2014-03-31 18:17:12 +02:00
pmcs-msp71xx MIPS: introduce MIPS_L1_CACHE_SHIFT_<N> 2014-01-24 22:39:55 +01:00
pnx833x MIPS: PNX833x: PNX8335_PCI_ETHERNET_INT depends on CONFIG_SOC_PNX8335 2013-08-05 13:34:22 +02:00
power MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ralink Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
rb532 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip22 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip27 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
sgi-ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sibyte MIPS: Remove panic_timeout settings 2013-11-26 12:12:27 +01:00
sni MIPS: Cleanup CP0 PRId and CP1 FPIR register access masks 2013-09-18 20:25:19 +02:00
txx9 MIPS: TXx9: Fix build error if CONFIG_TOSHIBA_JMR3927 is not selected 2013-09-03 15:30:50 +02:00
vr41xx MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
Kbuild KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00
Kbuild.platforms MIPS: PowerTV: Remove support code. 2013-10-29 21:25:17 +01:00
Kconfig MIPS: Octeon: Remove SYS_HAS_DMA_OPS 2014-03-31 18:17:12 +02:00
Kconfig.debug MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01:00
Makefile MIPS: Add MSA register definitions & access 2014-03-26 23:09:10 +01:00