FUJITA Tomonori
8d8bb39b9e
dma-mapping: add the device argument to dma_mapping_error()
...
Add per-device dma_mapping_ops support for CONFIG_X86_64 as POWER
architecture does:
This enables us to cleanly fix the Calgary IOMMU issue that some devices
are not behind the IOMMU (http://lkml.org/lkml/2008/5/8/423 ).
I think that per-device dma_mapping_ops support would be also helpful for
KVM people to support PCI passthrough but Andi thinks that this makes it
difficult to support the PCI passthrough (see the above thread). So I
CC'ed this to KVM camp. Comments are appreciated.
A pointer to dma_mapping_ops to struct dev_archdata is added. If the
pointer is non NULL, DMA operations in asm/dma-mapping.h use it. If it's
NULL, the system-wide dma_ops pointer is used as before.
If it's useful for KVM people, I plan to implement a mechanism to register
a hook called when a new pci (or dma capable) device is created (it works
with hot plugging). It enables IOMMUs to set up an appropriate
dma_mapping_ops per device.
The major obstacle is that dma_mapping_error doesn't take a pointer to the
device unlike other DMA operations. So x86 can't have dma_mapping_ops per
device. Note all the POWER IOMMUs use the same dma_mapping_error function
so this is not a problem for POWER but x86 IOMMUs use different
dma_mapping_error functions.
The first patch adds the device argument to dma_mapping_error. The patch
is trivial but large since it touches lots of drivers and dma-mapping.h in
all the architecture.
This patch:
dma_mapping_error() doesn't take a pointer to the device unlike other DMA
operations. So we can't have dma_mapping_ops per device.
Note that POWER already has dma_mapping_ops per device but all the POWER
IOMMUs use the same dma_mapping_error function. x86 IOMMUs use device
argument.
[akpm@linux-foundation.org: fix sge]
[akpm@linux-foundation.org: fix svc_rdma]
[akpm@linux-foundation.org: build fix]
[akpm@linux-foundation.org: fix bnx2x]
[akpm@linux-foundation.org: fix s2io]
[akpm@linux-foundation.org: fix pasemi_mac]
[akpm@linux-foundation.org: fix sdhci]
[akpm@linux-foundation.org: build fix]
[akpm@linux-foundation.org: fix sparc]
[akpm@linux-foundation.org: fix ibmvscsi]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Muli Ben-Yehuda <muli@il.ibm.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Avi Kivity <avi@qumranet.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-26 12:00:03 -07:00
..
iseries
[POWERPC] iSeries: Localise and constify some iSeries data
2008-04-15 21:21:25 +10:00
8xx_immap.h
[POWERPC] include/asm-powerpc/: Spelling fixes
2007-12-20 16:17:44 +11:00
8253pit.h
a.out.h
aout: move STACK_TOP[_MAX] to asm/processor.h
2008-02-08 09:22:29 -08:00
abs_addr.h
[LIB]: Make PowerPC LMB code generic so sparc64 can use it too.
2008-02-13 16:56:49 -08:00
agp.h
x86: remove flush_agp_mappings()
2008-01-30 13:34:07 +01:00
asm-compat.h
powerpc: Add a #define for aligning to a long-sized boundary
2008-07-22 10:39:34 +10:00
atomic.h
auxvec.h
backlight.h
bitops.h
generic: implement __fls on all 64-bit archs
2008-04-26 19:21:16 +02:00
bootx.h
btext.h
bug.h
bugs.h
byteorder.h
cache.h
powerpc/booke: Add support for new e500mc core
2008-06-18 16:17:56 -05:00
cacheflush.h
cell-pmu.h
cell-regs.h
[POWERPC] cell: Add Cell memory controller register defs and expose it
2007-10-09 21:01:56 +10:00
checksum.h
clk_interface.h
[POWERPC] clk.h interface for platforms
2007-10-03 09:11:56 +10:00
code-patching.h
powerpc: Fixup lwsync at runtime
2008-07-03 16:58:10 +10:00
compat.h
asm-*/compat.h: fix typo in comment
2008-02-03 16:32:51 +02:00
cpm.h
powerpc/QE: switch to the cpm_muram implementation
2008-06-10 11:11:21 -05:00
cpm1.h
powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code
2008-06-26 01:49:06 -05:00
cpm2.h
powerpc/cpm: Remove !CONFIG_PPC_CPM_NEW_BINDING code
2008-06-26 01:49:06 -05:00
cputable.h
powerpc: Enable AT_BASE_PLATFORM aux vector
2008-07-25 15:44:39 +10:00
cputhreads.h
[POWERPC] Fix thinko in cpu_thread_mask_to_cores()
2008-02-26 22:17:03 +11:00
cputime.h
taskstats scaled time cleanup
2008-02-06 10:41:00 -08:00
current.h
dbdma.h
dcr-generic.h
[POWERPC] Refactor DCR code
2008-05-29 07:06:56 -05:00
dcr-mmio.h
[POWERPC] Refactor DCR code
2008-05-29 07:06:56 -05:00
dcr-native.h
[POWERPC] Refactor DCR code
2008-05-29 07:06:56 -05:00
dcr-regs.h
[POWERPC] 4xx: Add PPC4xx L2-cache support (440GX)
2008-03-26 07:27:54 -05:00
dcr.h
[POWERPC] Refactor DCR code
2008-05-29 07:06:56 -05:00
delay.h
device.h
div64.h
dma-mapping.h
dma-mapping: add the device argument to dma_mapping_error()
2008-07-26 12:00:03 -07:00
dma.h
scheduled OSS driver removal
2008-02-06 10:41:02 -08:00
edac.h
eeh.h
eeh_event.h
elf.h
powerpc: Enable AT_BASE_PLATFORM aux vector
2008-07-25 15:44:39 +10:00
emergency-restart.h
errno.h
exception.h
[POWERPC] irqtrace support for 64-bit powerpc
2008-04-18 15:38:47 +10:00
fb.h
fcntl.h
feature-fixups.h
powerpc: Fixup lwsync at runtime
2008-07-03 16:58:10 +10:00
firmware.h
powerpc/pseries: Enable CMO feature during platform setup
2008-07-25 15:44:42 +10:00
fixmap.h
[POWERPC] Port fixmap from x86 and use for kmap_atomic
2008-04-24 20:58:02 +10:00
floppy.h
cleanup floppy.h
2007-10-17 08:42:55 -07:00
fs_pd.h
[POWERPC] 85xx: Killed <asm/mpc85xx.h>
2007-10-11 09:14:31 -05:00
fsl_gtm.h
powerpc/sysdev: implement FSL GTM support
2008-06-10 10:38:50 -05:00
fsl_lbc.h
[POWERPC] fsl_lbc: implement few UPM routines
2008-04-17 01:01:38 -05:00
ftrace.h
ftrace: store mcount address in rec->ip
2008-06-23 22:10:56 +02:00
futex.h
asm-*/futex.h should include linux/uaccess.h
2008-04-30 08:29:52 -07:00
gpio.h
gpiolib: allow user-selection
2008-07-25 10:53:30 -07:00
grackle.h
hardirq.h
heathrow.h
highmem.h
[POWERPC] Port fixmap from x86 and use for kmap_atomic
2008-04-24 20:58:02 +10:00
hugetlb.h
powerpc: support multiple hugepage sizes
2008-07-24 10:47:19 -07:00
hvcall.h
powerpc/pseries: Utilities to set firmware page state
2008-07-25 15:44:42 +10:00
hvconsole.h
hvcserver.h
hw_irq.h
ftrace, POWERPC: add irqs_disabled_flags to ppc
2008-05-23 22:37:23 +02:00
hydra.h
i8259.h
ibmebus.h
[POWERPC] ibmebus: Move to of_device and of_platform_driver, match eHCA and eHEA drivers
2007-10-17 22:30:08 +10:00
ide.h
ide-generic: remove broken PPC_PREP support
2008-07-24 22:53:30 +02:00
immap_86xx.h
[POWERPC] 86xx: fix guts_set_dmacr() and add guts_set_pmuxcr_dma() to immap_86xx.h
2007-12-11 13:57:18 -06:00
immap_cpm2.h
[POWERPC] cpm2: Infrastructure code cleanup.
2007-10-04 11:02:04 -05:00
immap_qe.h
[POWERPC] QE: immap_qe.h should include asm/io.h
2008-04-17 01:01:39 -05:00
io-defs.h
[POWERPC] cell: Generalize io-workarounds code
2008-04-24 21:08:12 +10:00
io.h
powerpc ioremap_prot
2008-07-24 10:47:15 -07:00
ioctl.h
[POWERPC] Get most of ioctl.h content from <asm-generic/ioctl.h>
2008-05-16 23:22:28 +10:00
ioctls.h
iommu.h
powerpc/dma: implement new dma_*map*_attrs() interfaces
2008-07-09 16:30:43 +10:00
ipcbuf.h
ipic.h
[POWERPC] ipic: add new interrupts introduced by new chip
2007-12-11 13:57:18 -06:00
irq.h
[POWERPC] Move to runtime allocated exception stacks
2008-06-02 14:54:42 -05:00
irq_regs.h
irqflags.h
[POWERPC] irqtrace support for 64-bit powerpc
2008-04-18 15:38:47 +10:00
Kbuild
include/asm/ptrace.h userspace headers cleanup
2008-07-25 10:53:39 -07:00
kdebug.h
x86: optimize page faults like all other achitectures and kill notifier cruft
2007-10-16 09:42:50 -07:00
kdump.h
[POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero)
2008-04-24 20:58:01 +10:00
kexec.h
powerpc: Provide dummy crash_shutdown_register
2008-06-30 22:30:55 +10:00
keylargo.h
kgdb.h
kgdb, powerpc: arch specific powerpc kgdb support
2008-07-23 11:30:15 -05:00
kmap_types.h
kprobes.h
Kprobes: indicate kretprobe support in Kconfig
2008-03-04 16:35:11 -08:00
kvm.h
KVM: ppc: PowerPC 440 KVM implementation
2008-04-27 18:21:39 +03:00
kvm_asm.h
KVM: ppc: PowerPC 440 KVM implementation
2008-04-27 18:21:39 +03:00
kvm_host.h
KVM: Add coalesced MMIO support (powerpc part)
2008-07-20 12:42:31 +03:00
kvm_para.h
KVM: ppc: PowerPC 440 KVM implementation
2008-04-27 18:21:39 +03:00
kvm_ppc.h
KVM: ppc: Remove duplicate function
2008-06-06 21:22:09 +03:00
libata-portmap.h
linkage.h
lmb.h
[POWERPC] Use lowmem_end_addr to limit lmb allocations on ppc32
2008-04-17 07:46:13 +10:00
local.h
lppaca.h
powerpc/pseries: Add CMO paging statistics
2008-07-25 15:44:42 +10:00
lv1call.h
machdep.h
powerpc/pseries: iommu enablement for CMO
2008-07-25 15:44:43 +10:00
macio.h
[POWERPC] replace asm/of_device.h with linux/of_device.h in macio.h
2008-04-15 21:21:26 +10:00
mc146818rtc.h
mediabay.h
[POWERPC] Build fix for drivers/macintosh/mediabay.c
2008-06-16 15:00:47 +10:00
mman.h
powerpc: mman.h export fixups
2008-07-15 12:24:53 +10:00
mmu-8xx.h
[POWERPC] Move phys_addr_t definition into asm/types.h
2008-04-17 07:46:14 +10:00
mmu-40x.h
[POWERPC] Move phys_addr_t definition into asm/types.h
2008-04-17 07:46:14 +10:00
mmu-44x.h
ppc: Export tlb_44x_hwater for KVM
2008-04-27 18:21:37 +03:00
mmu-fsl-booke.h
[POWERPC] Move phys_addr_t definition into asm/types.h
2008-04-17 07:46:14 +10:00
mmu-hash32.h
powerpc: Get rid of bitfields in ppc_bat struct
2008-06-30 22:31:05 +10:00
mmu-hash64.h
powerpc: support multiple hugepage sizes
2008-07-24 10:47:19 -07:00
mmu.h
mmu_context.h
remove asm/bitops.h includes
2007-10-19 11:53:41 -07:00
mmzone.h
module.h
mpc6xx.h
[POWERPC] Add 6xx-style HID0_SLEEP support.
2008-05-16 23:22:28 +10:00
mpc8xx.h
[POWERPC] 8xx: Get rid of conditional includes of board specific setup
2008-01-28 08:31:04 -06:00
mpc52xx.h
[POWERPC] Add common clock setting routine mpc52xx_psc_set_clkdiv()
2008-01-26 15:32:18 -07:00
mpc52xx_psc.h
powerpc/mpc5200: add PSC SICR bit definitions
2008-07-22 01:13:54 -06:00
mpc86xx.h
mpc512x.h
[POWERPC] mpc512x: Basic platform support
2008-02-06 14:03:10 -07:00
mpc8260.h
[POWERPC] 82xx: Embedded Planet EP8248E support
2008-01-23 19:34:43 -06:00
mpic.h
Merge branch 'merge' into powerpc-next
2008-05-23 16:53:23 +10:00
msgbuf.h
mutex.h
namei.h
nvram.h
include/asm-powerpc/nvram.h needs list.h
2008-02-05 09:44:08 -08:00
of_device.h
[POWERPC] Move of_device_get_modalias to drivers/of
2008-05-16 23:22:28 +10:00
of_platform.h
[POWERPC] Enable RTC for Ebony and Walnut (v2)
2008-01-25 07:07:26 -06:00
ohare.h
oprofile_impl.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
paca.h
[POWERPC] Raise the upper limit of NR_CPUS and move the pacas into the BSS
2008-04-24 20:58:04 +10:00
page.h
PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures
2008-07-24 10:47:21 -07:00
page_32.h
[POWERPC] 85xx: Add support for relocatable kernel (and booting at non-zero)
2008-04-24 20:58:01 +10:00
page_64.h
powerpc: support multiple hugepage sizes
2008-07-24 10:47:19 -07:00
param.h
parport.h
pasemi_dma.h
pasemi_mac: jumbo frame support
2008-03-05 16:34:39 -06:00
pci-bridge.h
powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata
2008-06-17 19:01:38 -04:00
pci.h
[POWERPC] Merge PCI resource allocation & assignment
2007-12-20 16:18:09 +11:00
percpu.h
percpu: fix DEBUG_PREEMPT per_cpu checking
2008-02-23 12:09:28 -08:00
pgalloc-32.h
CONFIG_HIGHPTE vs. sub-page page tables.
2008-02-08 09:22:42 -08:00
pgalloc-64.h
powerpc: support multiple hugepage sizes
2008-07-24 10:47:19 -07:00
pgalloc.h
pgtable-4k.h
powerpc ioremap_prot
2008-07-24 10:47:15 -07:00
pgtable-64k.h
powerpc: define support for 16G hugepages
2008-07-24 10:47:19 -07:00
pgtable-ppc32.h
powerpc ioremap_prot
2008-07-24 10:47:15 -07:00
pgtable-ppc64.h
powerpc ioremap_prot
2008-07-24 10:47:15 -07:00
pgtable.h
Move update_mmu_cache() declaration from tlbflush.h to pgtable.h
2008-07-25 16:21:11 +10:00
phyp_dump.h
[POWERPC] pseries/phyp dump: Reserve a variable amount of space at boot
2008-04-17 07:46:14 +10:00
pmac_feature.h
[POWERPC] Disable G5 NAP mode during SMU commands on U3
2008-02-08 19:52:35 +11:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
powerpc/cell: Add support for power button of future IBM cell blades
2008-07-22 10:39:32 +10:00
poll.h
posix_types.h
asm-*/posix_types.h: scrub __GLIBC__
2008-02-08 09:22:34 -08:00
ppc-pci.h
[POWERPC] iSeries: Call iSeries_pcibios_init from setup_arch
2007-12-11 13:42:32 +11:00
ppc4xx.h
[POWERPC] 4xx: Create common ppc4xx_reset_system() in ppc4xx_soc.c
2008-04-02 20:44:56 -05:00
ppc_asm.h
powerpc: Add VSX assembler code macros
2008-07-01 11:28:48 +10:00
processor.h
powerpc: Implement task_pt_regs() accessor
2008-07-09 16:30:44 +10:00
prom.h
powerpc: Implement OF PCI address accessors stubs for CONFIG_PCI=n
2008-06-30 22:30:51 +10:00
ps3.h
powerpc/ps3: Add a sub-match id to ps3_system_bus
2008-07-22 10:39:33 +10:00
ps3av.h
ps3: use symbolic names for video modes
2008-02-06 10:41:17 -08:00
ps3fb.h
ps3stor.h
pSeries_reconfig.h
powerpc/pseries: Update the device tree correctly for drconf memory add/remove
2008-07-03 16:58:16 +10:00
ptrace.h
powerpc: Add VSX context save/restore, ptrace and signal support
2008-07-01 11:28:50 +10:00
qe.h
powerpc/QE: use arch_initcall to probe QUICC Engine GPIOs
2008-06-26 01:49:09 -05:00
qe_ic.h
[POWERPC] QEIC: Implement pluggable handlers, fix MPIC cascading
2007-10-08 08:38:57 -05:00
reg.h
powerpc/mpc83xx: Power Management support
2008-07-16 17:57:30 -05:00
reg_8xx.h
reg_booke.h
powerpc/e500mc: flush L2 on NAP for e500mc
2008-06-26 01:49:03 -05:00
reg_fsl_emb.h
[POWERPC] Made FSL Book-E PMC support more generic
2008-02-05 23:34:14 -06:00
resource.h
rheap.h
rio.h
[RAPIDIO] Move include/asm-ppc/rio.h to asm-powerpc
2008-04-29 19:40:27 +10:00
rtas.h
Revert "[POWERPC] Fix RTAS os-term usage on kernel panic"
2007-12-03 09:39:45 +11:00
rtc.h
rwsem.h
[POWERPC] irqtrace support for 64-bit powerpc
2008-04-18 15:38:47 +10:00
scatterlist.h
Add CONFIG_DEBUG_SG sg validation
2007-10-22 21:20:03 +02:00
seccomp.h
sections.h
sembuf.h
serial.h
setjmp.h
[POWERPC] Make setjmp/longjmp code usable outside of xmon
2008-01-25 22:52:50 +11:00
setup.h
shmbuf.h
shmparam.h
sigcontext.h
powerpc: Add VSX context save/restore, ptrace and signal support
2008-07-01 11:28:50 +10:00
siginfo.h
signal.h
smp.h
Merge commit 'origin/master'
2008-07-16 11:07:59 +10:00
smu.h
[POWERPC] include/asm-powerpc/: Spelling fixes
2007-12-20 16:17:44 +11:00
socket.h
[NET]: Introducing socket mark socket option.
2008-01-31 19:27:19 -08:00
sockios.h
sparsemem.h
powerpc: Fix building of arch/powerpc/mm/mem.o when MEMORY_HOTPLUG=y and SPARSEMEM=n
2008-07-03 16:58:07 +10:00
spinlock.h
powerpc: Make sure that include/asm-powerpc/spinlock.h does not trigger compilation warnings
2008-07-01 11:29:00 +10:00
spinlock_types.h
spu.h
powerpc/spufs: add atomic busy_spus counter to struct cbe_spu_info
2008-07-09 16:30:42 +10:00
spu_csa.h
powerpc/spufs: remove class_0_dsisr from spu exception handling
2008-06-16 14:35:00 +10:00
spu_info.h
spu_priv1.h
[POWERPC] cell: wrap master run control bit
2007-12-21 19:45:05 +11:00
sstep.h
stat.h
statfs.h
string.h
[POWERPC] Add hand-coded assembly strcmp
2008-04-07 10:03:03 +10:00
suspend.h
synch.h
powerpc: Fixup lwsync at runtime
2008-07-03 16:58:10 +10:00
syscalls.h
powerpc: Wireup new syscalls
2008-07-25 16:40:55 +10:00
systbl.h
powerpc: Wireup new syscalls
2008-07-25 16:40:55 +10:00
system.h
powerpc: BookE hardware watchpoint support
2008-07-25 15:44:39 +10:00
tce.h
termbits.h
termios.h
thread_info.h
clean up duplicated alloc/free_thread_info
2008-07-25 10:53:28 -07:00
time.h
[POWERPC] Fix sparse warnings in arch/powerpc/kernel
2008-05-14 22:31:59 +10:00
timex.h
powerpc: Introduce infrastructure for feature sections with alternatives
2008-07-01 11:28:28 +10:00
tlb.h
[POWERPC] Include pagemap.h in asm/powerpc/tlb.h
2007-10-03 12:02:43 +10:00
tlbflush.h
Move update_mmu_cache() declaration from tlbflush.h to pgtable.h
2008-07-25 16:21:11 +10:00
topology.h
asm-generic: add node_to_cpumask_ptr macro
2008-04-19 19:44:58 +02:00
tsi108.h
tsi108_irq.h
tsi108_pci.h
types.h
powerpc: types: use <asm-generic/int-*.h> for the powerpc architecture
2008-05-02 16:18:35 -07:00
uaccess.h
powerpc: Use PPC_LONG_ALIGN in uaccess.h
2008-07-22 10:39:35 +10:00
ucc.h
[POWERPC] qe: miscellaneous code improvements and fixes to the QE library
2007-10-08 08:38:15 -05:00
ucc_fast.h
powerpc: Fix a bunch of sparse warnings in the qe_lib
2008-07-16 17:57:45 -05:00
ucc_slow.h
[POWERPC] qe: miscellaneous code improvements and fixes to the QE library
2007-10-08 08:38:15 -05:00
ucontext.h
udbg.h
[POWERPC] 4xx: Add early udbg support for 40x processors
2007-12-23 13:13:03 -06:00
uic.h
unaligned.h
kernel: Move arches to use common unaligned access
2008-04-29 08:06:27 -07:00
uninorth.h
unistd.h
powerpc: Wireup new syscalls
2008-07-25 16:40:55 +10:00
user.h
Sanitize the type of struct user.u_ar0
2008-02-07 08:42:30 -08:00
vdso.h
vdso_datapage.h
[POWERPC] vdso: Fixes for cache block sizes
2007-11-20 13:56:31 +11:00
vga.h
vio.h
powerpc/pseries: vio bus support for CMO
2008-07-25 15:44:43 +10:00
xilinx_intc.h
[POWERPC] Virtex: add xilinx interrupt controller driver
2007-10-03 07:23:14 -05:00
xmon.h
[POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c
2008-05-14 22:31:57 +10:00
xor.h