linux/arch/x86/include/asm
Akinobu Mita 9c5a362142 x86: enable DMA CMA with swiotlb
The DMA Contiguous Memory Allocator support on x86 is disabled when
swiotlb config option is enabled.  So DMA CMA is always disabled on
x86_64 because swiotlb is always enabled.  This attempts to support for
DMA CMA with enabling swiotlb config option.

The contiguous memory allocator on x86 is integrated in the function
dma_generic_alloc_coherent() which is .alloc callback in nommu_dma_ops
for dma_alloc_coherent().

x86_swiotlb_alloc_coherent() which is .alloc callback in swiotlb_dma_ops
tries to allocate with dma_generic_alloc_coherent() firstly and then
swiotlb_alloc_coherent() is called as a fallback.

The main part of supporting DMA CMA with swiotlb is that changing
x86_swiotlb_free_coherent() which is .free callback in swiotlb_dma_ops
for dma_free_coherent() so that it can distinguish memory allocated by
dma_generic_alloc_coherent() from one allocated by
swiotlb_alloc_coherent() and release it with dma_generic_free_coherent()
which can handle contiguous memory.  This change requires making
is_swiotlb_buffer() global function.

This also needs to change .free callback in the dma_map_ops for amd_gart
and sta2x11, because these dma_ops are also using
dma_generic_alloc_coherent().

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Don Dutile <ddutile@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-06-04 16:53:57 -07:00
..
crypto
numachip
trace
uv x86/UV: Set n_lshift based on GAM_GR_CONFIG MMR for UV3 2014-04-01 12:10:44 +02:00
xen arm: xen: implement multicall hypercall support. 2014-04-24 13:09:46 +01:00
Kbuild x86: use generic early_ioremap 2014-04-07 16:36:15 -07:00
a.out-core.h
acenv.h ACPICA: Clean up redudant definitions already defined elsewhere 2014-05-27 18:13:08 +02:00
acpi.h ACPICA: Linux headers: Add <asm/acenv.h> to remove mis-ordered inclusion of <asm/acpi.h> 2014-05-27 18:13:07 +02:00
agp.h
alternative-asm.h
alternative.h
amd_nb.h
apb_timer.h
apic.h x86/apic: Always define nox2apic and define it as initdata 2014-02-09 15:15:11 +01:00
apic_flat_64.h
apicdef.h
apm.h
arch_hweight.h
archrandom.h random: Add arch_has_random[_seed]() 2014-03-19 22:24:08 -04:00
asm-offsets.h
asm.h
atomic.h arch,x86: Convert smp_mb__*() 2014-04-18 14:20:46 +02:00
atomic64_32.h
atomic64_64.h
barrier.h arch,x86: Convert smp_mb__*() 2014-04-18 14:20:46 +02:00
bios_ebda.h
bitops.h arch,x86: Convert smp_mb__*() 2014-04-18 14:20:46 +02:00
boot.h
bootparam_utils.h
bug.h x86: always define BUG() and HAVE_ARCH_BUG, even with !CONFIG_BUG 2014-04-07 16:36:10 -07:00
bugs.h
cache.h
cacheflush.h
calgary.h
calling.h
ce4100.h
checksum.h
checksum_32.h
checksum_64.h
clocksource.h x86, vdso: Make vsyscall_gtod_data handling x86 generic 2014-03-18 12:51:52 -07:00
cmdline.h x86, boot: Carve out early cmdline parsing function 2014-05-20 20:21:24 -07:00
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
context_tracking.h
cpu.h
cpu_device_id.h
cpufeature.h Driver core / sysfs patches for 3.15-rc1 2014-04-01 16:28:19 -07:00
cpumask.h
current.h
debugreg.h
delay.h
desc.h
desc_defs.h
device.h
div64.h
dma-contiguous.h
dma-mapping.h
dma.h
dmi.h
dwarf2.h
e820.h
edac.h
efi.h Merge remote-tracking branch 'tip/x86/efi-mixed' into efi-for-mingo 2014-03-05 18:15:37 +00:00
elf.h x86, vdso: Remove compat vdso support 2014-03-13 16:20:09 -07:00
emergency-restart.h
entry_arch.h
exec.h
fb.h
fixmap.h x86: use generic early_ioremap 2014-04-07 16:36:15 -07:00
floppy.h x86: Remove deprecated IRQF_DISABLED 2014-03-04 21:47:51 +01:00
fpu-internal.h
frame.h
ftrace.h
futex.h
gart.h
genapic.h
geode.h
gpio.h
hardirq.h x86: hardirq: Make irq_hv_callback_count available for CONFIG_HYPERV=m as well 2014-03-06 12:08:37 +01:00
hash.h
highmem.h
hpet.h x86/hpet: Make boot_hpet_disable extern 2014-05-08 08:15:34 +02:00
hugetlb.h x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow() 2014-05-13 16:34:09 -07:00
hw_breakpoint.h
hw_irq.h x86/irq: Clean up VECTOR_UNDEFINED and VECTOR_RETRIGGERED definition 2014-04-14 13:42:05 +02:00
hypertransport.h
hypervisor.h
i387.h
i8259.h
ia32.h
ia32_unistd.h
idle.h
inat.h
inat_types.h
init.h
insn.h
inst.h
intel-mid.h
intel_mid_vrtc.h
intel_scu_ipc.h
io.h x86: use generic early_ioremap 2014-04-07 16:36:15 -07:00
io_apic.h
iomap.h
iommu.h
iommu_table.h
iosf_mbi.h x86, iosf: Added Quark MBI identifiers 2014-05-09 14:57:08 -07:00
ipi.h
irq.h
irq_regs.h
irq_remapping.h
irq_vectors.h
irqflags.h
ist.h
jump_label.h
kbdleds.h
kdebug.h
kexec.h
kgdb.h
kmap_types.h
kmemcheck.h
kprobes.h
kvm_emulate.h KVM: x86: drop set_rflags callback 2014-05-22 17:47:16 +02:00
kvm_guest.h
kvm_host.h KVM: x86: get CPL from SS.DPL 2014-05-22 17:47:17 +02:00
kvm_para.h
lguest.h
lguest_hcall.h
linkage.h
local.h
local64.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h
mce.h
microcode.h x86, microcode: Add a disable chicken bit 2014-05-20 20:21:27 -07:00
microcode_amd.h
microcode_intel.h
misc.h
mmconfig.h
mmu.h
mmu_context.h
mmx.h
mmzone.h
mmzone_32.h x86, platforms: Remove NUMAQ 2014-02-27 08:07:39 -08:00
mmzone_64.h
module.h
mpspec.h x86, platforms: Remove NUMAQ 2014-02-27 08:07:39 -08:00
mpspec_def.h
mshyperv.h x86: hyperv: Fixup the (brain) damage caused by the irq cleanup 2014-03-05 13:42:14 +01:00
msidef.h
msr.h x86: Add another set of MSR accessor functions 2014-03-13 15:34:45 -07:00
mtrr.h
mutex.h
mutex_32.h
mutex_64.h
mwait.h
nmi.h x86/nmi: Push duration printk() to irq context 2014-02-09 13:17:22 +01:00
nops.h
numa.h
numa_32.h
olpc.h
olpc_ofw.h
page.h
page_32.h
page_32_types.h
page_64.h
page_64_types.h x86_64: expand kernel stack to 16K 2014-05-30 11:52:51 -07:00
page_types.h
paravirt.h
paravirt_types.h
parport.h
pat.h
pci-direct.h
pci-functions.h
pci.h PCI: Turn pcibios_penalize_isa_irq() into a weak function 2014-05-27 16:23:58 -06:00
pci_64.h
pci_x86.h
percpu.h percpu: add raw_cpu_ops 2014-04-07 16:36:13 -07:00
perf_event.h
perf_event_p4.h
pgalloc.h
pgtable-2level.h
pgtable-2level_types.h
pgtable-3level.h
pgtable-3level_types.h
pgtable.h x86: define _PAGE_NUMA by reusing software bits on the PMD and PTE levels 2014-06-04 16:53:55 -07:00
pgtable_32.h
pgtable_32_types.h
pgtable_64.h x86: define _PAGE_NUMA by reusing software bits on the PMD and PTE levels 2014-06-04 16:53:55 -07:00
pgtable_64_types.h
pgtable_types.h x86: define _PAGE_NUMA by reusing software bits on the PMD and PTE levels 2014-06-04 16:53:55 -07:00
posix_types.h
preempt.h percpu: add raw_cpu_ops 2014-04-07 16:36:13 -07:00
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h x86: Keep thread_info on thread stack in x86_32 2014-03-06 16:56:55 -08:00
prom.h
proto.h
ptrace.h
pvclock-abi.h
pvclock.h
realmode.h
reboot.h
reboot_fixups.h
required-features.h
resume-trace.h
rio.h
rmwcc.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h
segment.h
serial.h
setup.h x86, platforms: Remove SGI Visual Workstation 2014-02-27 08:07:39 -08:00
setup_arch.h
shmparam.h
sigcontext.h
sigframe.h
sighandling.h
signal.h
simd.h
smap.h
smp.h
smpboot_hooks.h
sparsemem.h
special_insns.h x86: Add support for the clflushopt instruction 2014-02-27 08:23:28 -08:00
spinlock.h x86: Remove CONFIG_X86_OOSTORE 2014-03-11 10:16:18 -07:00
spinlock_types.h
sta2x11.h
stackprotector.h
stacktrace.h
string.h
string_32.h
string_64.h
suspend.h
suspend_32.h
suspend_64.h
svm.h
swiotlb.h x86: enable DMA CMA with swiotlb 2014-06-04 16:53:57 -07:00
switch_to.h
sync_bitops.h arch,x86: Convert smp_mb__*() 2014-04-18 14:20:46 +02:00
sys_ia32.h
syscall.h audit: use uapi/linux/audit.h for AUDIT_ARCH declarations 2014-03-20 10:11:59 -04:00
syscalls.h
sysfb.h
tce.h
thread_info.h sched/idle, x86: Switch from TS_POLLING to TIF_POLLING_NRFLAG 2014-05-08 09:16:56 +02:00
time.h
timer.h
timex.h
tlb.h
tlbflush.h
topology.h PCI changes for the v3.15 merge window: 2014-04-01 15:14:04 -07:00
trace_clock.h
traps.h x86: fix page fault tracing when KVM guest support enabled 2014-05-22 17:47:17 +02:00
tsc.h x86, tsc: Fallback to normal calibration if fast MSR calibration fails 2014-02-19 17:12:24 +01:00
uaccess.h
uaccess_32.h
uaccess_64.h
unaligned.h
unistd.h fs/compat: optional preadv64/pwrite64 compat system calls 2014-03-06 15:35:09 +01:00
uprobes.h uprobes/x86: Emulate relative call's 2014-04-17 21:58:23 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h x86, vdso: Finish removing VDSO32_PRELINK 2014-03-20 20:20:18 -07:00
vdso32.h x86, vdso: Add 32 bit VDSO time support for 32 bit kernel 2014-03-18 12:52:37 -07:00
vga.h
vgtod.h x86, vdso: Add 32 bit VDSO time support for 64 bit kernel 2014-03-18 12:52:41 -07:00
virtext.h
vm86.h
vmx.h KVM: x86: Intel MPX vmx and msr handle 2014-02-24 12:14:00 +01:00
vsyscall.h
vvar.h x86, vdso: Add 32 bit VDSO time support for 64 bit kernel 2014-03-18 12:52:41 -07:00
word-at-a-time.h
x2apic.h
x86_init.h
xcr.h
xor.h
xor_32.h
xor_64.h
xor_avx.h
xsave.h Merge tag 'kvm-3.15-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2014-04-02 14:50:10 -07:00