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> |
