Skip to contentSkip to conversation

Removal of dma_cache_* functions?

PATCH In review Ralf Baechle 8 participants 14 messages Sep 4, 2007 – Sep 11, 2007

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

Most architectures implement the dma_cache_wback, dma_cache_wback_inv and dma_cache_wback_inv functions even though there is the more modern and much better designed DMA API and only two MIPS-specific users (one of which I just fixed) do remain. So should we finally start removing it?

Ralf

#1 lore raw
Quoted 4 lines · Ralf Baechle

Most architectures implement the dma_cache_wback, dma_cache_wback_inv and dma_cache_wback_inv functions even though there is the more modern and much better designed DMA API and only two MIPS-specific users (one of which I just fixed) do remain. So should we finally start removing it?

There's still some users in arch/, but yes, let's remove it from the arches that don't use it internally.

Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
#2 lore raw
Quoted 8 lines · Matthew Wilcox
Quoted 4 lines · Ralf Baechle

Most architectures implement the dma_cache_wback, dma_cache_wback_inv and dma_cache_wback_inv functions even though there is the more modern and much better designed DMA API and only two MIPS-specific users (one of which I just fixed) do remain. So should we finally start removing it?

There's still some users in arch/, but yes, let's remove it from the arches that don't use it internally.

There's the updated dma_cache_sync() API, which you need to keep because the parisc lasi scsi and network drivers rely on it for our fully incoherent boxes.

James

#3 lore raw
Quoted 7 lines · James Bottomley
Quoted 6 lines · Matthew Wilcox
Quoted 4 lines · Ralf Baechle

Most architectures implement the dma_cache_wback, dma_cache_wback_inv and dma_cache_wback_inv functions even though there is the more modern and much better designed DMA API and only two MIPS-specific users (one of which I just fixed) do remain. So should we finally start removing it?

Quoted 6 lines
Quoted 2 lines

There's still some users in arch/, but yes, let's remove it from the arches that don't use it internally.

There's the updated dma_cache_sync() API, which you need to keep because the parisc lasi scsi and network drivers rely on it for our fully incoherent boxes.

I wasn't thinking of touching dma_cache_sync, only the three mentioned mostly unused ones.

Ralf

#4 lore raw
Quoted 2 lines · Ralf Baechle

I wasn't thinking of touching dma_cache_sync, only the three mentioned mostly unused ones.

OK, I suspected not but your subject line:

Removal of dma_cache_* functions?

Worried me in that regard.

Jaems

#5 lore raw
In reply to Ralf Baechle
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Ralf" == Ralf Baechle <[email protected]> writes:

Quoted 8 lines · James Bottomley
Quoted 8 lines · Matthew Wilcox
Quoted 2 lines · Ralf Baechle
Quoted 1 line

Most architectures implement the dma_cache_wback,

dma_cache_wback_inv > > and dma_cache_wback_inv functions even though there is the more modern > > and much better designed DMA API and only two MIPS-specific users (one of > > which I just fixed) do remain. So should we finally start removing it?

Quoted 1 line
Quoted 6 lines
Quoted 6 lines
Quoted 1 line

There's still some users in arch/, but yes, let's remove it from

the > arches that don't use it internally.

There's the updated dma_cache_sync() API, which you need to keep because the parisc lasi scsi and network drivers rely on it for our fully incoherent boxes.

Ralf> I wasn't thinking of touching dma_cache_sync, only the three Ralf> mentioned mostly unused ones.

Ralf,

Only issue I could think off would be the m68k drivers, but I don't know if that ever migrated to the MIPS API or stayed with the old m68k one - Geert and comments?

Cheers,
Jes

#6 lore raw
Quoted 3 lines · Jes Sorensen

Only issue I could think off would be the m68k drivers, but I don't know if that ever migrated to the MIPS API or stayed with the old m68k one - Geert and comments?

That would only apply to out of tree drivers. With the patch applied git grep -E -w -l 'dma_cache_(wback|wback_inv|inv)' only finds:

arch/mips/au1000/common/dbdma.c
arch/mips/jazz/jazzdma.c
arch/mips/mm/dma-default.c
drivers/net/sgiseeq.c
drivers/scsi/dec_esp.c
include/asm-mips/floppy.h
include/asm-mips/io.h

For sgiseeq there already is a patch in flight.

Ralf

#7 lore raw
In reply to James Bottomley
Quoted 7 lines · James Bottomley
Quoted 6 lines · Matthew Wilcox
Quoted 4 lines · Ralf Baechle

Most architectures implement the dma_cache_wback, dma_cache_wback_inv and dma_cache_wback_inv functions even though there is the more modern and much better designed DMA API and only two MIPS-specific users (one of which I just fixed) do remain. So should we finally start removing it?

Quoted 6 lines
Quoted 2 lines

There's still some users in arch/, but yes, let's remove it from the arches that don't use it internally.

There's the updated dma_cache_sync() API, which you need to keep because the parisc lasi scsi and network drivers rely on it for our fully incoherent boxes.

Sure -- I was just talking about the three functions Ralf mentioned. BTW, Ralf, I found six MIPS users:

./arch/mips/au1000/common/dbdma.c: dma_cache_wback_inv((unsigned long)buf, nbytes);
./arch/mips/jazz/jazzdma.c: dma_cache_wback_inv(vdma_pagetable_start, VDMA_PGTBL_SIZE); ./arch/mips/mm/dma-default.c: dma_cache_wback_inv((unsigned long) ret, size);

./drivers/net/sgiseeq.c:        dma_cache_wback_inv((unsigned long)&sp->srings->rxvector,
./drivers/scsi/dec_esp.c:       dma_cache_wback_inv((unsigned long) phys_to_virt(vaddress), length);
./include/asm-mips/floppy.h:    dma_cache_wback_inv((unsigned long)addr,size);
Signature · 4 lines
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
#8 lore raw
Quoted 8 lines · Matthew Wilcox

BTW, Ralf, I found six MIPS users:

./arch/mips/au1000/common/dbdma.c: dma_cache_wback_inv((unsigned long)buf, nbytes);
./arch/mips/jazz/jazzdma.c: dma_cache_wback_inv(vdma_pagetable_start, VDMA_PGTBL_SIZE); ./arch/mips/mm/dma-default.c: dma_cache_wback_inv((unsigned long) ret, size);

./drivers/net/sgiseeq.c:        dma_cache_wback_inv((unsigned long)&sp->srings->rxvector,
./drivers/scsi/dec_esp.c:       dma_cache_wback_inv((unsigned long) phys_to_virt(vaddress), length);
./include/asm-mips/floppy.h:    dma_cache_wback_inv((unsigned long)addr,size);

arch/mips/mm/dma-default.c is the implementation of the DMA API as documented in the kernel; it needs to bang on the caches for non-coherent I/O so will have to continue using the old functions though I may change the function names. sgiseeq I already fixed, the rest is being fixed once as I'm writing this.

Ralf

#9 lore raw

PATCH 1/1 Removal of dma_cache_(wback|inv|wback_inv) functions

In reply to Matthew Wilcox

So this is looking ok? I got an ACK from Paul Mundt for SH.

 arch/avr32/mm/dma-coherent.c        |    6 ++--
 arch/mips/mm/cache.c                |    2 -
 arch/sh/drivers/pci/dma-dreamcast.c |    2 +
 arch/sh/mm/consistent.c             |    8 +++---
 arch/sh64/kernel/pci-dma.c          |    3 +-
 include/asm-alpha/io.h              |    6 ----
 include/asm-avr32/io.h              |    7 -----
 include/asm-blackfin/io.h           |    4 ---
 include/asm-h8300/io.h              |    6 ----
 include/asm-i386/io.h               |   11 +-------
 include/asm-ia64/io.h               |    4 ---
 include/asm-m68k/io.h               |    6 ----
 include/asm-m68knommu/io.h          |    6 ----
 include/asm-mips/io.h               |    2 +
 include/asm-parisc/io.h             |    5 ----
 include/asm-powerpc/io.h            |   17 ------------
 include/asm-ppc/io.h                |   17 ------------
 include/asm-sh/floppy.h             |    2 +
 include/asm-sh/io.h                 |   25 ------------------
 include/asm-sh64/dma-mapping.h      |    6 ++++
 include/asm-sh64/io.h               |   48 -----------------------------------
 include/asm-sparc/io.h              |    7 -----
 include/asm-sparc64/io.h            |    6 ----
 include/asm-x86_64/io.h             |    6 ----
 24 files changed, 19 insertions(+), 193 deletions(-)
arch/avr32/mm/dma-coherent.c +3 -3
index 099212d..177fea8 100644
@@ -21,13 +21,13 @@ void dma_cache_sync(struct device *dev, void *vaddr, size_t size, int direction)
 
 	switch (direction) {
 	case DMA_FROM_DEVICE:		/* invalidate only */
-		dma_cache_inv(vaddr, size);
+		invalidate_dcache_region(vaddr, size);
 		break;
 	case DMA_TO_DEVICE:		/* writeback only */
-		dma_cache_wback(vaddr, size);
+		clean_dcache_region(vaddr, size);
 		break;
 	case DMA_BIDIRECTIONAL:		/* writeback and invalidate */
-		dma_cache_wback_inv(vaddr, size);
+		flush_dcache_region(vaddr, size);
 		break;
 	default:
 		BUG();
arch/mips/mm/cache.c +0 -2
index 81f925a..49d4646 100644
@@ -46,8 +46,6 @@ void (*_dma_cache_wback)(unsigned long start, unsigned long size);
 void (*_dma_cache_inv)(unsigned long start, unsigned long size);
 
 EXPORT_SYMBOL(_dma_cache_wback_inv);
-EXPORT_SYMBOL(_dma_cache_wback);
-EXPORT_SYMBOL(_dma_cache_inv);
 
 #endif /* CONFIG_DMA_NONCOHERENT */
 
arch/sh/drivers/pci/dma-dreamcast.c +1 -1
index 230d6ec..888a340 100644
@@ -51,7 +51,7 @@ void *dreamcast_consistent_alloc(struct device *dev, size_t size,
 	buf = P2SEGADDR(buf);
 
 	/* Flush the dcache before we hand off the buffer */
-	dma_cache_wback_inv((void *)buf, size);
+	__flush_purge_region((void *)buf, size);
 
 	return (void *)buf;
 }
arch/sh/mm/consistent.c +4 -4
index 38c82d8..e220c29 100644
@@ -34,7 +34,7 @@ void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *handle)
 	/*
 	 * We must flush the cache before we pass it on to the device
 	 */
-	dma_cache_wback_inv(ret, size);
+	__flush_purge_region(ret, size);
 
 	page = virt_to_page(ret);
 	free = page + (size >> PAGE_SHIFT);
@@ -68,13 +68,13 @@ void consistent_sync(void *vaddr, size_t size, int direction)
 
 	switch (direction) {
 	case DMA_FROM_DEVICE:		/* invalidate only */
-		dma_cache_inv(p1addr, size);
+		__flush_invalidate_region(p1addr, size);
 		break;
 	case DMA_TO_DEVICE:		/* writeback only */
-		dma_cache_wback(p1addr, size);
+		__flush_wback_region(p1addr, size);
 		break;
 	case DMA_BIDIRECTIONAL:		/* writeback and invalidate */
-		dma_cache_wback_inv(p1addr, size);
+		__flush_purge_region(p1addr, size);
 		break;
 	default:
 		BUG();
arch/sh64/kernel/pci-dma.c +2 -1
index a9328f8..e3f1d32 100644
@@ -8,6 +8,7 @@
  * Dynamic DMA mapping support.
  */
 #include <linux/types.h>
+#include <linux/dma-mapping.h>
 #include <linux/mm.h>
 #include <linux/string.h>
 #include <linux/pci.h>
@@ -31,7 +32,7 @@ void *consistent_alloc(struct pci_dev *hwdev, size_t size,
 	if (vp != NULL) {
 		memset(vp, 0, size);
 		*dma_handle = virt_to_phys(ret);
-		dma_cache_wback_inv((unsigned long)ret, size);
+		dma_cache_sync(NULL, ret, size, DMA_BIDIRECTIONAL);
 	}
 
 	return vp;
include/asm-alpha/io.h +0 -6
index ab5b60d..38f18cf 100644
@@ -551,12 +551,6 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
 #endif
 #define RTC_ALWAYS_BCD	0
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 /*
  * Some mucking forons use if[n]def writeq to check if platform has it.
  * It's a bloody bad idea and we probably want ARCH_HAS_WRITEQ for them
include/asm-avr32/io.h +0 -7
index 64bb92b..8be7ea9 100644
@@ -298,13 +298,6 @@ extern void __iounmap(void __iomem *addr);
 #define ioport_map(port, nr)	ioremap(port, nr)
 #define ioport_unmap(port)	iounmap(port)
 
-#define dma_cache_wback_inv(_start, _size)	\
-	flush_dcache_region(_start, _size)
-#define dma_cache_inv(_start, _size)		\
-	invalidate_dcache_region(_start, _size)
-#define dma_cache_wback(_start, _size)		\
-	clean_dcache_region(_start, _size)
-
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
include/asm-blackfin/io.h +0 -4
index 142cb33..818d949 100644
@@ -183,10 +183,6 @@ extern void blkfin_inv_cache_all(void);
 #define	ioport_map(port, nr)		((void __iomem*)(port))
 #define	ioport_unmap(addr)
 
-#define dma_cache_inv(_start,_size) do { blkfin_inv_cache_all();} while (0)
-#define dma_cache_wback(_start,_size) do { } while (0)
-#define dma_cache_wback_inv(_start,_size) do { blkfin_inv_cache_all();} while (0)
-
 /* Pages to physical address... */
 #define page_to_phys(page)      ((page - mem_map) << PAGE_SHIFT)
 #define page_to_bus(page)       ((page - mem_map) << PAGE_SHIFT)
include/asm-h8300/io.h +0 -6
index 91b7487..7543a57 100644
@@ -264,12 +264,6 @@ static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size
 
 extern void iounmap(void *addr);
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 /* H8/300 internal I/O functions */
 static __inline__ unsigned char ctrl_inb(unsigned long addr)
 {
include/asm-i386/io.h +1 -10
index e8e0bd6..4ea7b1a 100644
@@ -237,18 +237,9 @@ static inline void flush_write_buffers(void)
 	__asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory");
 }
 
-#define dma_cache_inv(_start,_size)		flush_write_buffers()
-#define dma_cache_wback(_start,_size)		flush_write_buffers()
-#define dma_cache_wback_inv(_start,_size)	flush_write_buffers()
-
 #else
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-#define flush_write_buffers()
+#define flush_write_buffers() do { } while (0)
 
 #endif
 
include/asm-ia64/io.h +0 -4
index eb17a86..4ebed77 100644
@@ -435,10 +435,6 @@ extern void memcpy_fromio(void *dst, const volatile void __iomem *src, long n);
 extern void memcpy_toio(volatile void __iomem *dst, const void *src, long n);
 extern void memset_io(volatile void __iomem *s, int c, long n);
 
-#define dma_cache_inv(_start,_size)             do { } while (0)
-#define dma_cache_wback(_start,_size)           do { } while (0)
-#define dma_cache_wback_inv(_start,_size)       do { } while (0)
-
 # endif /* __KERNEL__ */
 
 /*
include/asm-m68k/io.h +0 -6
index 47bb9cf..baf4f9b 100644
@@ -384,12 +384,6 @@ static inline void __iomem *ioremap_fullcache(unsigned long physaddr,
 	return __ioremap(physaddr, size, IOMAP_FULL_CACHING);
 }
 
-
-/* m68k caches aren't DMA coherent */
-extern void dma_cache_wback_inv(unsigned long start, unsigned long size);
-extern void dma_cache_wback(unsigned long start, unsigned long size);
-extern void dma_cache_inv(unsigned long start, unsigned long size);
-
 static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
 {
 	__builtin_memset((void __force *) addr, val, count);
include/asm-m68knommu/io.h +0 -6
index 8df4cee..653d9b2 100644
@@ -165,12 +165,6 @@ static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size
 
 extern void iounmap(void *addr);
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 /* Pages to physical address... */
 #define page_to_phys(page)      ((page - mem_map) << PAGE_SHIFT)
 #define page_to_bus(page)       ((page - mem_map) << PAGE_SHIFT)
include/asm-mips/io.h +2 -0
index 7ba9289..d79a889 100644
@@ -554,6 +554,8 @@ static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int
  *    caches.  Dirty lines of the caches may be written back or simply
  *    be discarded.  This operation is necessary before dma operations
  *    to the memory.
+ *
+ * This API used to be exported; it now is for arch code internal use only.
  */
 #ifdef CONFIG_DMA_NONCOHERENT
 
include/asm-parisc/io.h +0 -5
index 4cc9bce..95f00e1 100644
@@ -270,11 +270,6 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
 /* IO Port space is :      BBiiii   where BB is HBA number. */
 #define IO_SPACE_LIMIT 0x00ffffff
 
-
-#define dma_cache_inv(_start,_size)		do { flush_kernel_dcache_range(_start,_size); } while (0)
-#define dma_cache_wback(_start,_size)		do { flush_kernel_dcache_range(_start,_size); } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { flush_kernel_dcache_range(_start,_size); } while (0)
-
 /* PA machines have an MM I/O space from 0xf0000000-0xffffffff in 32
  * bit mode and from 0xfffffffff0000000-0xfffffffffffffff in 64 bit
  * mode (essentially just sign extending.  This macro takes in a 32
include/asm-powerpc/io.h +0 -17
index bb8d965..a59028a 100644
@@ -498,23 +498,6 @@ static inline void name at					\
 #define writeq	writeq
 #endif
 
-#ifdef CONFIG_NOT_COHERENT_CACHE
-
-#define dma_cache_inv(_start,_size) \
-	invalidate_dcache_range(_start, (_start + _size))
-#define dma_cache_wback(_start,_size) \
-	clean_dcache_range(_start, (_start + _size))
-#define dma_cache_wback_inv(_start,_size) \
-	flush_dcache_range(_start, (_start + _size))
-
-#else /* CONFIG_NOT_COHERENT_CACHE */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
-#endif /* !CONFIG_NOT_COHERENT_CACHE */
-
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
include/asm-ppc/io.h +0 -17
index 95d5904..de083df 100644
@@ -518,23 +518,6 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
 #include <asm/mpc8260_pci9.h>
 #endif
 
-#ifdef CONFIG_NOT_COHERENT_CACHE
-
-#define dma_cache_inv(_start,_size) \
-	invalidate_dcache_range(_start, (_start + _size))
-#define dma_cache_wback(_start,_size) \
-	clean_dcache_range(_start, (_start + _size))
-#define dma_cache_wback_inv(_start,_size) \
-	flush_dcache_range(_start, (_start + _size))
-
-#else
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
-#endif
-
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
include/asm-sh/floppy.h +1 -1
index 3b59b3a..c52309f 100644
@@ -213,7 +213,7 @@ static int hard_dma_setup(char *addr, unsigned long size, int mode, int io)
 	}
 #endif
 
-	dma_cache_wback_inv(addr, size);
+	__flush_purge_region(addr, size);
 
 	/* actual, physical DMA */
 	doing_pdma = 0;
include/asm-sh/io.h +0 -25
index e6a1877..cc7821f 100644
@@ -301,31 +301,6 @@ __ioremap_mode(unsigned long offset, unsigned long size, unsigned long flags)
 	__iounmap((addr))
 
 /*
- * The caches on some architectures aren't dma-coherent and have need to
- * handle this in software.  There are three types of operations that
- * can be applied to dma buffers.
- *
- *  - dma_cache_wback_inv(start, size) makes caches and RAM coherent by
- *    writing the content of the caches back to memory, if necessary.
- *    The function also invalidates the affected part of the caches as
- *    necessary before DMA transfers from outside to memory.
- *  - dma_cache_inv(start, size) invalidates the affected parts of the
- *    caches.  Dirty lines of the caches may be written back or simply
- *    be discarded.  This operation is necessary before dma operations
- *    to the memory.
- *  - dma_cache_wback(start, size) writes back any dirty lines but does
- *    not invalidate the cache.  This can be used before DMA reads from
- *    memory,
- */
-
-#define dma_cache_wback_inv(_start,_size) \
-    __flush_purge_region(_start,_size)
-#define dma_cache_inv(_start,_size) \
-    __flush_invalidate_region(_start,_size)
-#define dma_cache_wback(_start,_size) \
-    __flush_wback_region(_start,_size)
-
-/*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
  */
include/asm-sh64/dma-mapping.h +5 -1
index de43099..e661857 100644
@@ -42,7 +42,11 @@ static inline void dma_free_coherent(struct device *dev, size_t size,
 static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
 				  enum dma_data_direction dir)
 {
-	dma_cache_wback_inv((unsigned long)vaddr, size);
+	unsigned long s = (unsigned long) vaddr & L1_CACHE_ALIGN_MASK;
+	unsigned long e = (vaddr + size) & L1_CACHE_ALIGN_MASK;
+
+	for (; s <= e; s += L1_CACHE_BYTES)
+		asm volatile ("ocbp	%0, 0" : : "r" (s));
 }
 
 static inline dma_addr_t dma_map_single(struct device *dev,
include/asm-sh64/io.h +0 -48

54 lines not on this page · raw message

include/asm-sparc/io.h +0 -7
index c23e74a..243bf8e 100644
@@ -310,13 +310,6 @@ extern void sbus_iounmap(volatile void __iomem *vaddr, unsigned long size);
 #define RTC_PORT(x)   (rtc_port + (x))
 #define RTC_ALWAYS_BCD  0
 
-/* Nothing to do */
-/* P3: Only IDE DMA may need these. XXX Verify that it still does... */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 #endif
 
 #define __ARCH_HAS_NO_PAGE_ZERO_MAPPED		1
include/asm-sparc64/io.h +0 -6
index 9565a89..cd7ef30 100644
@@ -474,12 +474,6 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
 #define sbus_iounmap(__addr, __size)	\
 	release_region((unsigned long)(__addr), (__size))
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
include/asm-x86_64/io.h +0 -6
index 7475095..a037b07 100644
@@ -249,12 +249,6 @@ void memset_io(volatile void __iomem *a, int b, size_t c);
  */
 #define __ISA_IO_base ((char __iomem *)(PAGE_OFFSET))
 
-/* Nothing to do */
-
-#define dma_cache_inv(_start,_size)		do { } while (0)
-#define dma_cache_wback(_start,_size)		do { } while (0)
-#define dma_cache_wback_inv(_start,_size)	do { } while (0)
-
 #define flush_write_buffers() 
 
 extern int iommu_bio_merge;