Skip to content

Commit 6d4e9a8

Browse files
Christoph Hellwigtsbogend
authored andcommitted
driver core: lift dma_default_coherent into common code
Lift the dma_default_coherent variable from the mips architecture code to the driver core. This allows an architecture to sdefault all device to be DMA coherent at run time, even if the kernel is build with support for DMA noncoherent device. By allowing device_initialize to set the ->dma_coherent field to this default the amount of arch hooks required for this behavior can be greatly reduced. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
1 parent 14ac09a commit 6d4e9a8

File tree

13 files changed

+14
-39
lines changed

13 files changed

+14
-39
lines changed

arch/mips/Kconfig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1163,7 +1163,6 @@ config ARCH_SUPPORTS_UPROBES
11631163
bool
11641164

11651165
config DMA_MAYBE_COHERENT
1166-
select ARCH_HAS_DMA_COHERENCE_H
11671166
select DMA_NONCOHERENT
11681167
bool
11691168

arch/mips/alchemy/common/setup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
#include <linux/init.h>
2929
#include <linux/ioport.h>
3030
#include <linux/mm.h>
31+
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
3132

32-
#include <asm/dma-coherence.h>
3333
#include <asm/mipsregs.h>
3434

3535
#include <au1000.h>

arch/mips/include/asm/dma-coherence.h

Lines changed: 0 additions & 22 deletions
This file was deleted.

arch/mips/kernel/setup.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
#include <asm/cdmm.h>
3737
#include <asm/cpu.h>
3838
#include <asm/debug.h>
39-
#include <asm/dma-coherence.h>
4039
#include <asm/sections.h>
4140
#include <asm/setup.h>
4241
#include <asm/smp-ops.h>
@@ -803,9 +802,6 @@ arch_initcall(debugfs_mips);
803802
#endif
804803

805804
#ifdef CONFIG_DMA_MAYBE_COHERENT
806-
bool dma_default_coherent;
807-
EXPORT_SYMBOL_GPL(dma_default_coherent);
808-
809805
static int __init setcoherentio(char *str)
810806
{
811807
dma_default_coherent = true;

arch/mips/mm/c-r4k.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <linux/mm.h>
2020
#include <linux/export.h>
2121
#include <linux/bitops.h>
22+
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
2223

2324
#include <asm/bcache.h>
2425
#include <asm/bootinfo.h>
@@ -35,7 +36,6 @@
3536
#include <asm/war.h>
3637
#include <asm/cacheflush.h> /* for run_uncached() */
3738
#include <asm/traps.h>
38-
#include <asm/dma-coherence.h>
3939
#include <asm/mips-cps.h>
4040

4141
/*

arch/mips/mm/dma-noncoherent.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
#include <asm/cache.h>
1212
#include <asm/cpu-type.h>
13-
#include <asm/dma-coherence.h>
1413
#include <asm/io.h>
1514

1615
/*

arch/mips/mti-malta/malta-setup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include <linux/pci.h>
1414
#include <linux/screen_info.h>
1515
#include <linux/time.h>
16+
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
1617

17-
#include <asm/dma-coherence.h>
1818
#include <asm/fw/fw.h>
1919
#include <asm/mips-cps.h>
2020
#include <asm/mips-boards/generic.h>

arch/mips/pci/pci-alchemy.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
#include <linux/init.h>
1818
#include <linux/syscore_ops.h>
1919
#include <linux/vmalloc.h>
20+
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
2021

21-
#include <asm/dma-coherence.h>
2222
#include <asm/mach-au1x00/au1000.h>
2323
#include <asm/tlbmisc.h>
2424

arch/mips/pistachio/init.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <linux/of_fdt.h>
1414

1515
#include <asm/cacheflush.h>
16-
#include <asm/dma-coherence.h>
1716
#include <asm/fw/fw.h>
1817
#include <asm/mips-boards/generic.h>
1918
#include <asm/mips-cps.h>

drivers/base/core.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <linux/sched/signal.h>
2929
#include <linux/sched/mm.h>
3030
#include <linux/sysfs.h>
31+
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
3132

3233
#include "base.h"
3334
#include "power/power.h"
@@ -2585,6 +2586,11 @@ void device_initialize(struct device *dev)
25852586
INIT_LIST_HEAD(&dev->links.suppliers);
25862587
INIT_LIST_HEAD(&dev->links.defer_sync);
25872588
dev->links.status = DL_DEV_NO_DRIVER;
2589+
#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
2590+
defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
2591+
defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
2592+
dev->dma_coherent = dma_default_coherent;
2593+
#endif
25882594
}
25892595
EXPORT_SYMBOL_GPL(device_initialize);
25902596

0 commit comments

Comments
 (0)