linux_dsm_epyc7002/arch/arc/include/asm
Eugeniy Paltsev 2820a708d5 ARC: dma [IOC] Enable per device io coherency
So far the IOC treatment was global on ARC, being turned on (or off)
for all devices in the system. With this patch, this can now be done
per device using the "dma-coherent" DT property; IOW with this patch
we can use both HW-coherent and regular DMA peripherals simultaneously.

The changes involved are too many so enlisting the summary below:

1. common code calls ARC arch_setup_dma_ops() per device.

2. For coherent dma (IOC) it plugs in generic @dma_direct_ops which
   doesn't need any arch specific backend: No need for any explicit
   cache flushes or MMU mappings to provide for uncached access

   - dma_(map|sync)_single* return early as corresponding dma ops callbacks
     are NULL in generic code.
     So arch_sync_dma_*() -> dma_cache_*() need not handle the coherent
     dma case, hence drop ARC __dma_cache_*_ioc() which were no-op anyways

3. For noncoherent dma (non IOC) generic @dma_noncoherent_ops is used
   which in turns calls ARC specific routines

   - arch_dma_alloc() no longer checks for @ioc_enable since this is
     called only for !IOC case.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
[vgupta: rewrote changelog]
2018-09-04 13:21:37 -07:00
..
arcregs.h ARCv2: boot log: updates for HS48: dual-issue, ECC, Loop Buffer 2017-11-13 14:37:39 -08:00
asm-offsets.h
atomic.h ARC: atomics: unbork atomic_fetch_##op() 2018-08-31 10:14:51 -07:00
barrier.h
bitops.h
bug.h bug.h: work around GCC PR82365 in BUG() 2018-02-21 15:35:43 -08:00
cache.h ARC: dma [non-IOC] setup SMP_CACHE_BYTES and cache_line_size 2018-07-27 13:12:45 -07:00
cacheflush.h ARC: mm: arc700: Don't assume 2 colours for aliasing VIPT dcache 2016-12-19 11:55:17 -08:00
checksum.h
cmpxchg.h
current.h
delay.h arc: fix build errors in arc/include/asm/delay.h 2018-07-30 11:48:50 -07:00
disasm.h
dma-mapping.h ARC: dma [IOC] Enable per device io coherency 2018-09-04 13:21:37 -07:00
dma.h
dwarf.h ARC: dw2 unwind: add infrastructure for adding cfi pseudo ops to asm 2016-09-30 14:48:22 -07:00
elf.h ARC: fix build warning in elf.h 2016-10-19 14:38:53 -07:00
entry-arcv2.h ARCv2: Don't pretend we may set L-bit in STATUS32 with kflag instruction 2018-01-18 10:51:26 -08:00
entry-compact.h ARC: [arcompact] entry.S: minor code movement 2018-07-09 11:25:45 -07:00
entry.h ARC: [arcompact] entry.S: minor code movement 2018-07-09 11:25:45 -07:00
exec.h
fb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
futex.h futex: Remove duplicated code and fix undefined behaviour 2017-08-25 22:49:59 +02:00
highmem.h
hugepage.h arc: use generic_pmdp_establish as pmdp_establish 2018-01-31 17:18:37 -08:00
io.h
irq.h ARCv2: intc: Use runtime value of irq count for setting up intc 2017-02-06 09:37:57 -08:00
irqflags-arcv2.h ARC: create cpu specific version of arch_cpu_idle() 2017-08-28 15:17:36 -07:00
irqflags-compact.h ARC: create cpu specific version of arch_cpu_idle() 2017-08-28 15:17:36 -07:00
irqflags.h
Kbuild Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 20:27:54 -07:00
kdebug.h
kgdb.h
kmap_types.h
kprobes.h ARC/kprobes: Remove jprobe implementation 2018-06-21 12:33:06 +02:00
linkage.h ARC: dw2 unwind: add infrastructure for adding cfi pseudo ops to asm 2016-09-30 14:48:22 -07:00
mach_desc.h ARC: Enable machine_desc->init_per_cpu for !CONFIG_SMP 2018-06-20 16:12:06 -07:00
mmu_context.h sched/headers: Prepare for new header dependencies before moving code to <linux/sched/mm.h> 2017-03-02 08:42:28 +01:00
mmu.h ARCv2: PAE40: set MSB even if !CONFIG_ARC_HAS_PAE40 but PAE exists in SoC 2017-08-04 13:56:35 +05:30
mmzone.h
module.h ARC: module: Fix !CONFIG_ARC_DW2_UNWIND builds 2017-01-18 11:17:44 -08:00
page.h ARC: mm: allow mprotect to make stack mappings executable 2018-07-11 11:03:06 -07:00
pci.h PCI: remove PCI_DMA_BUS_IS_PHYS 2018-05-07 07:15:41 +02:00
perf_event.h arc: perf: Enable generic "cache-references" and "cache-misses" events 2016-09-30 14:48:18 -07:00
pgalloc.h
pgtable.h ARC fixes for 4.18-rc6 2018-07-20 11:33:22 -07:00
processor.h arch: remove unused *_segments() macros/functions 2017-09-22 12:59:52 -10:00
ptrace.h ARC: [plat-eznps] handle extra aux regs #2: kernel/entry exit 2017-08-28 15:17:36 -07:00
sections.h
segment.h
serial.h
setup.h ARCv2: IOC: Use actual memory size to setup aperture size 2017-01-18 14:52:43 -08:00
shmparam.h
smp.h ARC: IRQ: Do not use hwirq as virq and vice versa 2016-11-08 12:05:10 -08:00
spinlock_types.h
spinlock.h locking/arch: Remove dummy arch_{read,spin,write}_lock_flags() implementations 2017-10-10 11:50:19 +02:00
stacktrace.h
string.h
switch_to.h ARC: [plat-eznps] handle extra aux regs #1: save/restore on context switch 2017-08-28 15:17:36 -07:00
syscall.h
syscalls.h ARC: syscall for userspace cmpxchg assist 2016-10-24 09:24:26 -07:00
thread_info.h Construct init thread stack in the linker script rather than by union 2018-01-09 23:21:02 +00:00
timex.h
tlb-mmu1.h
tlb.h
tlbflush.h
uaccess.h ARC: uaccess: dont use "l" gcc inline asm constraint modifier 2017-12-20 12:41:46 -08:00
unaligned.h
unwind.h