diff options
-rw-r--r-- | drivers/md/kcopyd.c | 1 | ||||
-rw-r--r-- | fs/nfsctl.c | 1 | ||||
-rw-r--r-- | include/asm-i386/atomic.h | 12 | ||||
-rw-r--r-- | include/asm-x86_64/atomic.h | 12 | ||||
-rw-r--r-- | kernel/audit.c | 2 | ||||
-rw-r--r-- | kernel/auditsc.c | 2 | ||||
-rw-r--r-- | net/ipv4/raw.c | 2 |
7 files changed, 29 insertions, 3 deletions
diff --git a/drivers/md/kcopyd.c b/drivers/md/kcopyd.c index ca99979c868a..8b3515f394a6 100644 --- a/drivers/md/kcopyd.c +++ b/drivers/md/kcopyd.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * completion notification. | 8 | * completion notification. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <asm/types.h> | ||
11 | #include <asm/atomic.h> | 12 | #include <asm/atomic.h> |
12 | 13 | ||
13 | #include <linux/blkdev.h> | 14 | #include <linux/blkdev.h> |
diff --git a/fs/nfsctl.c b/fs/nfsctl.c index 0b14938b5b62..0d4cf9486068 100644 --- a/fs/nfsctl.c +++ b/fs/nfsctl.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * | 5 | * |
6 | */ | 6 | */ |
7 | #include <linux/config.h> | 7 | #include <linux/config.h> |
8 | #include <linux/types.h> | ||
8 | #include <linux/file.h> | 9 | #include <linux/file.h> |
9 | #include <linux/fs.h> | 10 | #include <linux/fs.h> |
10 | #include <linux/sunrpc/svc.h> | 11 | #include <linux/sunrpc/svc.h> |
diff --git a/include/asm-i386/atomic.h b/include/asm-i386/atomic.h index de649d3aa2d4..e2c00c95a5e1 100644 --- a/include/asm-i386/atomic.h +++ b/include/asm-i386/atomic.h | |||
@@ -255,5 +255,17 @@ __asm__ __volatile__(LOCK "orl %0,%1" \ | |||
255 | #define smp_mb__before_atomic_inc() barrier() | 255 | #define smp_mb__before_atomic_inc() barrier() |
256 | #define smp_mb__after_atomic_inc() barrier() | 256 | #define smp_mb__after_atomic_inc() barrier() |
257 | 257 | ||
258 | /* ECC atomic, DMA, SMP and interrupt safe scrub function */ | ||
259 | |||
260 | static __inline__ void atomic_scrub(unsigned long *virt_addr, u32 size) | ||
261 | { | ||
262 | u32 i; | ||
263 | for (i = 0; i < size / 4; i++, virt_addr++) | ||
264 | /* Very carefully read and write to memory atomically | ||
265 | * so we are interrupt, DMA and SMP safe. | ||
266 | */ | ||
267 | __asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr)); | ||
268 | } | ||
269 | |||
258 | #include <asm-generic/atomic.h> | 270 | #include <asm-generic/atomic.h> |
259 | #endif | 271 | #endif |
diff --git a/include/asm-x86_64/atomic.h b/include/asm-x86_64/atomic.h index 4b5cd553e772..4048508c4f40 100644 --- a/include/asm-x86_64/atomic.h +++ b/include/asm-x86_64/atomic.h | |||
@@ -426,5 +426,17 @@ __asm__ __volatile__(LOCK "orl %0,%1" \ | |||
426 | #define smp_mb__before_atomic_inc() barrier() | 426 | #define smp_mb__before_atomic_inc() barrier() |
427 | #define smp_mb__after_atomic_inc() barrier() | 427 | #define smp_mb__after_atomic_inc() barrier() |
428 | 428 | ||
429 | /* ECC atomic, DMA, SMP and interrupt safe scrub function */ | ||
430 | |||
431 | static __inline__ void atomic_scrub(u32 *virt_addr, u32 size) | ||
432 | { | ||
433 | u32 i; | ||
434 | for (i = 0; i < size / 4; i++, virt_addr++) | ||
435 | /* Very carefully read and write to memory atomically | ||
436 | * so we are interrupt, DMA and SMP safe. | ||
437 | */ | ||
438 | __asm__ __volatile__("lock; addl $0, %0"::"m"(*virt_addr)); | ||
439 | } | ||
440 | |||
429 | #include <asm-generic/atomic.h> | 441 | #include <asm-generic/atomic.h> |
430 | #endif | 442 | #endif |
diff --git a/kernel/audit.c b/kernel/audit.c index d13ab7d2d899..0a813d2883e5 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -42,8 +42,8 @@ | |||
42 | */ | 42 | */ |
43 | 43 | ||
44 | #include <linux/init.h> | 44 | #include <linux/init.h> |
45 | #include <asm/atomic.h> | ||
46 | #include <asm/types.h> | 45 | #include <asm/types.h> |
46 | #include <asm/atomic.h> | ||
47 | #include <linux/mm.h> | 47 | #include <linux/mm.h> |
48 | #include <linux/module.h> | 48 | #include <linux/module.h> |
49 | #include <linux/err.h> | 49 | #include <linux/err.h> |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index d8a68509e729..685c25175d96 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -30,8 +30,8 @@ | |||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <linux/init.h> | 32 | #include <linux/init.h> |
33 | #include <asm/atomic.h> | ||
34 | #include <asm/types.h> | 33 | #include <asm/types.h> |
34 | #include <asm/atomic.h> | ||
35 | #include <linux/mm.h> | 35 | #include <linux/mm.h> |
36 | #include <linux/module.h> | 36 | #include <linux/module.h> |
37 | #include <linux/mount.h> | 37 | #include <linux/mount.h> |
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 165a4d81efa4..f29a12da5109 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
@@ -40,12 +40,12 @@ | |||
40 | */ | 40 | */ |
41 | 41 | ||
42 | #include <linux/config.h> | 42 | #include <linux/config.h> |
43 | #include <linux/types.h> | ||
43 | #include <asm/atomic.h> | 44 | #include <asm/atomic.h> |
44 | #include <asm/byteorder.h> | 45 | #include <asm/byteorder.h> |
45 | #include <asm/current.h> | 46 | #include <asm/current.h> |
46 | #include <asm/uaccess.h> | 47 | #include <asm/uaccess.h> |
47 | #include <asm/ioctls.h> | 48 | #include <asm/ioctls.h> |
48 | #include <linux/types.h> | ||
49 | #include <linux/stddef.h> | 49 | #include <linux/stddef.h> |
50 | #include <linux/slab.h> | 50 | #include <linux/slab.h> |
51 | #include <linux/errno.h> | 51 | #include <linux/errno.h> |