diff options
Diffstat (limited to 'include')
133 files changed, 1768 insertions, 2056 deletions
diff --git a/include/asm-alpha/atomic.h b/include/asm-alpha/atomic.h index 6183eab006d4..cb03bbe92cdf 100644 --- a/include/asm-alpha/atomic.h +++ b/include/asm-alpha/atomic.h | |||
@@ -216,4 +216,5 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v) | |||
216 | #define smp_mb__before_atomic_inc() smp_mb() | 216 | #define smp_mb__before_atomic_inc() smp_mb() |
217 | #define smp_mb__after_atomic_inc() smp_mb() | 217 | #define smp_mb__after_atomic_inc() smp_mb() |
218 | 218 | ||
219 | #include <asm-generic/atomic.h> | ||
219 | #endif /* _ALPHA_ATOMIC_H */ | 220 | #endif /* _ALPHA_ATOMIC_H */ |
diff --git a/include/asm-alpha/dma-mapping.h b/include/asm-alpha/dma-mapping.h index 680f7ecbb28f..9dc7256cf979 100644 --- a/include/asm-alpha/dma-mapping.h +++ b/include/asm-alpha/dma-mapping.h | |||
@@ -16,7 +16,7 @@ | |||
16 | #define dma_free_coherent(dev, size, va, addr) \ | 16 | #define dma_free_coherent(dev, size, va, addr) \ |
17 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) | 17 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) |
18 | #define dma_map_page(dev, page, off, size, dir) \ | 18 | #define dma_map_page(dev, page, off, size, dir) \ |
19 | pci_map_single(alpha_gendev_to_pci(dev), page, off, size, dir) | 19 | pci_map_page(alpha_gendev_to_pci(dev), page, off, size, dir) |
20 | #define dma_unmap_page(dev, addr, size, dir) \ | 20 | #define dma_unmap_page(dev, addr, size, dir) \ |
21 | pci_unmap_page(alpha_gendev_to_pci(dev), addr, size, dir) | 21 | pci_unmap_page(alpha_gendev_to_pci(dev), addr, size, dir) |
22 | #define dma_map_sg(dev, sg, nents, dir) \ | 22 | #define dma_map_sg(dev, sg, nents, dir) \ |
diff --git a/include/asm-alpha/hardirq.h b/include/asm-alpha/hardirq.h index c0593f9b21e1..7bb6a36c96a1 100644 --- a/include/asm-alpha/hardirq.h +++ b/include/asm-alpha/hardirq.h | |||
@@ -13,6 +13,8 @@ typedef struct { | |||
13 | 13 | ||
14 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | 14 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ |
15 | 15 | ||
16 | void ack_bad_irq(unsigned int irq); | ||
17 | |||
16 | #define HARDIRQ_BITS 12 | 18 | #define HARDIRQ_BITS 12 |
17 | 19 | ||
18 | /* | 20 | /* |
diff --git a/include/asm-alpha/mman.h b/include/asm-alpha/mman.h index eb9c279045ef..f6439532a262 100644 --- a/include/asm-alpha/mman.h +++ b/include/asm-alpha/mman.h | |||
@@ -42,6 +42,7 @@ | |||
42 | #define MADV_WILLNEED 3 /* will need these pages */ | 42 | #define MADV_WILLNEED 3 /* will need these pages */ |
43 | #define MADV_SPACEAVAIL 5 /* ensure resources are available */ | 43 | #define MADV_SPACEAVAIL 5 /* ensure resources are available */ |
44 | #define MADV_DONTNEED 6 /* don't need these pages */ | 44 | #define MADV_DONTNEED 6 /* don't need these pages */ |
45 | #define MADV_REMOVE 7 /* remove these pages & resources */ | ||
45 | 46 | ||
46 | /* compatibility flags */ | 47 | /* compatibility flags */ |
47 | #define MAP_ANON MAP_ANONYMOUS | 48 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h index d586f65c8228..f72b63309bc5 100644 --- a/include/asm-arm/atomic.h +++ b/include/asm-arm/atomic.h | |||
@@ -205,5 +205,6 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
205 | #define smp_mb__before_atomic_inc() barrier() | 205 | #define smp_mb__before_atomic_inc() barrier() |
206 | #define smp_mb__after_atomic_inc() barrier() | 206 | #define smp_mb__after_atomic_inc() barrier() |
207 | 207 | ||
208 | #include <asm-generic/atomic.h> | ||
208 | #endif | 209 | #endif |
209 | #endif | 210 | #endif |
diff --git a/include/asm-arm/mman.h b/include/asm-arm/mman.h index 8e4f69c4fa5f..f0bebca2ac21 100644 --- a/include/asm-arm/mman.h +++ b/include/asm-arm/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-arm26/atomic.h b/include/asm-arm26/atomic.h index a47cadc59686..3074b0e76343 100644 --- a/include/asm-arm26/atomic.h +++ b/include/asm-arm26/atomic.h | |||
@@ -118,5 +118,6 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr) | |||
118 | #define smp_mb__before_atomic_inc() barrier() | 118 | #define smp_mb__before_atomic_inc() barrier() |
119 | #define smp_mb__after_atomic_inc() barrier() | 119 | #define smp_mb__after_atomic_inc() barrier() |
120 | 120 | ||
121 | #include <asm-generic/atomic.h> | ||
121 | #endif | 122 | #endif |
122 | #endif | 123 | #endif |
diff --git a/include/asm-arm26/mman.h b/include/asm-arm26/mman.h index cc27b8240265..0ed7780541fa 100644 --- a/include/asm-arm26/mman.h +++ b/include/asm-arm26/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-cris/atomic.h b/include/asm-cris/atomic.h index 683b05a57d88..2df2c7aa19b7 100644 --- a/include/asm-cris/atomic.h +++ b/include/asm-cris/atomic.h | |||
@@ -156,4 +156,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
156 | #define smp_mb__before_atomic_inc() barrier() | 156 | #define smp_mb__before_atomic_inc() barrier() |
157 | #define smp_mb__after_atomic_inc() barrier() | 157 | #define smp_mb__after_atomic_inc() barrier() |
158 | 158 | ||
159 | #include <asm-generic/atomic.h> | ||
159 | #endif | 160 | #endif |
diff --git a/include/asm-cris/mman.h b/include/asm-cris/mman.h index 8570e72b9502..5a382b8bf3f7 100644 --- a/include/asm-cris/mman.h +++ b/include/asm-cris/mman.h | |||
@@ -37,6 +37,7 @@ | |||
37 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 37 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
39 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 39 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
40 | 41 | ||
41 | /* compatibility flags */ | 42 | /* compatibility flags */ |
42 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-frv/atomic.h b/include/asm-frv/atomic.h index f6539ff569c5..3f54fea2b051 100644 --- a/include/asm-frv/atomic.h +++ b/include/asm-frv/atomic.h | |||
@@ -426,4 +426,5 @@ extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new); | |||
426 | }) | 426 | }) |
427 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) | 427 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) |
428 | 428 | ||
429 | #include <asm-generic/atomic.h> | ||
429 | #endif /* _ASM_ATOMIC_H */ | 430 | #endif /* _ASM_ATOMIC_H */ |
diff --git a/include/asm-frv/futex.h b/include/asm-frv/futex.h index 9feff4ce1424..fca9d90e32c9 100644 --- a/include/asm-frv/futex.h +++ b/include/asm-frv/futex.h | |||
@@ -7,47 +7,7 @@ | |||
7 | #include <asm/errno.h> | 7 | #include <asm/errno.h> |
8 | #include <asm/uaccess.h> | 8 | #include <asm/uaccess.h> |
9 | 9 | ||
10 | static inline int | 10 | extern int futex_atomic_op_inuser(int encoded_op, int __user *uaddr); |
11 | futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | ||
12 | { | ||
13 | int op = (encoded_op >> 28) & 7; | ||
14 | int cmp = (encoded_op >> 24) & 15; | ||
15 | int oparg = (encoded_op << 8) >> 20; | ||
16 | int cmparg = (encoded_op << 20) >> 20; | ||
17 | int oldval = 0, ret; | ||
18 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
19 | oparg = 1 << oparg; | ||
20 | |||
21 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | ||
22 | return -EFAULT; | ||
23 | |||
24 | inc_preempt_count(); | ||
25 | |||
26 | switch (op) { | ||
27 | case FUTEX_OP_SET: | ||
28 | case FUTEX_OP_ADD: | ||
29 | case FUTEX_OP_OR: | ||
30 | case FUTEX_OP_ANDN: | ||
31 | case FUTEX_OP_XOR: | ||
32 | default: | ||
33 | ret = -ENOSYS; | ||
34 | } | ||
35 | |||
36 | dec_preempt_count(); | ||
37 | |||
38 | if (!ret) { | ||
39 | switch (cmp) { | ||
40 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
41 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
42 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
43 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
44 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
45 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
46 | default: ret = -ENOSYS; | ||
47 | } | ||
48 | } | ||
49 | return ret; | ||
50 | } | ||
51 | 11 | ||
52 | #endif | 12 | #endif |
53 | #endif | 13 | #endif |
diff --git a/include/asm-frv/mman.h b/include/asm-frv/mman.h index c684720dfbdd..8af4a41c255e 100644 --- a/include/asm-frv/mman.h +++ b/include/asm-frv/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-frv/signal.h b/include/asm-frv/signal.h index d407bde57eca..67366894780f 100644 --- a/include/asm-frv/signal.h +++ b/include/asm-frv/signal.h | |||
@@ -151,7 +151,6 @@ typedef struct sigaltstack { | |||
151 | size_t ss_size; | 151 | size_t ss_size; |
152 | } stack_t; | 152 | } stack_t; |
153 | 153 | ||
154 | extern int do_signal(struct pt_regs *regs, sigset_t *oldset); | ||
155 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) | 154 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) |
156 | 155 | ||
157 | #ifdef __KERNEL__ | 156 | #ifdef __KERNEL__ |
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h new file mode 100644 index 000000000000..e0a28b925ef0 --- /dev/null +++ b/include/asm-generic/atomic.h | |||
@@ -0,0 +1,116 @@ | |||
1 | #ifndef _ASM_GENERIC_ATOMIC_H | ||
2 | #define _ASM_GENERIC_ATOMIC_H | ||
3 | /* | ||
4 | * Copyright (C) 2005 Silicon Graphics, Inc. | ||
5 | * Christoph Lameter <clameter@sgi.com> | ||
6 | * | ||
7 | * Allows to provide arch independent atomic definitions without the need to | ||
8 | * edit all arch specific atomic.h files. | ||
9 | */ | ||
10 | |||
11 | |||
12 | /* | ||
13 | * Suppport for atomic_long_t | ||
14 | * | ||
15 | * Casts for parameters are avoided for existing atomic functions in order to | ||
16 | * avoid issues with cast-as-lval under gcc 4.x and other limitations that the | ||
17 | * macros of a platform may have. | ||
18 | */ | ||
19 | |||
20 | #if BITS_PER_LONG == 64 | ||
21 | |||
22 | typedef atomic64_t atomic_long_t; | ||
23 | |||
24 | #define ATOMIC_LONG_INIT(i) ATOMIC64_INIT(i) | ||
25 | |||
26 | static inline long atomic_long_read(atomic_long_t *l) | ||
27 | { | ||
28 | atomic64_t *v = (atomic64_t *)l; | ||
29 | |||
30 | return (long)atomic64_read(v); | ||
31 | } | ||
32 | |||
33 | static inline void atomic_long_set(atomic_long_t *l, long i) | ||
34 | { | ||
35 | atomic64_t *v = (atomic64_t *)l; | ||
36 | |||
37 | atomic_set(v, i); | ||
38 | } | ||
39 | |||
40 | static inline void atomic_long_inc(atomic_long_t *l) | ||
41 | { | ||
42 | atomic64_t *v = (atomic64_t *)l; | ||
43 | |||
44 | atomic64_inc(v); | ||
45 | } | ||
46 | |||
47 | static inline void atomic_long_dec(atomic_long_t *l) | ||
48 | { | ||
49 | atomic64_t *v = (atomic64_t *)l; | ||
50 | |||
51 | atomic64_dec(v); | ||
52 | } | ||
53 | |||
54 | static inline void atomic_long_add(long i, atomic_long_t *l) | ||
55 | { | ||
56 | atomic64_t *v = (atomic64_t *)l; | ||
57 | |||
58 | atomic64_add(i, v); | ||
59 | } | ||
60 | |||
61 | static inline void atomic_long_sub(long i, atomic_long_t *l) | ||
62 | { | ||
63 | atomic64_t *v = (atomic64_t *)l; | ||
64 | |||
65 | atomic64_sub(i, v); | ||
66 | } | ||
67 | |||
68 | #else | ||
69 | |||
70 | typedef atomic_t atomic_long_t; | ||
71 | |||
72 | #define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i) | ||
73 | static inline long atomic_long_read(atomic_long_t *l) | ||
74 | { | ||
75 | atomic_t *v = (atomic_t *)l; | ||
76 | |||
77 | return (long)atomic_read(v); | ||
78 | } | ||
79 | |||
80 | static inline void atomic_long_set(atomic_long_t *l, long i) | ||
81 | { | ||
82 | atomic_t *v = (atomic_t *)l; | ||
83 | |||
84 | atomic_set(v, i); | ||
85 | } | ||
86 | |||
87 | static inline void atomic_long_inc(atomic_long_t *l) | ||
88 | { | ||
89 | atomic_t *v = (atomic_t *)l; | ||
90 | |||
91 | atomic_inc(v); | ||
92 | } | ||
93 | |||
94 | static inline void atomic_long_dec(atomic_long_t *l) | ||
95 | { | ||
96 | atomic_t *v = (atomic_t *)l; | ||
97 | |||
98 | atomic_dec(v); | ||
99 | } | ||
100 | |||
101 | static inline void atomic_long_add(long i, atomic_long_t *l) | ||
102 | { | ||
103 | atomic_t *v = (atomic_t *)l; | ||
104 | |||
105 | atomic_add(i, v); | ||
106 | } | ||
107 | |||
108 | static inline void atomic_long_sub(long i, atomic_long_t *l) | ||
109 | { | ||
110 | atomic_t *v = (atomic_t *)l; | ||
111 | |||
112 | atomic_sub(i, v); | ||
113 | } | ||
114 | |||
115 | #endif | ||
116 | #endif | ||
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 094d4917c1a9..35de20cf8fac 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -10,6 +10,8 @@ | |||
10 | #define ALIGN_FUNCTION() . = ALIGN(8) | 10 | #define ALIGN_FUNCTION() . = ALIGN(8) |
11 | 11 | ||
12 | #define RODATA \ | 12 | #define RODATA \ |
13 | . = ALIGN(4096); \ | ||
14 | __start_rodata = .; \ | ||
13 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ | 15 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ |
14 | *(.rodata) *(.rodata.*) \ | 16 | *(.rodata) *(.rodata.*) \ |
15 | *(__vermagic) /* Kernel version magic */ \ | 17 | *(__vermagic) /* Kernel version magic */ \ |
@@ -74,6 +76,8 @@ | |||
74 | __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ | 76 | __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ |
75 | *(__ksymtab_strings) \ | 77 | *(__ksymtab_strings) \ |
76 | } \ | 78 | } \ |
79 | __end_rodata = .; \ | ||
80 | . = ALIGN(4096); \ | ||
77 | \ | 81 | \ |
78 | /* Built-in module parameters. */ \ | 82 | /* Built-in module parameters. */ \ |
79 | __param : AT(ADDR(__param) - LOAD_OFFSET) { \ | 83 | __param : AT(ADDR(__param) - LOAD_OFFSET) { \ |
diff --git a/include/asm-h8300/atomic.h b/include/asm-h8300/atomic.h index f23d86819ea8..d891541e89c3 100644 --- a/include/asm-h8300/atomic.h +++ b/include/asm-h8300/atomic.h | |||
@@ -137,4 +137,5 @@ static __inline__ void atomic_set_mask(unsigned long mask, unsigned long *v) | |||
137 | #define smp_mb__before_atomic_inc() barrier() | 137 | #define smp_mb__before_atomic_inc() barrier() |
138 | #define smp_mb__after_atomic_inc() barrier() | 138 | #define smp_mb__after_atomic_inc() barrier() |
139 | 139 | ||
140 | #include <asm-generic/atomic.h> | ||
140 | #endif /* __ARCH_H8300_ATOMIC __ */ | 141 | #endif /* __ARCH_H8300_ATOMIC __ */ |
diff --git a/include/asm-h8300/irq.h b/include/asm-h8300/irq.h index 5027181ed067..73065f5bda0e 100644 --- a/include/asm-h8300/irq.h +++ b/include/asm-h8300/irq.h | |||
@@ -61,11 +61,6 @@ static __inline__ int irq_canonicalize(int irq) | |||
61 | 61 | ||
62 | extern void enable_irq(unsigned int); | 62 | extern void enable_irq(unsigned int); |
63 | extern void disable_irq(unsigned int); | 63 | extern void disable_irq(unsigned int); |
64 | |||
65 | /* | ||
66 | * Some drivers want these entry points | ||
67 | */ | ||
68 | #define enable_irq_nosync(x) enable_irq(x) | ||
69 | #define disable_irq_nosync(x) disable_irq(x) | 64 | #define disable_irq_nosync(x) disable_irq(x) |
70 | 65 | ||
71 | struct irqaction; | 66 | struct irqaction; |
diff --git a/include/asm-h8300/mman.h b/include/asm-h8300/mman.h index 63f727a59850..744a8fb485c2 100644 --- a/include/asm-h8300/mman.h +++ b/include/asm-h8300/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-i386/atomic.h b/include/asm-i386/atomic.h index c68557aa04b2..7a5472d77091 100644 --- a/include/asm-i386/atomic.h +++ b/include/asm-i386/atomic.h | |||
@@ -254,4 +254,5 @@ __asm__ __volatile__(LOCK "orl %0,%1" \ | |||
254 | #define smp_mb__before_atomic_inc() barrier() | 254 | #define smp_mb__before_atomic_inc() barrier() |
255 | #define smp_mb__after_atomic_inc() barrier() | 255 | #define smp_mb__after_atomic_inc() barrier() |
256 | 256 | ||
257 | #include <asm-generic/atomic.h> | ||
257 | #endif | 258 | #endif |
diff --git a/include/asm-i386/bitops.h b/include/asm-i386/bitops.h index 4807aa1d2e3d..65679aca4b22 100644 --- a/include/asm-i386/bitops.h +++ b/include/asm-i386/bitops.h | |||
@@ -332,9 +332,9 @@ static inline unsigned long __ffs(unsigned long word) | |||
332 | * Returns the bit-number of the first set bit, not the number of the byte | 332 | * Returns the bit-number of the first set bit, not the number of the byte |
333 | * containing a bit. | 333 | * containing a bit. |
334 | */ | 334 | */ |
335 | static inline int find_first_bit(const unsigned long *addr, unsigned size) | 335 | static inline unsigned find_first_bit(const unsigned long *addr, unsigned size) |
336 | { | 336 | { |
337 | int x = 0; | 337 | unsigned x = 0; |
338 | 338 | ||
339 | while (x < size) { | 339 | while (x < size) { |
340 | unsigned long val = *addr++; | 340 | unsigned long val = *addr++; |
@@ -367,11 +367,6 @@ static inline unsigned long ffz(unsigned long word) | |||
367 | return word; | 367 | return word; |
368 | } | 368 | } |
369 | 369 | ||
370 | /* | ||
371 | * fls: find last bit set. | ||
372 | */ | ||
373 | |||
374 | #define fls(x) generic_fls(x) | ||
375 | #define fls64(x) generic_fls64(x) | 370 | #define fls64(x) generic_fls64(x) |
376 | 371 | ||
377 | #ifdef __KERNEL__ | 372 | #ifdef __KERNEL__ |
@@ -415,6 +410,23 @@ static inline int ffs(int x) | |||
415 | } | 410 | } |
416 | 411 | ||
417 | /** | 412 | /** |
413 | * fls - find last bit set | ||
414 | * @x: the word to search | ||
415 | * | ||
416 | * This is defined the same way as ffs. | ||
417 | */ | ||
418 | static inline int fls(int x) | ||
419 | { | ||
420 | int r; | ||
421 | |||
422 | __asm__("bsrl %1,%0\n\t" | ||
423 | "jnz 1f\n\t" | ||
424 | "movl $-1,%0\n" | ||
425 | "1:" : "=r" (r) : "rm" (x)); | ||
426 | return r+1; | ||
427 | } | ||
428 | |||
429 | /** | ||
418 | * hweightN - returns the hamming weight of a N-bit word | 430 | * hweightN - returns the hamming weight of a N-bit word |
419 | * @x: the word to weigh | 431 | * @x: the word to weigh |
420 | * | 432 | * |
diff --git a/include/asm-i386/bugs.h b/include/asm-i386/bugs.h index ea54540638d2..50233e0345fb 100644 --- a/include/asm-i386/bugs.h +++ b/include/asm-i386/bugs.h | |||
@@ -8,9 +8,6 @@ | |||
8 | * <rreilova@ececs.uc.edu> | 8 | * <rreilova@ececs.uc.edu> |
9 | * - Channing Corn (tests & fixes), | 9 | * - Channing Corn (tests & fixes), |
10 | * - Andrew D. Balsa (code cleanup). | 10 | * - Andrew D. Balsa (code cleanup). |
11 | * | ||
12 | * Pentium III FXSR, SSE support | ||
13 | * Gareth Hughes <gareth@valinux.com>, May 2000 | ||
14 | */ | 11 | */ |
15 | 12 | ||
16 | /* | 13 | /* |
@@ -76,25 +73,7 @@ static void __init check_fpu(void) | |||
76 | return; | 73 | return; |
77 | } | 74 | } |
78 | 75 | ||
79 | /* Enable FXSR and company _before_ testing for FP problems. */ | 76 | /* trap_init() enabled FXSR and company _before_ testing for FP problems here. */ |
80 | /* | ||
81 | * Verify that the FXSAVE/FXRSTOR data will be 16-byte aligned. | ||
82 | */ | ||
83 | if (offsetof(struct task_struct, thread.i387.fxsave) & 15) { | ||
84 | extern void __buggy_fxsr_alignment(void); | ||
85 | __buggy_fxsr_alignment(); | ||
86 | } | ||
87 | if (cpu_has_fxsr) { | ||
88 | printk(KERN_INFO "Enabling fast FPU save and restore... "); | ||
89 | set_in_cr4(X86_CR4_OSFXSR); | ||
90 | printk("done.\n"); | ||
91 | } | ||
92 | if (cpu_has_xmm) { | ||
93 | printk(KERN_INFO "Enabling unmasked SIMD FPU exception support... "); | ||
94 | set_in_cr4(X86_CR4_OSXMMEXCPT); | ||
95 | printk("done.\n"); | ||
96 | } | ||
97 | |||
98 | /* Test for the divl bug.. */ | 77 | /* Test for the divl bug.. */ |
99 | __asm__("fninit\n\t" | 78 | __asm__("fninit\n\t" |
100 | "fldl %1\n\t" | 79 | "fldl %1\n\t" |
diff --git a/include/asm-i386/cacheflush.h b/include/asm-i386/cacheflush.h index 2ea36dea37d9..7199f7b326f1 100644 --- a/include/asm-i386/cacheflush.h +++ b/include/asm-i386/cacheflush.h | |||
@@ -31,4 +31,8 @@ int change_page_attr(struct page *page, int numpages, pgprot_t prot); | |||
31 | void kernel_map_pages(struct page *page, int numpages, int enable); | 31 | void kernel_map_pages(struct page *page, int numpages, int enable); |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #ifdef CONFIG_DEBUG_RODATA | ||
35 | void mark_rodata_ro(void); | ||
36 | #endif | ||
37 | |||
34 | #endif /* _I386_CACHEFLUSH_H */ | 38 | #endif /* _I386_CACHEFLUSH_H */ |
diff --git a/include/asm-i386/desc.h b/include/asm-i386/desc.h index 29b851a18c6e..494e73bca095 100644 --- a/include/asm-i386/desc.h +++ b/include/asm-i386/desc.h | |||
@@ -15,9 +15,6 @@ | |||
15 | #include <asm/mmu.h> | 15 | #include <asm/mmu.h> |
16 | 16 | ||
17 | extern struct desc_struct cpu_gdt_table[GDT_ENTRIES]; | 17 | extern struct desc_struct cpu_gdt_table[GDT_ENTRIES]; |
18 | DECLARE_PER_CPU(struct desc_struct, cpu_gdt_table[GDT_ENTRIES]); | ||
19 | |||
20 | #define get_cpu_gdt_table(_cpu) (per_cpu(cpu_gdt_table,_cpu)) | ||
21 | 18 | ||
22 | DECLARE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]); | 19 | DECLARE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]); |
23 | 20 | ||
@@ -29,6 +26,11 @@ struct Xgt_desc_struct { | |||
29 | 26 | ||
30 | extern struct Xgt_desc_struct idt_descr, cpu_gdt_descr[NR_CPUS]; | 27 | extern struct Xgt_desc_struct idt_descr, cpu_gdt_descr[NR_CPUS]; |
31 | 28 | ||
29 | static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) | ||
30 | { | ||
31 | return ((struct desc_struct *)cpu_gdt_descr[cpu].address); | ||
32 | } | ||
33 | |||
32 | #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) | 34 | #define load_TR_desc() __asm__ __volatile__("ltr %w0"::"q" (GDT_ENTRY_TSS*8)) |
33 | #define load_LDT_desc() __asm__ __volatile__("lldt %w0"::"q" (GDT_ENTRY_LDT*8)) | 35 | #define load_LDT_desc() __asm__ __volatile__("lldt %w0"::"q" (GDT_ENTRY_LDT*8)) |
34 | 36 | ||
diff --git a/include/asm-i386/mach-bigsmp/mach_apic.h b/include/asm-i386/mach-bigsmp/mach_apic.h index ba936d4daedb..18b19a773440 100644 --- a/include/asm-i386/mach-bigsmp/mach_apic.h +++ b/include/asm-i386/mach-bigsmp/mach_apic.h | |||
@@ -1,17 +1,10 @@ | |||
1 | #ifndef __ASM_MACH_APIC_H | 1 | #ifndef __ASM_MACH_APIC_H |
2 | #define __ASM_MACH_APIC_H | 2 | #define __ASM_MACH_APIC_H |
3 | #include <asm/smp.h> | 3 | |
4 | 4 | ||
5 | #define SEQUENTIAL_APICID | 5 | extern u8 bios_cpu_apicid[]; |
6 | #ifdef SEQUENTIAL_APICID | 6 | |
7 | #define xapic_phys_to_log_apicid(phys_apic) ( (1ul << ((phys_apic) & 0x3)) |\ | 7 | #define xapic_phys_to_log_apicid(cpu) (bios_cpu_apicid[cpu]) |
8 | ((phys_apic<<2) & (~0xf)) ) | ||
9 | #elif CLUSTERED_APICID | ||
10 | #define xapic_phys_to_log_apicid(phys_apic) ( (1ul << ((phys_apic) & 0x3)) |\ | ||
11 | ((phys_apic) & (~0xf)) ) | ||
12 | #endif | ||
13 | |||
14 | #define NO_BALANCE_IRQ (1) | ||
15 | #define esr_disable (1) | 8 | #define esr_disable (1) |
16 | 9 | ||
17 | static inline int apic_id_registered(void) | 10 | static inline int apic_id_registered(void) |
@@ -19,7 +12,6 @@ static inline int apic_id_registered(void) | |||
19 | return (1); | 12 | return (1); |
20 | } | 13 | } |
21 | 14 | ||
22 | #define APIC_DFR_VALUE (APIC_DFR_CLUSTER) | ||
23 | /* Round robin the irqs amoung the online cpus */ | 15 | /* Round robin the irqs amoung the online cpus */ |
24 | static inline cpumask_t target_cpus(void) | 16 | static inline cpumask_t target_cpus(void) |
25 | { | 17 | { |
@@ -32,29 +24,34 @@ static inline cpumask_t target_cpus(void) | |||
32 | } while (cpu >= NR_CPUS); | 24 | } while (cpu >= NR_CPUS); |
33 | return cpumask_of_cpu(cpu); | 25 | return cpumask_of_cpu(cpu); |
34 | } | 26 | } |
35 | #define TARGET_CPUS (target_cpus()) | ||
36 | 27 | ||
37 | #define INT_DELIVERY_MODE dest_Fixed | 28 | #undef APIC_DEST_LOGICAL |
38 | #define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */ | 29 | #define APIC_DEST_LOGICAL 0 |
30 | #define TARGET_CPUS (target_cpus()) | ||
31 | #define APIC_DFR_VALUE (APIC_DFR_FLAT) | ||
32 | #define INT_DELIVERY_MODE (dest_Fixed) | ||
33 | #define INT_DEST_MODE (0) /* phys delivery to target proc */ | ||
34 | #define NO_BALANCE_IRQ (0) | ||
35 | #define WAKE_SECONDARY_VIA_INIT | ||
36 | |||
39 | 37 | ||
40 | static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid) | 38 | static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid) |
41 | { | 39 | { |
42 | return 0; | 40 | return (0); |
43 | } | 41 | } |
44 | 42 | ||
45 | /* we don't use the phys_cpu_present_map to indicate apicid presence */ | 43 | static inline unsigned long check_apicid_present(int bit) |
46 | static inline unsigned long check_apicid_present(int bit) | ||
47 | { | 44 | { |
48 | return 1; | 45 | return (1); |
49 | } | 46 | } |
50 | 47 | ||
51 | #define apicid_cluster(apicid) (apicid & 0xF0) | 48 | static inline unsigned long calculate_ldr(int cpu) |
52 | |||
53 | static inline unsigned long calculate_ldr(unsigned long old) | ||
54 | { | 49 | { |
55 | unsigned long id; | 50 | unsigned long val, id; |
56 | id = xapic_phys_to_log_apicid(hard_smp_processor_id()); | 51 | val = apic_read(APIC_LDR) & ~APIC_LDR_MASK; |
57 | return ((old & ~APIC_LDR_MASK) | SET_APIC_LOGICAL_ID(id)); | 52 | id = xapic_phys_to_log_apicid(cpu); |
53 | val |= SET_APIC_LOGICAL_ID(id); | ||
54 | return val; | ||
58 | } | 55 | } |
59 | 56 | ||
60 | /* | 57 | /* |
@@ -67,37 +64,35 @@ static inline unsigned long calculate_ldr(unsigned long old) | |||
67 | static inline void init_apic_ldr(void) | 64 | static inline void init_apic_ldr(void) |
68 | { | 65 | { |
69 | unsigned long val; | 66 | unsigned long val; |
67 | int cpu = smp_processor_id(); | ||
70 | 68 | ||
71 | apic_write_around(APIC_DFR, APIC_DFR_VALUE); | 69 | apic_write_around(APIC_DFR, APIC_DFR_VALUE); |
72 | val = apic_read(APIC_LDR) & ~APIC_LDR_MASK; | 70 | val = calculate_ldr(cpu); |
73 | val = calculate_ldr(val); | ||
74 | apic_write_around(APIC_LDR, val); | 71 | apic_write_around(APIC_LDR, val); |
75 | } | 72 | } |
76 | 73 | ||
77 | static inline void clustered_apic_check(void) | 74 | static inline void clustered_apic_check(void) |
78 | { | 75 | { |
79 | printk("Enabling APIC mode: %s. Using %d I/O APICs\n", | 76 | printk("Enabling APIC mode: %s. Using %d I/O APICs\n", |
80 | "Cluster", nr_ioapics); | 77 | "Physflat", nr_ioapics); |
81 | } | 78 | } |
82 | 79 | ||
83 | static inline int multi_timer_check(int apic, int irq) | 80 | static inline int multi_timer_check(int apic, int irq) |
84 | { | 81 | { |
85 | return 0; | 82 | return (0); |
86 | } | 83 | } |
87 | 84 | ||
88 | static inline int apicid_to_node(int logical_apicid) | 85 | static inline int apicid_to_node(int logical_apicid) |
89 | { | 86 | { |
90 | return 0; | 87 | return (0); |
91 | } | 88 | } |
92 | 89 | ||
93 | extern u8 bios_cpu_apicid[]; | ||
94 | |||
95 | static inline int cpu_present_to_apicid(int mps_cpu) | 90 | static inline int cpu_present_to_apicid(int mps_cpu) |
96 | { | 91 | { |
97 | if (mps_cpu < NR_CPUS) | 92 | if (mps_cpu < NR_CPUS) |
98 | return (int)bios_cpu_apicid[mps_cpu]; | 93 | return (int) bios_cpu_apicid[mps_cpu]; |
99 | else | 94 | |
100 | return BAD_APICID; | 95 | return BAD_APICID; |
101 | } | 96 | } |
102 | 97 | ||
103 | static inline physid_mask_t apicid_to_cpu_present(int phys_apicid) | 98 | static inline physid_mask_t apicid_to_cpu_present(int phys_apicid) |
@@ -109,10 +104,10 @@ extern u8 cpu_2_logical_apicid[]; | |||
109 | /* Mapping from cpu number to logical apicid */ | 104 | /* Mapping from cpu number to logical apicid */ |
110 | static inline int cpu_to_logical_apicid(int cpu) | 105 | static inline int cpu_to_logical_apicid(int cpu) |
111 | { | 106 | { |
112 | if (cpu >= NR_CPUS) | 107 | if (cpu >= NR_CPUS) |
113 | return BAD_APICID; | 108 | return BAD_APICID; |
114 | return (int)cpu_2_logical_apicid[cpu]; | 109 | return cpu_physical_id(cpu); |
115 | } | 110 | } |
116 | 111 | ||
117 | static inline int mpc_apic_id(struct mpc_config_processor *m, | 112 | static inline int mpc_apic_id(struct mpc_config_processor *m, |
118 | struct mpc_config_translation *translation_record) | 113 | struct mpc_config_translation *translation_record) |
@@ -128,11 +123,9 @@ static inline int mpc_apic_id(struct mpc_config_processor *m, | |||
128 | static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map) | 123 | static inline physid_mask_t ioapic_phys_id_map(physid_mask_t phys_map) |
129 | { | 124 | { |
130 | /* For clustered we don't have a good way to do this yet - hack */ | 125 | /* For clustered we don't have a good way to do this yet - hack */ |
131 | return physids_promote(0xFUL); | 126 | return physids_promote(0xFFL); |
132 | } | 127 | } |
133 | 128 | ||
134 | #define WAKE_SECONDARY_VIA_INIT | ||
135 | |||
136 | static inline void setup_portio_remap(void) | 129 | static inline void setup_portio_remap(void) |
137 | { | 130 | { |
138 | } | 131 | } |
diff --git a/include/asm-i386/mach-bigsmp/mach_apicdef.h b/include/asm-i386/mach-bigsmp/mach_apicdef.h index 23e58b317c79..a58ab5a75c8c 100644 --- a/include/asm-i386/mach-bigsmp/mach_apicdef.h +++ b/include/asm-i386/mach-bigsmp/mach_apicdef.h | |||
@@ -1,11 +1,11 @@ | |||
1 | #ifndef __ASM_MACH_APICDEF_H | 1 | #ifndef __ASM_MACH_APICDEF_H |
2 | #define __ASM_MACH_APICDEF_H | 2 | #define __ASM_MACH_APICDEF_H |
3 | 3 | ||
4 | #define APIC_ID_MASK (0x0F<<24) | 4 | #define APIC_ID_MASK (0xFF<<24) |
5 | 5 | ||
6 | static inline unsigned get_apic_id(unsigned long x) | 6 | static inline unsigned get_apic_id(unsigned long x) |
7 | { | 7 | { |
8 | return (((x)>>24)&0x0F); | 8 | return (((x)>>24)&0xFF); |
9 | } | 9 | } |
10 | 10 | ||
11 | #define GET_APIC_ID(x) get_apic_id(x) | 11 | #define GET_APIC_ID(x) get_apic_id(x) |
diff --git a/include/asm-i386/mman.h b/include/asm-i386/mman.h index 196619a83854..ba4941e6f643 100644 --- a/include/asm-i386/mman.h +++ b/include/asm-i386/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h index 620a90641ea8..74f595d80579 100644 --- a/include/asm-i386/mmzone.h +++ b/include/asm-i386/mmzone.h | |||
@@ -76,11 +76,6 @@ static inline int pfn_to_nid(unsigned long pfn) | |||
76 | * Following are macros that each numa implmentation must define. | 76 | * Following are macros that each numa implmentation must define. |
77 | */ | 77 | */ |
78 | 78 | ||
79 | /* | ||
80 | * Given a kernel address, find the home node of the underlying memory. | ||
81 | */ | ||
82 | #define kvaddr_to_nid(kaddr) pfn_to_nid(__pa(kaddr) >> PAGE_SHIFT) | ||
83 | |||
84 | #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) | 79 | #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) |
85 | #define node_end_pfn(nid) \ | 80 | #define node_end_pfn(nid) \ |
86 | ({ \ | 81 | ({ \ |
diff --git a/include/asm-i386/module.h b/include/asm-i386/module.h index eb7f2b4234aa..424661d25bd3 100644 --- a/include/asm-i386/module.h +++ b/include/asm-i386/module.h | |||
@@ -52,8 +52,10 @@ struct mod_arch_specific | |||
52 | #define MODULE_PROC_FAMILY "CYRIXIII " | 52 | #define MODULE_PROC_FAMILY "CYRIXIII " |
53 | #elif defined CONFIG_MVIAC3_2 | 53 | #elif defined CONFIG_MVIAC3_2 |
54 | #define MODULE_PROC_FAMILY "VIAC3-2 " | 54 | #define MODULE_PROC_FAMILY "VIAC3-2 " |
55 | #elif CONFIG_MGEODEGX1 | 55 | #elif defined CONFIG_MGEODEGX1 |
56 | #define MODULE_PROC_FAMILY "GEODEGX1 " | 56 | #define MODULE_PROC_FAMILY "GEODEGX1 " |
57 | #elif defined CONFIG_MGEODE_LX | ||
58 | #define MODULE_PROC_FAMILY "GEODE " | ||
57 | #else | 59 | #else |
58 | #error unknown processor family | 60 | #error unknown processor family |
59 | #endif | 61 | #endif |
diff --git a/include/asm-i386/mpspec_def.h b/include/asm-i386/mpspec_def.h index a961093dbf88..76feedf85a8a 100644 --- a/include/asm-i386/mpspec_def.h +++ b/include/asm-i386/mpspec_def.h | |||
@@ -75,7 +75,7 @@ struct mpc_config_bus | |||
75 | { | 75 | { |
76 | unsigned char mpc_type; | 76 | unsigned char mpc_type; |
77 | unsigned char mpc_busid; | 77 | unsigned char mpc_busid; |
78 | unsigned char mpc_bustype[6] __attribute((packed)); | 78 | unsigned char mpc_bustype[6]; |
79 | }; | 79 | }; |
80 | 80 | ||
81 | /* List of Bus Type string values, Intel MP Spec. */ | 81 | /* List of Bus Type string values, Intel MP Spec. */ |
diff --git a/include/asm-i386/segment.h b/include/asm-i386/segment.h index bb5ff5b2c02e..faf995307b9e 100644 --- a/include/asm-i386/segment.h +++ b/include/asm-i386/segment.h | |||
@@ -91,6 +91,20 @@ | |||
91 | #define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1) | 91 | #define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1) |
92 | #define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8) | 92 | #define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8) |
93 | 93 | ||
94 | /* The PnP BIOS entries in the GDT */ | ||
95 | #define GDT_ENTRY_PNPBIOS_CS32 (GDT_ENTRY_PNPBIOS_BASE + 0) | ||
96 | #define GDT_ENTRY_PNPBIOS_CS16 (GDT_ENTRY_PNPBIOS_BASE + 1) | ||
97 | #define GDT_ENTRY_PNPBIOS_DS (GDT_ENTRY_PNPBIOS_BASE + 2) | ||
98 | #define GDT_ENTRY_PNPBIOS_TS1 (GDT_ENTRY_PNPBIOS_BASE + 3) | ||
99 | #define GDT_ENTRY_PNPBIOS_TS2 (GDT_ENTRY_PNPBIOS_BASE + 4) | ||
100 | |||
101 | /* The PnP BIOS selectors */ | ||
102 | #define PNP_CS32 (GDT_ENTRY_PNPBIOS_CS32 * 8) /* segment for calling fn */ | ||
103 | #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16 * 8) /* code segment for BIOS */ | ||
104 | #define PNP_DS (GDT_ENTRY_PNPBIOS_DS * 8) /* data segment for BIOS */ | ||
105 | #define PNP_TS1 (GDT_ENTRY_PNPBIOS_TS1 * 8) /* transfer data segment */ | ||
106 | #define PNP_TS2 (GDT_ENTRY_PNPBIOS_TS2 * 8) /* another data segment */ | ||
107 | |||
94 | /* | 108 | /* |
95 | * The interrupt descriptor table has room for 256 idt's, | 109 | * The interrupt descriptor table has room for 256 idt's, |
96 | * the global descriptor table is dependent on the number | 110 | * the global descriptor table is dependent on the number |
diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h index 772f85da1206..9c0593b7a94e 100644 --- a/include/asm-i386/system.h +++ b/include/asm-i386/system.h | |||
@@ -54,23 +54,7 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
54 | ); } while(0) | 54 | ); } while(0) |
55 | 55 | ||
56 | #define set_base(ldt,base) _set_base( ((char *)&(ldt)) , (base) ) | 56 | #define set_base(ldt,base) _set_base( ((char *)&(ldt)) , (base) ) |
57 | #define set_limit(ldt,limit) _set_limit( ((char *)&(ldt)) , ((limit)-1)>>12 ) | 57 | #define set_limit(ldt,limit) _set_limit( ((char *)&(ldt)) , ((limit)-1) ) |
58 | |||
59 | static inline unsigned long _get_base(char * addr) | ||
60 | { | ||
61 | unsigned long __base; | ||
62 | __asm__("movb %3,%%dh\n\t" | ||
63 | "movb %2,%%dl\n\t" | ||
64 | "shll $16,%%edx\n\t" | ||
65 | "movw %1,%%dx" | ||
66 | :"=&d" (__base) | ||
67 | :"m" (*((addr)+2)), | ||
68 | "m" (*((addr)+4)), | ||
69 | "m" (*((addr)+7))); | ||
70 | return __base; | ||
71 | } | ||
72 | |||
73 | #define get_base(ldt) _get_base( ((char *)&(ldt)) ) | ||
74 | 58 | ||
75 | /* | 59 | /* |
76 | * Load a segment. Fall back on loading the zero | 60 | * Load a segment. Fall back on loading the zero |
@@ -140,6 +124,19 @@ static inline unsigned long _get_base(char * addr) | |||
140 | :"=r" (__dummy)); \ | 124 | :"=r" (__dummy)); \ |
141 | __dummy; \ | 125 | __dummy; \ |
142 | }) | 126 | }) |
127 | |||
128 | #define read_cr4_safe() ({ \ | ||
129 | unsigned int __dummy; \ | ||
130 | /* This could fault if %cr4 does not exist */ \ | ||
131 | __asm__("1: movl %%cr4, %0 \n" \ | ||
132 | "2: \n" \ | ||
133 | ".section __ex_table,\"a\" \n" \ | ||
134 | ".long 1b,2b \n" \ | ||
135 | ".previous \n" \ | ||
136 | : "=r" (__dummy): "0" (0)); \ | ||
137 | __dummy; \ | ||
138 | }) | ||
139 | |||
143 | #define write_cr4(x) \ | 140 | #define write_cr4(x) \ |
144 | __asm__ __volatile__("movl %0,%%cr4": :"r" (x)); | 141 | __asm__ __volatile__("movl %0,%%cr4": :"r" (x)); |
145 | #define stts() write_cr0(8 | read_cr0()) | 142 | #define stts() write_cr0(8 | read_cr0()) |
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index 0f92e78dfea1..fe38b9a96233 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h | |||
@@ -256,7 +256,7 @@ | |||
256 | #define __NR_io_submit 248 | 256 | #define __NR_io_submit 248 |
257 | #define __NR_io_cancel 249 | 257 | #define __NR_io_cancel 249 |
258 | #define __NR_fadvise64 250 | 258 | #define __NR_fadvise64 250 |
259 | #define __NR_set_zone_reclaim 251 | 259 | /* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ |
260 | #define __NR_exit_group 252 | 260 | #define __NR_exit_group 252 |
261 | #define __NR_lookup_dcookie 253 | 261 | #define __NR_lookup_dcookie 253 |
262 | #define __NR_epoll_create 254 | 262 | #define __NR_epoll_create 254 |
diff --git a/include/asm-ia64/atomic.h b/include/asm-ia64/atomic.h index 2fbebf85c31d..15cf7984c48e 100644 --- a/include/asm-ia64/atomic.h +++ b/include/asm-ia64/atomic.h | |||
@@ -192,4 +192,5 @@ atomic64_add_negative (__s64 i, atomic64_t *v) | |||
192 | #define smp_mb__before_atomic_inc() barrier() | 192 | #define smp_mb__before_atomic_inc() barrier() |
193 | #define smp_mb__after_atomic_inc() barrier() | 193 | #define smp_mb__after_atomic_inc() barrier() |
194 | 194 | ||
195 | #include <asm-generic/atomic.h> | ||
195 | #endif /* _ASM_IA64_ATOMIC_H */ | 196 | #endif /* _ASM_IA64_ATOMIC_H */ |
diff --git a/include/asm-ia64/mman.h b/include/asm-ia64/mman.h index 1c0a73af1461..828beb24a20e 100644 --- a/include/asm-ia64/mman.h +++ b/include/asm-ia64/mman.h | |||
@@ -43,6 +43,7 @@ | |||
43 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 43 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
45 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 45 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
46 | 47 | ||
47 | /* compatibility flags */ | 48 | /* compatibility flags */ |
48 | #define MAP_ANON MAP_ANONYMOUS | 49 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h index 6d96a67439be..2bf543493cb8 100644 --- a/include/asm-ia64/unistd.h +++ b/include/asm-ia64/unistd.h | |||
@@ -265,7 +265,7 @@ | |||
265 | #define __NR_keyctl 1273 | 265 | #define __NR_keyctl 1273 |
266 | #define __NR_ioprio_set 1274 | 266 | #define __NR_ioprio_set 1274 |
267 | #define __NR_ioprio_get 1275 | 267 | #define __NR_ioprio_get 1275 |
268 | #define __NR_set_zone_reclaim 1276 | 268 | /* 1276 is available for reuse (was briefly sys_set_zone_reclaim) */ |
269 | #define __NR_inotify_init 1277 | 269 | #define __NR_inotify_init 1277 |
270 | #define __NR_inotify_add_watch 1278 | 270 | #define __NR_inotify_add_watch 1278 |
271 | #define __NR_inotify_rm_watch 1279 | 271 | #define __NR_inotify_rm_watch 1279 |
diff --git a/include/asm-m32r/assembler.h b/include/asm-m32r/assembler.h index e1dff9d6baad..b7f4d8aaeb46 100644 --- a/include/asm-m32r/assembler.h +++ b/include/asm-m32r/assembler.h | |||
@@ -52,7 +52,7 @@ | |||
52 | or3 \reg, \reg, #low(\x) | 52 | or3 \reg, \reg, #low(\x) |
53 | .endm | 53 | .endm |
54 | 54 | ||
55 | #if !defined(CONFIG_CHIP_M32102) | 55 | #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) |
56 | #define STI(reg) STI_M reg | 56 | #define STI(reg) STI_M reg |
57 | .macro STI_M reg | 57 | .macro STI_M reg |
58 | setpsw #0x40 -> nop | 58 | setpsw #0x40 -> nop |
@@ -64,7 +64,7 @@ | |||
64 | clrpsw #0x40 -> nop | 64 | clrpsw #0x40 -> nop |
65 | ; WORKAROUND: "-> nop" is a workaround for the M32700(TS1). | 65 | ; WORKAROUND: "-> nop" is a workaround for the M32700(TS1). |
66 | .endm | 66 | .endm |
67 | #else /* CONFIG_CHIP_M32102 */ | 67 | #else /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
68 | #define STI(reg) STI_M reg | 68 | #define STI(reg) STI_M reg |
69 | .macro STI_M reg | 69 | .macro STI_M reg |
70 | mvfc \reg, psw | 70 | mvfc \reg, psw |
@@ -191,12 +191,12 @@ | |||
191 | and \reg, sp | 191 | and \reg, sp |
192 | .endm | 192 | .endm |
193 | 193 | ||
194 | #if !defined(CONFIG_CHIP_M32102) | 194 | #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) |
195 | .macro SWITCH_TO_KERNEL_STACK | 195 | .macro SWITCH_TO_KERNEL_STACK |
196 | ; switch to kernel stack (spi) | 196 | ; switch to kernel stack (spi) |
197 | clrpsw #0x80 -> nop | 197 | clrpsw #0x80 -> nop |
198 | .endm | 198 | .endm |
199 | #else /* CONFIG_CHIP_M32102 */ | 199 | #else /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
200 | .macro SWITCH_TO_KERNEL_STACK | 200 | .macro SWITCH_TO_KERNEL_STACK |
201 | push r0 ; save r0 for working | 201 | push r0 ; save r0 for working |
202 | mvfc r0, psw | 202 | mvfc r0, psw |
@@ -218,7 +218,7 @@ | |||
218 | .fillinsn | 218 | .fillinsn |
219 | 2: | 219 | 2: |
220 | .endm | 220 | .endm |
221 | #endif /* CONFIG_CHIP_M32102 */ | 221 | #endif /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
222 | 222 | ||
223 | #endif /* __ASSEMBLY__ */ | 223 | #endif /* __ASSEMBLY__ */ |
224 | 224 | ||
diff --git a/include/asm-m32r/atomic.h b/include/asm-m32r/atomic.h index ef1fb8ea4726..70761278b6cb 100644 --- a/include/asm-m32r/atomic.h +++ b/include/asm-m32r/atomic.h | |||
@@ -313,4 +313,5 @@ static __inline__ void atomic_set_mask(unsigned long mask, atomic_t *addr) | |||
313 | #define smp_mb__before_atomic_inc() barrier() | 313 | #define smp_mb__before_atomic_inc() barrier() |
314 | #define smp_mb__after_atomic_inc() barrier() | 314 | #define smp_mb__after_atomic_inc() barrier() |
315 | 315 | ||
316 | #include <asm-generic/atomic.h> | ||
316 | #endif /* _ASM_M32R_ATOMIC_H */ | 317 | #endif /* _ASM_M32R_ATOMIC_H */ |
diff --git a/include/asm-m32r/cacheflush.h b/include/asm-m32r/cacheflush.h index 46fc4c325108..e57427b6e249 100644 --- a/include/asm-m32r/cacheflush.h +++ b/include/asm-m32r/cacheflush.h | |||
@@ -7,7 +7,7 @@ | |||
7 | extern void _flush_cache_all(void); | 7 | extern void _flush_cache_all(void); |
8 | extern void _flush_cache_copyback_all(void); | 8 | extern void _flush_cache_copyback_all(void); |
9 | 9 | ||
10 | #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) | 10 | #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) |
11 | #define flush_cache_all() do { } while (0) | 11 | #define flush_cache_all() do { } while (0) |
12 | #define flush_cache_mm(mm) do { } while (0) | 12 | #define flush_cache_mm(mm) do { } while (0) |
13 | #define flush_cache_range(vma, start, end) do { } while (0) | 13 | #define flush_cache_range(vma, start, end) do { } while (0) |
diff --git a/include/asm-m32r/irq.h b/include/asm-m32r/irq.h index 8ed77968ecb4..ca943954572a 100644 --- a/include/asm-m32r/irq.h +++ b/include/asm-m32r/irq.h | |||
@@ -65,6 +65,22 @@ | |||
65 | #define NR_IRQS \ | 65 | #define NR_IRQS \ |
66 | (OPSPUT_NUM_CPU_IRQ + OPSPUT_NUM_PLD_IRQ \ | 66 | (OPSPUT_NUM_CPU_IRQ + OPSPUT_NUM_PLD_IRQ \ |
67 | + OPSPUT_NUM_LCD_PLD_IRQ + OPSPUT_NUM_LAN_PLD_IRQ) | 67 | + OPSPUT_NUM_LCD_PLD_IRQ + OPSPUT_NUM_LAN_PLD_IRQ) |
68 | |||
69 | #elif defined(CONFIG_PLAT_M32104UT) | ||
70 | /* | ||
71 | * IRQ definitions for M32104UT | ||
72 | * M32104 Chip: 64 interrupts | ||
73 | * ICU of M32104UT-on-board PLD: 32 interrupts cascaded to INT1# chip pin | ||
74 | */ | ||
75 | #define M32104UT_NUM_CPU_IRQ (64) | ||
76 | #define M32104UT_NUM_PLD_IRQ (32) | ||
77 | #define M32104UT_IRQ_BASE 0 | ||
78 | #define M32104UT_CPU_IRQ_BASE M32104UT_IRQ_BASE | ||
79 | #define M32104UT_PLD_IRQ_BASE (M32104UT_CPU_IRQ_BASE + M32104UT_NUM_CPU_IRQ) | ||
80 | |||
81 | #define NR_IRQS \ | ||
82 | (M32104UT_NUM_CPU_IRQ + M32104UT_NUM_PLD_IRQ) | ||
83 | |||
68 | #else | 84 | #else |
69 | #define NR_IRQS 64 | 85 | #define NR_IRQS 64 |
70 | #endif | 86 | #endif |
diff --git a/include/asm-m32r/m32102.h b/include/asm-m32r/m32102.h index cb98101f4f6e..a1f0d1fe9eb8 100644 --- a/include/asm-m32r/m32102.h +++ b/include/asm-m32r/m32102.h | |||
@@ -11,7 +11,11 @@ | |||
11 | /*======================================================================* | 11 | /*======================================================================* |
12 | * Special Function Register | 12 | * Special Function Register |
13 | *======================================================================*/ | 13 | *======================================================================*/ |
14 | #if !defined(CONFIG_CHIP_M32104) | ||
14 | #define M32R_SFR_OFFSET (0x00E00000) /* 0x00E00000-0x00EFFFFF 1[MB] */ | 15 | #define M32R_SFR_OFFSET (0x00E00000) /* 0x00E00000-0x00EFFFFF 1[MB] */ |
16 | #else | ||
17 | #define M32R_SFR_OFFSET (0x00700000) /* 0x00700000-0x007FFFFF 1[MB] */ | ||
18 | #endif | ||
15 | 19 | ||
16 | /* | 20 | /* |
17 | * Clock and Power Management registers. | 21 | * Clock and Power Management registers. |
@@ -100,7 +104,7 @@ | |||
100 | #define M32R_MFT5RLD_PORTL (0x0C+M32R_MFT5_OFFSET) /* MFT4 reload */ | 104 | #define M32R_MFT5RLD_PORTL (0x0C+M32R_MFT5_OFFSET) /* MFT4 reload */ |
101 | #define M32R_MFT5CMPRLD_PORTL (0x10+M32R_MFT5_OFFSET) /* MFT4 compare reload */ | 105 | #define M32R_MFT5CMPRLD_PORTL (0x10+M32R_MFT5_OFFSET) /* MFT4 compare reload */ |
102 | 106 | ||
103 | #ifdef CONFIG_CHIP_M32700 | 107 | #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32104) |
104 | #define M32R_MFTCR_MFT0MSK (1UL<<31) /* b0 */ | 108 | #define M32R_MFTCR_MFT0MSK (1UL<<31) /* b0 */ |
105 | #define M32R_MFTCR_MFT1MSK (1UL<<30) /* b1 */ | 109 | #define M32R_MFTCR_MFT1MSK (1UL<<30) /* b1 */ |
106 | #define M32R_MFTCR_MFT2MSK (1UL<<29) /* b2 */ | 110 | #define M32R_MFTCR_MFT2MSK (1UL<<29) /* b2 */ |
@@ -113,7 +117,7 @@ | |||
113 | #define M32R_MFTCR_MFT3EN (1UL<<20) /* b11 */ | 117 | #define M32R_MFTCR_MFT3EN (1UL<<20) /* b11 */ |
114 | #define M32R_MFTCR_MFT4EN (1UL<<19) /* b12 */ | 118 | #define M32R_MFTCR_MFT4EN (1UL<<19) /* b12 */ |
115 | #define M32R_MFTCR_MFT5EN (1UL<<18) /* b13 */ | 119 | #define M32R_MFTCR_MFT5EN (1UL<<18) /* b13 */ |
116 | #else /* not CONFIG_CHIP_M32700 */ | 120 | #else /* not CONFIG_CHIP_M32700 && not CONFIG_CHIP_M32104 */ |
117 | #define M32R_MFTCR_MFT0MSK (1UL<<15) /* b16 */ | 121 | #define M32R_MFTCR_MFT0MSK (1UL<<15) /* b16 */ |
118 | #define M32R_MFTCR_MFT1MSK (1UL<<14) /* b17 */ | 122 | #define M32R_MFTCR_MFT1MSK (1UL<<14) /* b17 */ |
119 | #define M32R_MFTCR_MFT2MSK (1UL<<13) /* b18 */ | 123 | #define M32R_MFTCR_MFT2MSK (1UL<<13) /* b18 */ |
@@ -126,7 +130,7 @@ | |||
126 | #define M32R_MFTCR_MFT3EN (1UL<<4) /* b27 */ | 130 | #define M32R_MFTCR_MFT3EN (1UL<<4) /* b27 */ |
127 | #define M32R_MFTCR_MFT4EN (1UL<<3) /* b28 */ | 131 | #define M32R_MFTCR_MFT4EN (1UL<<3) /* b28 */ |
128 | #define M32R_MFTCR_MFT5EN (1UL<<2) /* b29 */ | 132 | #define M32R_MFTCR_MFT5EN (1UL<<2) /* b29 */ |
129 | #endif /* not CONFIG_CHIP_M32700 */ | 133 | #endif /* not CONFIG_CHIP_M32700 && not CONFIG_CHIP_M32104 */ |
130 | 134 | ||
131 | #define M32R_MFTMOD_CC_MASK (1UL<<15) /* b16 */ | 135 | #define M32R_MFTMOD_CC_MASK (1UL<<15) /* b16 */ |
132 | #define M32R_MFTMOD_TCCR (1UL<<13) /* b18 */ | 136 | #define M32R_MFTMOD_TCCR (1UL<<13) /* b18 */ |
@@ -241,8 +245,24 @@ | |||
241 | #define M32R_IRQ_MFT1 (17) /* MFT1 */ | 245 | #define M32R_IRQ_MFT1 (17) /* MFT1 */ |
242 | #define M32R_IRQ_MFT2 (18) /* MFT2 */ | 246 | #define M32R_IRQ_MFT2 (18) /* MFT2 */ |
243 | #define M32R_IRQ_MFT3 (19) /* MFT3 */ | 247 | #define M32R_IRQ_MFT3 (19) /* MFT3 */ |
244 | #define M32R_IRQ_MFT4 (20) /* MFT4 */ | 248 | #ifdef CONFIG_CHIP_M32104 |
245 | #define M32R_IRQ_MFT5 (21) /* MFT5 */ | 249 | #define M32R_IRQ_MFTX0 (24) /* MFTX0 */ |
250 | #define M32R_IRQ_MFTX1 (25) /* MFTX1 */ | ||
251 | #define M32R_IRQ_DMA0 (32) /* DMA0 */ | ||
252 | #define M32R_IRQ_DMA1 (33) /* DMA1 */ | ||
253 | #define M32R_IRQ_DMA2 (34) /* DMA2 */ | ||
254 | #define M32R_IRQ_DMA3 (35) /* DMA3 */ | ||
255 | #define M32R_IRQ_SIO0_R (40) /* SIO0 send */ | ||
256 | #define M32R_IRQ_SIO0_S (41) /* SIO0 receive */ | ||
257 | #define M32R_IRQ_SIO1_R (42) /* SIO1 send */ | ||
258 | #define M32R_IRQ_SIO1_S (43) /* SIO1 receive */ | ||
259 | #define M32R_IRQ_SIO2_R (44) /* SIO2 send */ | ||
260 | #define M32R_IRQ_SIO2_S (45) /* SIO2 receive */ | ||
261 | #define M32R_IRQ_SIO3_R (46) /* SIO3 send */ | ||
262 | #define M32R_IRQ_SIO3_S (47) /* SIO3 receive */ | ||
263 | #define M32R_IRQ_ADC (56) /* ADC */ | ||
264 | #define M32R_IRQ_PC (57) /* PC */ | ||
265 | #else /* ! M32104 */ | ||
246 | #define M32R_IRQ_DMA0 (32) /* DMA0 */ | 266 | #define M32R_IRQ_DMA0 (32) /* DMA0 */ |
247 | #define M32R_IRQ_DMA1 (33) /* DMA1 */ | 267 | #define M32R_IRQ_DMA1 (33) /* DMA1 */ |
248 | #define M32R_IRQ_SIO0_R (48) /* SIO0 send */ | 268 | #define M32R_IRQ_SIO0_R (48) /* SIO0 send */ |
@@ -255,6 +275,7 @@ | |||
255 | #define M32R_IRQ_SIO3_S (55) /* SIO3 receive */ | 275 | #define M32R_IRQ_SIO3_S (55) /* SIO3 receive */ |
256 | #define M32R_IRQ_SIO4_R (56) /* SIO4 send */ | 276 | #define M32R_IRQ_SIO4_R (56) /* SIO4 send */ |
257 | #define M32R_IRQ_SIO4_S (57) /* SIO4 receive */ | 277 | #define M32R_IRQ_SIO4_S (57) /* SIO4 receive */ |
278 | #endif /* ! M32104 */ | ||
258 | 279 | ||
259 | #ifdef CONFIG_SMP | 280 | #ifdef CONFIG_SMP |
260 | #define M32R_IRQ_IPI0 (56) | 281 | #define M32R_IRQ_IPI0 (56) |
@@ -281,15 +302,12 @@ | |||
281 | #define M32R_FPGA_VERSION0_PORTL (0x30+M32R_FPGA_TOP) | 302 | #define M32R_FPGA_VERSION0_PORTL (0x30+M32R_FPGA_TOP) |
282 | #define M32R_FPGA_VERSION1_PORTL (0x34+M32R_FPGA_TOP) | 303 | #define M32R_FPGA_VERSION1_PORTL (0x34+M32R_FPGA_TOP) |
283 | 304 | ||
305 | #endif /* CONFIG_SMP */ | ||
306 | |||
284 | #ifndef __ASSEMBLY__ | 307 | #ifndef __ASSEMBLY__ |
285 | /* For NETDEV WATCHDOG */ | ||
286 | typedef struct { | 308 | typedef struct { |
287 | unsigned long icucr; /* ICU Control Register */ | 309 | unsigned long icucr; /* ICU Control Register */ |
288 | } icu_data_t; | 310 | } icu_data_t; |
289 | |||
290 | extern icu_data_t icu_data[]; | ||
291 | #endif | 311 | #endif |
292 | 312 | ||
293 | #endif /* CONFIG_SMP */ | ||
294 | |||
295 | #endif /* _M32102_H_ */ | 313 | #endif /* _M32102_H_ */ |
diff --git a/include/asm-m32r/m32104ut/m32104ut_pld.h b/include/asm-m32r/m32104ut/m32104ut_pld.h new file mode 100644 index 000000000000..a4eac20553df --- /dev/null +++ b/include/asm-m32r/m32104ut/m32104ut_pld.h | |||
@@ -0,0 +1,163 @@ | |||
1 | /* | ||
2 | * include/asm/m32104ut/m32104ut_pld.h | ||
3 | * | ||
4 | * Definitions for Programable Logic Device(PLD) on M32104UT board. | ||
5 | * Based on m32700ut_pld.h | ||
6 | * | ||
7 | * Copyright (c) 2002 Takeo Takahashi | ||
8 | * Copyright (c) 2005 Naoto Sugai | ||
9 | * | ||
10 | * This file is subject to the terms and conditions of the GNU General | ||
11 | * Public License. See the file "COPYING" in the main directory of | ||
12 | * this archive for more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef _M32104UT_M32104UT_PLD_H | ||
16 | #define _M32104UT_M32104UT_PLD_H | ||
17 | |||
18 | #include <linux/config.h> | ||
19 | |||
20 | #if defined(CONFIG_PLAT_M32104UT) | ||
21 | #define PLD_PLAT_BASE 0x02c00000 | ||
22 | #else | ||
23 | #error "no platform configuration" | ||
24 | #endif | ||
25 | |||
26 | #ifndef __ASSEMBLY__ | ||
27 | /* | ||
28 | * C functions use non-cache address. | ||
29 | */ | ||
30 | #define PLD_BASE (PLD_PLAT_BASE /* + NONCACHE_OFFSET */) | ||
31 | #define __reg8 (volatile unsigned char *) | ||
32 | #define __reg16 (volatile unsigned short *) | ||
33 | #define __reg32 (volatile unsigned int *) | ||
34 | #else | ||
35 | #define PLD_BASE (PLD_PLAT_BASE + NONCACHE_OFFSET) | ||
36 | #define __reg8 | ||
37 | #define __reg16 | ||
38 | #define __reg32 | ||
39 | #endif /* __ASSEMBLY__ */ | ||
40 | |||
41 | /* CFC */ | ||
42 | #define PLD_CFRSTCR __reg16(PLD_BASE + 0x0000) | ||
43 | #define PLD_CFSTS __reg16(PLD_BASE + 0x0002) | ||
44 | #define PLD_CFIMASK __reg16(PLD_BASE + 0x0004) | ||
45 | #define PLD_CFBUFCR __reg16(PLD_BASE + 0x0006) | ||
46 | |||
47 | /* MMC */ | ||
48 | #define PLD_MMCCR __reg16(PLD_BASE + 0x4000) | ||
49 | #define PLD_MMCMOD __reg16(PLD_BASE + 0x4002) | ||
50 | #define PLD_MMCSTS __reg16(PLD_BASE + 0x4006) | ||
51 | #define PLD_MMCBAUR __reg16(PLD_BASE + 0x400a) | ||
52 | #define PLD_MMCCMDBCUT __reg16(PLD_BASE + 0x400c) | ||
53 | #define PLD_MMCCDTBCUT __reg16(PLD_BASE + 0x400e) | ||
54 | #define PLD_MMCDET __reg16(PLD_BASE + 0x4010) | ||
55 | #define PLD_MMCWP __reg16(PLD_BASE + 0x4012) | ||
56 | #define PLD_MMCWDATA __reg16(PLD_BASE + 0x5000) | ||
57 | #define PLD_MMCRDATA __reg16(PLD_BASE + 0x6000) | ||
58 | #define PLD_MMCCMDDATA __reg16(PLD_BASE + 0x7000) | ||
59 | #define PLD_MMCRSPDATA __reg16(PLD_BASE + 0x7006) | ||
60 | |||
61 | /* ICU | ||
62 | * ICUISTS: status register | ||
63 | * ICUIREQ0: request register | ||
64 | * ICUIREQ1: request register | ||
65 | * ICUCR3: control register for CFIREQ# interrupt | ||
66 | * ICUCR4: control register for CFC Card insert interrupt | ||
67 | * ICUCR5: control register for CFC Card eject interrupt | ||
68 | * ICUCR6: control register for external interrupt | ||
69 | * ICUCR11: control register for MMC Card insert/eject interrupt | ||
70 | * ICUCR13: control register for SC error interrupt | ||
71 | * ICUCR14: control register for SC receive interrupt | ||
72 | * ICUCR15: control register for SC send interrupt | ||
73 | */ | ||
74 | |||
75 | #define PLD_IRQ_INT0 (M32104UT_PLD_IRQ_BASE + 0) /* None */ | ||
76 | #define PLD_IRQ_CFIREQ (M32104UT_PLD_IRQ_BASE + 3) /* CF IREQ */ | ||
77 | #define PLD_IRQ_CFC_INSERT (M32104UT_PLD_IRQ_BASE + 4) /* CF Insert */ | ||
78 | #define PLD_IRQ_CFC_EJECT (M32104UT_PLD_IRQ_BASE + 5) /* CF Eject */ | ||
79 | #define PLD_IRQ_EXINT (M32104UT_PLD_IRQ_BASE + 6) /* EXINT */ | ||
80 | #define PLD_IRQ_MMCCARD (M32104UT_PLD_IRQ_BASE + 11) /* MMC Insert/Eject */ | ||
81 | #define PLD_IRQ_SC_ERROR (M32104UT_PLD_IRQ_BASE + 13) /* SC error */ | ||
82 | #define PLD_IRQ_SC_RCV (M32104UT_PLD_IRQ_BASE + 14) /* SC receive */ | ||
83 | #define PLD_IRQ_SC_SND (M32104UT_PLD_IRQ_BASE + 15) /* SC send */ | ||
84 | |||
85 | #define PLD_ICUISTS __reg16(PLD_BASE + 0x8002) | ||
86 | #define PLD_ICUISTS_VECB_MASK (0xf000) | ||
87 | #define PLD_ICUISTS_VECB(x) ((x) & PLD_ICUISTS_VECB_MASK) | ||
88 | #define PLD_ICUISTS_ISN_MASK (0x07c0) | ||
89 | #define PLD_ICUISTS_ISN(x) ((x) & PLD_ICUISTS_ISN_MASK) | ||
90 | #define PLD_ICUCR3 __reg16(PLD_BASE + 0x8104) | ||
91 | #define PLD_ICUCR4 __reg16(PLD_BASE + 0x8106) | ||
92 | #define PLD_ICUCR5 __reg16(PLD_BASE + 0x8108) | ||
93 | #define PLD_ICUCR6 __reg16(PLD_BASE + 0x810a) | ||
94 | #define PLD_ICUCR11 __reg16(PLD_BASE + 0x8114) | ||
95 | #define PLD_ICUCR13 __reg16(PLD_BASE + 0x8118) | ||
96 | #define PLD_ICUCR14 __reg16(PLD_BASE + 0x811a) | ||
97 | #define PLD_ICUCR15 __reg16(PLD_BASE + 0x811c) | ||
98 | #define PLD_ICUCR_IEN (0x1000) | ||
99 | #define PLD_ICUCR_IREQ (0x0100) | ||
100 | #define PLD_ICUCR_ISMOD00 (0x0000) /* Low edge */ | ||
101 | #define PLD_ICUCR_ISMOD01 (0x0010) /* Low level */ | ||
102 | #define PLD_ICUCR_ISMOD02 (0x0020) /* High edge */ | ||
103 | #define PLD_ICUCR_ISMOD03 (0x0030) /* High level */ | ||
104 | #define PLD_ICUCR_ILEVEL0 (0x0000) | ||
105 | #define PLD_ICUCR_ILEVEL1 (0x0001) | ||
106 | #define PLD_ICUCR_ILEVEL2 (0x0002) | ||
107 | #define PLD_ICUCR_ILEVEL3 (0x0003) | ||
108 | #define PLD_ICUCR_ILEVEL4 (0x0004) | ||
109 | #define PLD_ICUCR_ILEVEL5 (0x0005) | ||
110 | #define PLD_ICUCR_ILEVEL6 (0x0006) | ||
111 | #define PLD_ICUCR_ILEVEL7 (0x0007) | ||
112 | |||
113 | /* Power Control of MMC and CF */ | ||
114 | #define PLD_CPCR __reg16(PLD_BASE + 0x14000) | ||
115 | #define PLD_CPCR_CDP 0x0001 | ||
116 | |||
117 | /* LED Control | ||
118 | * | ||
119 | * 1: DIP swich side | ||
120 | * 2: Reset switch side | ||
121 | */ | ||
122 | #define PLD_IOLEDCR __reg16(PLD_BASE + 0x14002) | ||
123 | #define PLD_IOLED_1_ON 0x001 | ||
124 | #define PLD_IOLED_1_OFF 0x000 | ||
125 | #define PLD_IOLED_2_ON 0x002 | ||
126 | #define PLD_IOLED_2_OFF 0x000 | ||
127 | |||
128 | /* DIP Switch | ||
129 | * 0: Write-protect of Flash Memory (0:protected, 1:non-protected) | ||
130 | * 1: - | ||
131 | * 2: - | ||
132 | * 3: - | ||
133 | */ | ||
134 | #define PLD_IOSWSTS __reg16(PLD_BASE + 0x14004) | ||
135 | #define PLD_IOSWSTS_IOSW2 0x0200 | ||
136 | #define PLD_IOSWSTS_IOSW1 0x0100 | ||
137 | #define PLD_IOSWSTS_IOWP0 0x0001 | ||
138 | |||
139 | /* CRC */ | ||
140 | #define PLD_CRC7DATA __reg16(PLD_BASE + 0x18000) | ||
141 | #define PLD_CRC7INDATA __reg16(PLD_BASE + 0x18002) | ||
142 | #define PLD_CRC16DATA __reg16(PLD_BASE + 0x18004) | ||
143 | #define PLD_CRC16INDATA __reg16(PLD_BASE + 0x18006) | ||
144 | #define PLD_CRC16ADATA __reg16(PLD_BASE + 0x18008) | ||
145 | #define PLD_CRC16AINDATA __reg16(PLD_BASE + 0x1800a) | ||
146 | |||
147 | /* RTC */ | ||
148 | #define PLD_RTCCR __reg16(PLD_BASE + 0x1c000) | ||
149 | #define PLD_RTCBAUR __reg16(PLD_BASE + 0x1c002) | ||
150 | #define PLD_RTCWRDATA __reg16(PLD_BASE + 0x1c004) | ||
151 | #define PLD_RTCRDDATA __reg16(PLD_BASE + 0x1c006) | ||
152 | #define PLD_RTCRSTODT __reg16(PLD_BASE + 0x1c008) | ||
153 | |||
154 | /* SIM Card */ | ||
155 | #define PLD_SCCR __reg16(PLD_BASE + 0x38000) | ||
156 | #define PLD_SCMOD __reg16(PLD_BASE + 0x38004) | ||
157 | #define PLD_SCSTS __reg16(PLD_BASE + 0x38006) | ||
158 | #define PLD_SCINTCR __reg16(PLD_BASE + 0x38008) | ||
159 | #define PLD_SCBAUR __reg16(PLD_BASE + 0x3800a) | ||
160 | #define PLD_SCTXB __reg16(PLD_BASE + 0x3800c) | ||
161 | #define PLD_SCRXB __reg16(PLD_BASE + 0x3800e) | ||
162 | |||
163 | #endif /* _M32104UT_M32104UT_PLD_H */ | ||
diff --git a/include/asm-m32r/m32r.h b/include/asm-m32r/m32r.h index ec142be00862..b133ca61acf1 100644 --- a/include/asm-m32r/m32r.h +++ b/include/asm-m32r/m32r.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <asm/m32r_mp_fpga.h> | 14 | #include <asm/m32r_mp_fpga.h> |
15 | #elif defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2) \ | 15 | #elif defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2) \ |
16 | || defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \ | 16 | || defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \ |
17 | || defined(CONFIG_CHIP_OPSP) | 17 | || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) |
18 | #include <asm/m32102.h> | 18 | #include <asm/m32102.h> |
19 | #endif | 19 | #endif |
20 | 20 | ||
@@ -43,6 +43,10 @@ | |||
43 | #include <asm/m32700ut/m32700ut_pld.h> | 43 | #include <asm/m32700ut/m32700ut_pld.h> |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | #if defined(CONFIG_PLAT_M32104UT) | ||
47 | #include <asm/m32104ut/m32104ut_pld.h> | ||
48 | #endif /* CONFIG_PLAT_M32104 */ | ||
49 | |||
46 | /* | 50 | /* |
47 | * M32R Register | 51 | * M32R Register |
48 | */ | 52 | */ |
@@ -122,7 +126,7 @@ | |||
122 | 126 | ||
123 | #include <asm/page.h> | 127 | #include <asm/page.h> |
124 | #ifdef CONFIG_MMU | 128 | #ifdef CONFIG_MMU |
125 | #define NONCACHE_OFFSET __PAGE_OFFSET+0x20000000 | 129 | #define NONCACHE_OFFSET (__PAGE_OFFSET + 0x20000000) |
126 | #else | 130 | #else |
127 | #define NONCACHE_OFFSET __PAGE_OFFSET | 131 | #define NONCACHE_OFFSET __PAGE_OFFSET |
128 | #endif /* CONFIG_MMU */ | 132 | #endif /* CONFIG_MMU */ |
diff --git a/include/asm-m32r/mman.h b/include/asm-m32r/mman.h index 011f6d9ec5cc..12e29747bc84 100644 --- a/include/asm-m32r/mman.h +++ b/include/asm-m32r/mman.h | |||
@@ -37,6 +37,7 @@ | |||
37 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 37 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 38 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
39 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 39 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
40 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
40 | 41 | ||
41 | /* compatibility flags */ | 42 | /* compatibility flags */ |
42 | #define MAP_ANON MAP_ANONYMOUS | 43 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-m32r/system.h b/include/asm-m32r/system.h index 5eee832b73a0..dcf619a0a0b0 100644 --- a/include/asm-m32r/system.h +++ b/include/asm-m32r/system.h | |||
@@ -69,12 +69,12 @@ | |||
69 | } while(0) | 69 | } while(0) |
70 | 70 | ||
71 | /* Interrupt Control */ | 71 | /* Interrupt Control */ |
72 | #if !defined(CONFIG_CHIP_M32102) | 72 | #if !defined(CONFIG_CHIP_M32102) && !defined(CONFIG_CHIP_M32104) |
73 | #define local_irq_enable() \ | 73 | #define local_irq_enable() \ |
74 | __asm__ __volatile__ ("setpsw #0x40 -> nop": : :"memory") | 74 | __asm__ __volatile__ ("setpsw #0x40 -> nop": : :"memory") |
75 | #define local_irq_disable() \ | 75 | #define local_irq_disable() \ |
76 | __asm__ __volatile__ ("clrpsw #0x40 -> nop": : :"memory") | 76 | __asm__ __volatile__ ("clrpsw #0x40 -> nop": : :"memory") |
77 | #else /* CONFIG_CHIP_M32102 */ | 77 | #else /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
78 | static inline void local_irq_enable(void) | 78 | static inline void local_irq_enable(void) |
79 | { | 79 | { |
80 | unsigned long tmpreg; | 80 | unsigned long tmpreg; |
@@ -96,7 +96,7 @@ static inline void local_irq_disable(void) | |||
96 | "mvtc %0, psw \n\t" | 96 | "mvtc %0, psw \n\t" |
97 | : "=&r" (tmpreg0), "=&r" (tmpreg1) : : "cbit", "memory"); | 97 | : "=&r" (tmpreg0), "=&r" (tmpreg1) : : "cbit", "memory"); |
98 | } | 98 | } |
99 | #endif /* CONFIG_CHIP_M32102 */ | 99 | #endif /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
100 | 100 | ||
101 | #define local_save_flags(x) \ | 101 | #define local_save_flags(x) \ |
102 | __asm__ __volatile__("mvfc %0,psw" : "=r"(x) : /* no input */) | 102 | __asm__ __volatile__("mvfc %0,psw" : "=r"(x) : /* no input */) |
@@ -105,13 +105,13 @@ static inline void local_irq_disable(void) | |||
105 | __asm__ __volatile__("mvtc %0,psw" : /* no outputs */ \ | 105 | __asm__ __volatile__("mvtc %0,psw" : /* no outputs */ \ |
106 | : "r" (x) : "cbit", "memory") | 106 | : "r" (x) : "cbit", "memory") |
107 | 107 | ||
108 | #if !defined(CONFIG_CHIP_M32102) | 108 | #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) |
109 | #define local_irq_save(x) \ | 109 | #define local_irq_save(x) \ |
110 | __asm__ __volatile__( \ | 110 | __asm__ __volatile__( \ |
111 | "mvfc %0, psw; \n\t" \ | 111 | "mvfc %0, psw; \n\t" \ |
112 | "clrpsw #0x40 -> nop; \n\t" \ | 112 | "clrpsw #0x40 -> nop; \n\t" \ |
113 | : "=r" (x) : /* no input */ : "memory") | 113 | : "=r" (x) : /* no input */ : "memory") |
114 | #else /* CONFIG_CHIP_M32102 */ | 114 | #else /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
115 | #define local_irq_save(x) \ | 115 | #define local_irq_save(x) \ |
116 | ({ \ | 116 | ({ \ |
117 | unsigned long tmpreg; \ | 117 | unsigned long tmpreg; \ |
@@ -124,7 +124,7 @@ static inline void local_irq_disable(void) | |||
124 | : "=r" (x), "=&r" (tmpreg) \ | 124 | : "=r" (x), "=&r" (tmpreg) \ |
125 | : : "cbit", "memory"); \ | 125 | : : "cbit", "memory"); \ |
126 | }) | 126 | }) |
127 | #endif /* CONFIG_CHIP_M32102 */ | 127 | #endif /* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ |
128 | 128 | ||
129 | #define irqs_disabled() \ | 129 | #define irqs_disabled() \ |
130 | ({ \ | 130 | ({ \ |
diff --git a/include/asm-m32r/unistd.h b/include/asm-m32r/unistd.h index ac399e1f7bc0..39be87ca2a5a 100644 --- a/include/asm-m32r/unistd.h +++ b/include/asm-m32r/unistd.h | |||
@@ -319,7 +319,7 @@ type name(void) \ | |||
319 | register long __scno __asm__ ("r7") = __NR_##name; \ | 319 | register long __scno __asm__ ("r7") = __NR_##name; \ |
320 | register long __res __asm__("r0"); \ | 320 | register long __res __asm__("r0"); \ |
321 | __asm__ __volatile__ (\ | 321 | __asm__ __volatile__ (\ |
322 | "trap #" SYSCALL_VECTOR \ | 322 | "trap #" SYSCALL_VECTOR "|| nop"\ |
323 | : "=r" (__res) \ | 323 | : "=r" (__res) \ |
324 | : "r" (__scno) \ | 324 | : "r" (__scno) \ |
325 | : "memory"); \ | 325 | : "memory"); \ |
@@ -332,7 +332,7 @@ type name(type1 arg1) \ | |||
332 | register long __scno __asm__ ("r7") = __NR_##name; \ | 332 | register long __scno __asm__ ("r7") = __NR_##name; \ |
333 | register long __res __asm__ ("r0") = (long)(arg1); \ | 333 | register long __res __asm__ ("r0") = (long)(arg1); \ |
334 | __asm__ __volatile__ (\ | 334 | __asm__ __volatile__ (\ |
335 | "trap #" SYSCALL_VECTOR \ | 335 | "trap #" SYSCALL_VECTOR "|| nop"\ |
336 | : "=r" (__res) \ | 336 | : "=r" (__res) \ |
337 | : "r" (__scno), "0" (__res) \ | 337 | : "r" (__scno), "0" (__res) \ |
338 | : "memory"); \ | 338 | : "memory"); \ |
@@ -346,7 +346,7 @@ register long __scno __asm__ ("r7") = __NR_##name; \ | |||
346 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ | 346 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ |
347 | register long __res __asm__ ("r0") = (long)(arg1); \ | 347 | register long __res __asm__ ("r0") = (long)(arg1); \ |
348 | __asm__ __volatile__ (\ | 348 | __asm__ __volatile__ (\ |
349 | "trap #" SYSCALL_VECTOR \ | 349 | "trap #" SYSCALL_VECTOR "|| nop"\ |
350 | : "=r" (__res) \ | 350 | : "=r" (__res) \ |
351 | : "r" (__scno), "0" (__res), "r" (__arg2) \ | 351 | : "r" (__scno), "0" (__res), "r" (__arg2) \ |
352 | : "memory"); \ | 352 | : "memory"); \ |
@@ -361,7 +361,7 @@ register long __arg3 __asm__ ("r2") = (long)(arg3); \ | |||
361 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ | 361 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ |
362 | register long __res __asm__ ("r0") = (long)(arg1); \ | 362 | register long __res __asm__ ("r0") = (long)(arg1); \ |
363 | __asm__ __volatile__ (\ | 363 | __asm__ __volatile__ (\ |
364 | "trap #" SYSCALL_VECTOR \ | 364 | "trap #" SYSCALL_VECTOR "|| nop"\ |
365 | : "=r" (__res) \ | 365 | : "=r" (__res) \ |
366 | : "r" (__scno), "0" (__res), "r" (__arg2), \ | 366 | : "r" (__scno), "0" (__res), "r" (__arg2), \ |
367 | "r" (__arg3) \ | 367 | "r" (__arg3) \ |
@@ -378,7 +378,7 @@ register long __arg3 __asm__ ("r2") = (long)(arg3); \ | |||
378 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ | 378 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ |
379 | register long __res __asm__ ("r0") = (long)(arg1); \ | 379 | register long __res __asm__ ("r0") = (long)(arg1); \ |
380 | __asm__ __volatile__ (\ | 380 | __asm__ __volatile__ (\ |
381 | "trap #" SYSCALL_VECTOR \ | 381 | "trap #" SYSCALL_VECTOR "|| nop"\ |
382 | : "=r" (__res) \ | 382 | : "=r" (__res) \ |
383 | : "r" (__scno), "0" (__res), "r" (__arg2), \ | 383 | : "r" (__scno), "0" (__res), "r" (__arg2), \ |
384 | "r" (__arg3), "r" (__arg4) \ | 384 | "r" (__arg3), "r" (__arg4) \ |
@@ -397,7 +397,7 @@ register long __arg3 __asm__ ("r2") = (long)(arg3); \ | |||
397 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ | 397 | register long __arg2 __asm__ ("r1") = (long)(arg2); \ |
398 | register long __res __asm__ ("r0") = (long)(arg1); \ | 398 | register long __res __asm__ ("r0") = (long)(arg1); \ |
399 | __asm__ __volatile__ (\ | 399 | __asm__ __volatile__ (\ |
400 | "trap #" SYSCALL_VECTOR \ | 400 | "trap #" SYSCALL_VECTOR "|| nop"\ |
401 | : "=r" (__res) \ | 401 | : "=r" (__res) \ |
402 | : "r" (__scno), "0" (__res), "r" (__arg2), \ | 402 | : "r" (__scno), "0" (__res), "r" (__arg2), \ |
403 | "r" (__arg3), "r" (__arg4), "r" (__arg5) \ | 403 | "r" (__arg3), "r" (__arg4), "r" (__arg5) \ |
diff --git a/include/asm-m68k/atomic.h b/include/asm-m68k/atomic.h index e3c962eeabf3..b8a4e75d679d 100644 --- a/include/asm-m68k/atomic.h +++ b/include/asm-m68k/atomic.h | |||
@@ -157,4 +157,5 @@ static inline void atomic_set_mask(unsigned long mask, unsigned long *v) | |||
157 | #define smp_mb__before_atomic_inc() barrier() | 157 | #define smp_mb__before_atomic_inc() barrier() |
158 | #define smp_mb__after_atomic_inc() barrier() | 158 | #define smp_mb__after_atomic_inc() barrier() |
159 | 159 | ||
160 | #include <asm-generic/atomic.h> | ||
160 | #endif /* __ARCH_M68K_ATOMIC __ */ | 161 | #endif /* __ARCH_M68K_ATOMIC __ */ |
diff --git a/include/asm-m68k/irq.h b/include/asm-m68k/irq.h index 1f569905cb74..127ad190cf2d 100644 --- a/include/asm-m68k/irq.h +++ b/include/asm-m68k/irq.h | |||
@@ -70,8 +70,6 @@ static __inline__ int irq_canonicalize(int irq) | |||
70 | 70 | ||
71 | extern void (*enable_irq)(unsigned int); | 71 | extern void (*enable_irq)(unsigned int); |
72 | extern void (*disable_irq)(unsigned int); | 72 | extern void (*disable_irq)(unsigned int); |
73 | |||
74 | #define disable_irq_nosync disable_irq | ||
75 | #define enable_irq_nosync enable_irq | 73 | #define enable_irq_nosync enable_irq |
76 | 74 | ||
77 | struct pt_regs; | 75 | struct pt_regs; |
diff --git a/include/asm-m68k/mman.h b/include/asm-m68k/mman.h index f831c4eeae6e..ea262ab88b3b 100644 --- a/include/asm-m68k/mman.h +++ b/include/asm-m68k/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-m68knommu/atomic.h b/include/asm-m68knommu/atomic.h index 3c1cc153c415..1702dbe9318c 100644 --- a/include/asm-m68knommu/atomic.h +++ b/include/asm-m68knommu/atomic.h | |||
@@ -143,4 +143,5 @@ static inline int atomic_sub_return(int i, atomic_t * v) | |||
143 | #define atomic_dec_return(v) atomic_sub_return(1,(v)) | 143 | #define atomic_dec_return(v) atomic_sub_return(1,(v)) |
144 | #define atomic_inc_return(v) atomic_add_return(1,(v)) | 144 | #define atomic_inc_return(v) atomic_add_return(1,(v)) |
145 | 145 | ||
146 | #include <asm-generic/atomic.h> | ||
146 | #endif /* __ARCH_M68KNOMMU_ATOMIC __ */ | 147 | #endif /* __ARCH_M68KNOMMU_ATOMIC __ */ |
diff --git a/include/asm-m68knommu/irq.h b/include/asm-m68knommu/irq.h index a08fa9b958da..20c48ec858a4 100644 --- a/include/asm-m68knommu/irq.h +++ b/include/asm-m68knommu/irq.h | |||
@@ -84,10 +84,8 @@ extern void (*mach_disable_irq)(unsigned int); | |||
84 | /* | 84 | /* |
85 | * Some drivers want these entry points | 85 | * Some drivers want these entry points |
86 | */ | 86 | */ |
87 | #define enable_irq(x) (mach_enable_irq ? (*mach_enable_irq)(x) : 0) | 87 | #define enable_irq(x) 0 |
88 | #define disable_irq(x) (mach_disable_irq ? (*mach_disable_irq)(x) : 0) | 88 | #define disable_irq(x) do { } while (0) |
89 | |||
90 | #define enable_irq_nosync(x) enable_irq(x) | ||
91 | #define disable_irq_nosync(x) disable_irq(x) | 89 | #define disable_irq_nosync(x) disable_irq(x) |
92 | 90 | ||
93 | struct irqaction; | 91 | struct irqaction; |
diff --git a/include/asm-mips/atomic.h b/include/asm-mips/atomic.h index 55c37c106ef0..92256e43a938 100644 --- a/include/asm-mips/atomic.h +++ b/include/asm-mips/atomic.h | |||
@@ -713,4 +713,5 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v) | |||
713 | #define smp_mb__before_atomic_inc() smp_mb() | 713 | #define smp_mb__before_atomic_inc() smp_mb() |
714 | #define smp_mb__after_atomic_inc() smp_mb() | 714 | #define smp_mb__after_atomic_inc() smp_mb() |
715 | 715 | ||
716 | #include <asm-generic/atomic.h> | ||
716 | #endif /* _ASM_ATOMIC_H */ | 717 | #endif /* _ASM_ATOMIC_H */ |
diff --git a/include/asm-mips/mman.h b/include/asm-mips/mman.h index 62060957ba93..dd17c8bd62a1 100644 --- a/include/asm-mips/mman.h +++ b/include/asm-mips/mman.h | |||
@@ -65,6 +65,7 @@ | |||
65 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 65 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
66 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 66 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
67 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 67 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
68 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
68 | 69 | ||
69 | /* compatibility flags */ | 70 | /* compatibility flags */ |
70 | #define MAP_ANON MAP_ANONYMOUS | 71 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-mips/riscos-syscall.h b/include/asm-mips/riscos-syscall.h deleted file mode 100644 index 4d8eb15461eb..000000000000 --- a/include/asm-mips/riscos-syscall.h +++ /dev/null | |||
@@ -1,979 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1995, 96, 97, 98, 99, 2000 by Ralf Baechle | ||
7 | */ | ||
8 | #ifndef _ASM_RISCOS_SYSCALL_H | ||
9 | #define _ASM_RISCOS_SYSCALL_H | ||
10 | |||
11 | /* | ||
12 | * The syscalls 0 - 3999 are reserved for a down to the root syscall | ||
13 | * compatibility with RISC/os and IRIX. We'll see how to deal with the | ||
14 | * various "real" BSD variants like Ultrix, NetBSD ... | ||
15 | */ | ||
16 | |||
17 | /* | ||
18 | * SVR4 syscalls are in the range from 1 to 999 | ||
19 | */ | ||
20 | #define __NR_SVR4 0 | ||
21 | #define __NR_SVR4_syscall (__NR_SVR4 + 0) | ||
22 | #define __NR_SVR4_exit (__NR_SVR4 + 1) | ||
23 | #define __NR_SVR4_fork (__NR_SVR4 + 2) | ||
24 | #define __NR_SVR4_read (__NR_SVR4 + 3) | ||
25 | #define __NR_SVR4_write (__NR_SVR4 + 4) | ||
26 | #define __NR_SVR4_open (__NR_SVR4 + 5) | ||
27 | #define __NR_SVR4_close (__NR_SVR4 + 6) | ||
28 | #define __NR_SVR4_wait (__NR_SVR4 + 7) | ||
29 | #define __NR_SVR4_creat (__NR_SVR4 + 8) | ||
30 | #define __NR_SVR4_link (__NR_SVR4 + 9) | ||
31 | #define __NR_SVR4_unlink (__NR_SVR4 + 10) | ||
32 | #define __NR_SVR4_exec (__NR_SVR4 + 11) | ||
33 | #define __NR_SVR4_chdir (__NR_SVR4 + 12) | ||
34 | #define __NR_SVR4_gtime (__NR_SVR4 + 13) | ||
35 | #define __NR_SVR4_mknod (__NR_SVR4 + 14) | ||
36 | #define __NR_SVR4_chmod (__NR_SVR4 + 15) | ||
37 | #define __NR_SVR4_chown (__NR_SVR4 + 16) | ||
38 | #define __NR_SVR4_sbreak (__NR_SVR4 + 17) | ||
39 | #define __NR_SVR4_stat (__NR_SVR4 + 18) | ||
40 | #define __NR_SVR4_lseek (__NR_SVR4 + 19) | ||
41 | #define __NR_SVR4_getpid (__NR_SVR4 + 20) | ||
42 | #define __NR_SVR4_mount (__NR_SVR4 + 21) | ||
43 | #define __NR_SVR4_umount (__NR_SVR4 + 22) | ||
44 | #define __NR_SVR4_setuid (__NR_SVR4 + 23) | ||
45 | #define __NR_SVR4_getuid (__NR_SVR4 + 24) | ||
46 | #define __NR_SVR4_stime (__NR_SVR4 + 25) | ||
47 | #define __NR_SVR4_ptrace (__NR_SVR4 + 26) | ||
48 | #define __NR_SVR4_alarm (__NR_SVR4 + 27) | ||
49 | #define __NR_SVR4_fstat (__NR_SVR4 + 28) | ||
50 | #define __NR_SVR4_pause (__NR_SVR4 + 29) | ||
51 | #define __NR_SVR4_utime (__NR_SVR4 + 30) | ||
52 | #define __NR_SVR4_stty (__NR_SVR4 + 31) | ||
53 | #define __NR_SVR4_gtty (__NR_SVR4 + 32) | ||
54 | #define __NR_SVR4_access (__NR_SVR4 + 33) | ||
55 | #define __NR_SVR4_nice (__NR_SVR4 + 34) | ||
56 | #define __NR_SVR4_statfs (__NR_SVR4 + 35) | ||
57 | #define __NR_SVR4_sync (__NR_SVR4 + 36) | ||
58 | #define __NR_SVR4_kill (__NR_SVR4 + 37) | ||
59 | #define __NR_SVR4_fstatfs (__NR_SVR4 + 38) | ||
60 | #define __NR_SVR4_setpgrp (__NR_SVR4 + 39) | ||
61 | #define __NR_SVR4_cxenix (__NR_SVR4 + 40) | ||
62 | #define __NR_SVR4_dup (__NR_SVR4 + 41) | ||
63 | #define __NR_SVR4_pipe (__NR_SVR4 + 42) | ||
64 | #define __NR_SVR4_times (__NR_SVR4 + 43) | ||
65 | #define __NR_SVR4_profil (__NR_SVR4 + 44) | ||
66 | #define __NR_SVR4_plock (__NR_SVR4 + 45) | ||
67 | #define __NR_SVR4_setgid (__NR_SVR4 + 46) | ||
68 | #define __NR_SVR4_getgid (__NR_SVR4 + 47) | ||
69 | #define __NR_SVR4_sig (__NR_SVR4 + 48) | ||
70 | #define __NR_SVR4_msgsys (__NR_SVR4 + 49) | ||
71 | #define __NR_SVR4_sysmips (__NR_SVR4 + 50) | ||
72 | #define __NR_SVR4_sysacct (__NR_SVR4 + 51) | ||
73 | #define __NR_SVR4_shmsys (__NR_SVR4 + 52) | ||
74 | #define __NR_SVR4_semsys (__NR_SVR4 + 53) | ||
75 | #define __NR_SVR4_ioctl (__NR_SVR4 + 54) | ||
76 | #define __NR_SVR4_uadmin (__NR_SVR4 + 55) | ||
77 | #define __NR_SVR4_exch (__NR_SVR4 + 56) | ||
78 | #define __NR_SVR4_utssys (__NR_SVR4 + 57) | ||
79 | #define __NR_SVR4_fsync (__NR_SVR4 + 58) | ||
80 | #define __NR_SVR4_exece (__NR_SVR4 + 59) | ||
81 | #define __NR_SVR4_umask (__NR_SVR4 + 60) | ||
82 | #define __NR_SVR4_chroot (__NR_SVR4 + 61) | ||
83 | #define __NR_SVR4_fcntl (__NR_SVR4 + 62) | ||
84 | #define __NR_SVR4_ulimit (__NR_SVR4 + 63) | ||
85 | #define __NR_SVR4_reserved1 (__NR_SVR4 + 64) | ||
86 | #define __NR_SVR4_reserved2 (__NR_SVR4 + 65) | ||
87 | #define __NR_SVR4_reserved3 (__NR_SVR4 + 66) | ||
88 | #define __NR_SVR4_reserved4 (__NR_SVR4 + 67) | ||
89 | #define __NR_SVR4_reserved5 (__NR_SVR4 + 68) | ||
90 | #define __NR_SVR4_reserved6 (__NR_SVR4 + 69) | ||
91 | #define __NR_SVR4_advfs (__NR_SVR4 + 70) | ||
92 | #define __NR_SVR4_unadvfs (__NR_SVR4 + 71) | ||
93 | #define __NR_SVR4_unused1 (__NR_SVR4 + 72) | ||
94 | #define __NR_SVR4_unused2 (__NR_SVR4 + 73) | ||
95 | #define __NR_SVR4_rfstart (__NR_SVR4 + 74) | ||
96 | #define __NR_SVR4_unused3 (__NR_SVR4 + 75) | ||
97 | #define __NR_SVR4_rdebug (__NR_SVR4 + 76) | ||
98 | #define __NR_SVR4_rfstop (__NR_SVR4 + 77) | ||
99 | #define __NR_SVR4_rfsys (__NR_SVR4 + 78) | ||
100 | #define __NR_SVR4_rmdir (__NR_SVR4 + 79) | ||
101 | #define __NR_SVR4_mkdir (__NR_SVR4 + 80) | ||
102 | #define __NR_SVR4_getdents (__NR_SVR4 + 81) | ||
103 | #define __NR_SVR4_libattach (__NR_SVR4 + 82) | ||
104 | #define __NR_SVR4_libdetach (__NR_SVR4 + 83) | ||
105 | #define __NR_SVR4_sysfs (__NR_SVR4 + 84) | ||
106 | #define __NR_SVR4_getmsg (__NR_SVR4 + 85) | ||
107 | #define __NR_SVR4_putmsg (__NR_SVR4 + 86) | ||
108 | #define __NR_SVR4_poll (__NR_SVR4 + 87) | ||
109 | #define __NR_SVR4_lstat (__NR_SVR4 + 88) | ||
110 | #define __NR_SVR4_symlink (__NR_SVR4 + 89) | ||
111 | #define __NR_SVR4_readlink (__NR_SVR4 + 90) | ||
112 | #define __NR_SVR4_setgroups (__NR_SVR4 + 91) | ||
113 | #define __NR_SVR4_getgroups (__NR_SVR4 + 92) | ||
114 | #define __NR_SVR4_fchmod (__NR_SVR4 + 93) | ||
115 | #define __NR_SVR4_fchown (__NR_SVR4 + 94) | ||
116 | #define __NR_SVR4_sigprocmask (__NR_SVR4 + 95) | ||
117 | #define __NR_SVR4_sigsuspend (__NR_SVR4 + 96) | ||
118 | #define __NR_SVR4_sigaltstack (__NR_SVR4 + 97) | ||
119 | #define __NR_SVR4_sigaction (__NR_SVR4 + 98) | ||
120 | #define __NR_SVR4_sigpending (__NR_SVR4 + 99) | ||
121 | #define __NR_SVR4_setcontext (__NR_SVR4 + 100) | ||
122 | #define __NR_SVR4_evsys (__NR_SVR4 + 101) | ||
123 | #define __NR_SVR4_evtrapret (__NR_SVR4 + 102) | ||
124 | #define __NR_SVR4_statvfs (__NR_SVR4 + 103) | ||
125 | #define __NR_SVR4_fstatvfs (__NR_SVR4 + 104) | ||
126 | #define __NR_SVR4_reserved7 (__NR_SVR4 + 105) | ||
127 | #define __NR_SVR4_nfssys (__NR_SVR4 + 106) | ||
128 | #define __NR_SVR4_waitid (__NR_SVR4 + 107) | ||
129 | #define __NR_SVR4_sigsendset (__NR_SVR4 + 108) | ||
130 | #define __NR_SVR4_hrtsys (__NR_SVR4 + 109) | ||
131 | #define __NR_SVR4_acancel (__NR_SVR4 + 110) | ||
132 | #define __NR_SVR4_async (__NR_SVR4 + 111) | ||
133 | #define __NR_SVR4_priocntlset (__NR_SVR4 + 112) | ||
134 | #define __NR_SVR4_pathconf (__NR_SVR4 + 113) | ||
135 | #define __NR_SVR4_mincore (__NR_SVR4 + 114) | ||
136 | #define __NR_SVR4_mmap (__NR_SVR4 + 115) | ||
137 | #define __NR_SVR4_mprotect (__NR_SVR4 + 116) | ||
138 | #define __NR_SVR4_munmap (__NR_SVR4 + 117) | ||
139 | #define __NR_SVR4_fpathconf (__NR_SVR4 + 118) | ||
140 | #define __NR_SVR4_vfork (__NR_SVR4 + 119) | ||
141 | #define __NR_SVR4_fchdir (__NR_SVR4 + 120) | ||
142 | #define __NR_SVR4_readv (__NR_SVR4 + 121) | ||
143 | #define __NR_SVR4_writev (__NR_SVR4 + 122) | ||
144 | #define __NR_SVR4_xstat (__NR_SVR4 + 123) | ||
145 | #define __NR_SVR4_lxstat (__NR_SVR4 + 124) | ||
146 | #define __NR_SVR4_fxstat (__NR_SVR4 + 125) | ||
147 | #define __NR_SVR4_xmknod (__NR_SVR4 + 126) | ||
148 | #define __NR_SVR4_clocal (__NR_SVR4 + 127) | ||
149 | #define __NR_SVR4_setrlimit (__NR_SVR4 + 128) | ||
150 | #define __NR_SVR4_getrlimit (__NR_SVR4 + 129) | ||
151 | #define __NR_SVR4_lchown (__NR_SVR4 + 130) | ||
152 | #define __NR_SVR4_memcntl (__NR_SVR4 + 131) | ||
153 | #define __NR_SVR4_getpmsg (__NR_SVR4 + 132) | ||
154 | #define __NR_SVR4_putpmsg (__NR_SVR4 + 133) | ||
155 | #define __NR_SVR4_rename (__NR_SVR4 + 134) | ||
156 | #define __NR_SVR4_nuname (__NR_SVR4 + 135) | ||
157 | #define __NR_SVR4_setegid (__NR_SVR4 + 136) | ||
158 | #define __NR_SVR4_sysconf (__NR_SVR4 + 137) | ||
159 | #define __NR_SVR4_adjtime (__NR_SVR4 + 138) | ||
160 | #define __NR_SVR4_sysinfo (__NR_SVR4 + 139) | ||
161 | #define __NR_SVR4_reserved8 (__NR_SVR4 + 140) | ||
162 | #define __NR_SVR4_seteuid (__NR_SVR4 + 141) | ||
163 | #define __NR_SVR4_PYRAMID_statis (__NR_SVR4 + 142) | ||
164 | #define __NR_SVR4_PYRAMID_tuning (__NR_SVR4 + 143) | ||
165 | #define __NR_SVR4_PYRAMID_forcerr (__NR_SVR4 + 144) | ||
166 | #define __NR_SVR4_PYRAMID_mpcntl (__NR_SVR4 + 145) | ||
167 | #define __NR_SVR4_reserved9 (__NR_SVR4 + 146) | ||
168 | #define __NR_SVR4_reserved10 (__NR_SVR4 + 147) | ||
169 | #define __NR_SVR4_reserved11 (__NR_SVR4 + 148) | ||
170 | #define __NR_SVR4_reserved12 (__NR_SVR4 + 149) | ||
171 | #define __NR_SVR4_reserved13 (__NR_SVR4 + 150) | ||
172 | #define __NR_SVR4_reserved14 (__NR_SVR4 + 151) | ||
173 | #define __NR_SVR4_reserved15 (__NR_SVR4 + 152) | ||
174 | #define __NR_SVR4_reserved16 (__NR_SVR4 + 153) | ||
175 | #define __NR_SVR4_reserved17 (__NR_SVR4 + 154) | ||
176 | #define __NR_SVR4_reserved18 (__NR_SVR4 + 155) | ||
177 | #define __NR_SVR4_reserved19 (__NR_SVR4 + 156) | ||
178 | #define __NR_SVR4_reserved20 (__NR_SVR4 + 157) | ||
179 | #define __NR_SVR4_reserved21 (__NR_SVR4 + 158) | ||
180 | #define __NR_SVR4_reserved22 (__NR_SVR4 + 159) | ||
181 | #define __NR_SVR4_reserved23 (__NR_SVR4 + 160) | ||
182 | #define __NR_SVR4_reserved24 (__NR_SVR4 + 161) | ||
183 | #define __NR_SVR4_reserved25 (__NR_SVR4 + 162) | ||
184 | #define __NR_SVR4_reserved26 (__NR_SVR4 + 163) | ||
185 | #define __NR_SVR4_reserved27 (__NR_SVR4 + 164) | ||
186 | #define __NR_SVR4_reserved28 (__NR_SVR4 + 165) | ||
187 | #define __NR_SVR4_reserved29 (__NR_SVR4 + 166) | ||
188 | #define __NR_SVR4_reserved30 (__NR_SVR4 + 167) | ||
189 | #define __NR_SVR4_reserved31 (__NR_SVR4 + 168) | ||
190 | #define __NR_SVR4_reserved32 (__NR_SVR4 + 169) | ||
191 | #define __NR_SVR4_reserved33 (__NR_SVR4 + 170) | ||
192 | #define __NR_SVR4_reserved34 (__NR_SVR4 + 171) | ||
193 | #define __NR_SVR4_reserved35 (__NR_SVR4 + 172) | ||
194 | #define __NR_SVR4_reserved36 (__NR_SVR4 + 173) | ||
195 | #define __NR_SVR4_reserved37 (__NR_SVR4 + 174) | ||
196 | #define __NR_SVR4_reserved38 (__NR_SVR4 + 175) | ||
197 | #define __NR_SVR4_reserved39 (__NR_SVR4 + 176) | ||
198 | #define __NR_SVR4_reserved40 (__NR_SVR4 + 177) | ||
199 | #define __NR_SVR4_reserved41 (__NR_SVR4 + 178) | ||
200 | #define __NR_SVR4_reserved42 (__NR_SVR4 + 179) | ||
201 | #define __NR_SVR4_reserved43 (__NR_SVR4 + 180) | ||
202 | #define __NR_SVR4_reserved44 (__NR_SVR4 + 181) | ||
203 | #define __NR_SVR4_reserved45 (__NR_SVR4 + 182) | ||
204 | #define __NR_SVR4_reserved46 (__NR_SVR4 + 183) | ||
205 | #define __NR_SVR4_reserved47 (__NR_SVR4 + 184) | ||
206 | #define __NR_SVR4_reserved48 (__NR_SVR4 + 185) | ||
207 | #define __NR_SVR4_reserved49 (__NR_SVR4 + 186) | ||
208 | #define __NR_SVR4_reserved50 (__NR_SVR4 + 187) | ||
209 | #define __NR_SVR4_reserved51 (__NR_SVR4 + 188) | ||
210 | #define __NR_SVR4_reserved52 (__NR_SVR4 + 189) | ||
211 | #define __NR_SVR4_reserved53 (__NR_SVR4 + 190) | ||
212 | #define __NR_SVR4_reserved54 (__NR_SVR4 + 191) | ||
213 | #define __NR_SVR4_reserved55 (__NR_SVR4 + 192) | ||
214 | #define __NR_SVR4_reserved56 (__NR_SVR4 + 193) | ||
215 | #define __NR_SVR4_reserved57 (__NR_SVR4 + 194) | ||
216 | #define __NR_SVR4_reserved58 (__NR_SVR4 + 195) | ||
217 | #define __NR_SVR4_reserved59 (__NR_SVR4 + 196) | ||
218 | #define __NR_SVR4_reserved60 (__NR_SVR4 + 197) | ||
219 | #define __NR_SVR4_reserved61 (__NR_SVR4 + 198) | ||
220 | #define __NR_SVR4_reserved62 (__NR_SVR4 + 199) | ||
221 | #define __NR_SVR4_reserved63 (__NR_SVR4 + 200) | ||
222 | #define __NR_SVR4_aread (__NR_SVR4 + 201) | ||
223 | #define __NR_SVR4_awrite (__NR_SVR4 + 202) | ||
224 | #define __NR_SVR4_listio (__NR_SVR4 + 203) | ||
225 | #define __NR_SVR4_mips_acancel (__NR_SVR4 + 204) | ||
226 | #define __NR_SVR4_astatus (__NR_SVR4 + 205) | ||
227 | #define __NR_SVR4_await (__NR_SVR4 + 206) | ||
228 | #define __NR_SVR4_areadv (__NR_SVR4 + 207) | ||
229 | #define __NR_SVR4_awritev (__NR_SVR4 + 208) | ||
230 | #define __NR_SVR4_MIPS_reserved1 (__NR_SVR4 + 209) | ||
231 | #define __NR_SVR4_MIPS_reserved2 (__NR_SVR4 + 210) | ||
232 | #define __NR_SVR4_MIPS_reserved3 (__NR_SVR4 + 211) | ||
233 | #define __NR_SVR4_MIPS_reserved4 (__NR_SVR4 + 212) | ||
234 | #define __NR_SVR4_MIPS_reserved5 (__NR_SVR4 + 213) | ||
235 | #define __NR_SVR4_MIPS_reserved6 (__NR_SVR4 + 214) | ||
236 | #define __NR_SVR4_MIPS_reserved7 (__NR_SVR4 + 215) | ||
237 | #define __NR_SVR4_MIPS_reserved8 (__NR_SVR4 + 216) | ||
238 | #define __NR_SVR4_MIPS_reserved9 (__NR_SVR4 + 217) | ||
239 | #define __NR_SVR4_MIPS_reserved10 (__NR_SVR4 + 218) | ||
240 | #define __NR_SVR4_MIPS_reserved11 (__NR_SVR4 + 219) | ||
241 | #define __NR_SVR4_MIPS_reserved12 (__NR_SVR4 + 220) | ||
242 | #define __NR_SVR4_CDC_reserved1 (__NR_SVR4 + 221) | ||
243 | #define __NR_SVR4_CDC_reserved2 (__NR_SVR4 + 222) | ||
244 | #define __NR_SVR4_CDC_reserved3 (__NR_SVR4 + 223) | ||
245 | #define __NR_SVR4_CDC_reserved4 (__NR_SVR4 + 224) | ||
246 | #define __NR_SVR4_CDC_reserved5 (__NR_SVR4 + 225) | ||
247 | #define __NR_SVR4_CDC_reserved6 (__NR_SVR4 + 226) | ||
248 | #define __NR_SVR4_CDC_reserved7 (__NR_SVR4 + 227) | ||
249 | #define __NR_SVR4_CDC_reserved8 (__NR_SVR4 + 228) | ||
250 | #define __NR_SVR4_CDC_reserved9 (__NR_SVR4 + 229) | ||
251 | #define __NR_SVR4_CDC_reserved10 (__NR_SVR4 + 230) | ||
252 | #define __NR_SVR4_CDC_reserved11 (__NR_SVR4 + 231) | ||
253 | #define __NR_SVR4_CDC_reserved12 (__NR_SVR4 + 232) | ||
254 | #define __NR_SVR4_CDC_reserved13 (__NR_SVR4 + 233) | ||
255 | #define __NR_SVR4_CDC_reserved14 (__NR_SVR4 + 234) | ||
256 | #define __NR_SVR4_CDC_reserved15 (__NR_SVR4 + 235) | ||
257 | #define __NR_SVR4_CDC_reserved16 (__NR_SVR4 + 236) | ||
258 | #define __NR_SVR4_CDC_reserved17 (__NR_SVR4 + 237) | ||
259 | #define __NR_SVR4_CDC_reserved18 (__NR_SVR4 + 238) | ||
260 | #define __NR_SVR4_CDC_reserved19 (__NR_SVR4 + 239) | ||
261 | #define __NR_SVR4_CDC_reserved20 (__NR_SVR4 + 240) | ||
262 | |||
263 | /* | ||
264 | * SYS V syscalls are in the range from 1000 to 1999 | ||
265 | */ | ||
266 | #define __NR_SYSV 1000 | ||
267 | #define __NR_SYSV_syscall (__NR_SYSV + 0) | ||
268 | #define __NR_SYSV_exit (__NR_SYSV + 1) | ||
269 | #define __NR_SYSV_fork (__NR_SYSV + 2) | ||
270 | #define __NR_SYSV_read (__NR_SYSV + 3) | ||
271 | #define __NR_SYSV_write (__NR_SYSV + 4) | ||
272 | #define __NR_SYSV_open (__NR_SYSV + 5) | ||
273 | #define __NR_SYSV_close (__NR_SYSV + 6) | ||
274 | #define __NR_SYSV_wait (__NR_SYSV + 7) | ||
275 | #define __NR_SYSV_creat (__NR_SYSV + 8) | ||
276 | #define __NR_SYSV_link (__NR_SYSV + 9) | ||
277 | #define __NR_SYSV_unlink (__NR_SYSV + 10) | ||
278 | #define __NR_SYSV_execv (__NR_SYSV + 11) | ||
279 | #define __NR_SYSV_chdir (__NR_SYSV + 12) | ||
280 | #define __NR_SYSV_time (__NR_SYSV + 13) | ||
281 | #define __NR_SYSV_mknod (__NR_SYSV + 14) | ||
282 | #define __NR_SYSV_chmod (__NR_SYSV + 15) | ||
283 | #define __NR_SYSV_chown (__NR_SYSV + 16) | ||
284 | #define __NR_SYSV_brk (__NR_SYSV + 17) | ||
285 | #define __NR_SYSV_stat (__NR_SYSV + 18) | ||
286 | #define __NR_SYSV_lseek (__NR_SYSV + 19) | ||
287 | #define __NR_SYSV_getpid (__NR_SYSV + 20) | ||
288 | #define __NR_SYSV_mount (__NR_SYSV + 21) | ||
289 | #define __NR_SYSV_umount (__NR_SYSV + 22) | ||
290 | #define __NR_SYSV_setuid (__NR_SYSV + 23) | ||
291 | #define __NR_SYSV_getuid (__NR_SYSV + 24) | ||
292 | #define __NR_SYSV_stime (__NR_SYSV + 25) | ||
293 | #define __NR_SYSV_ptrace (__NR_SYSV + 26) | ||
294 | #define __NR_SYSV_alarm (__NR_SYSV + 27) | ||
295 | #define __NR_SYSV_fstat (__NR_SYSV + 28) | ||
296 | #define __NR_SYSV_pause (__NR_SYSV + 29) | ||
297 | #define __NR_SYSV_utime (__NR_SYSV + 30) | ||
298 | #define __NR_SYSV_stty (__NR_SYSV + 31) | ||
299 | #define __NR_SYSV_gtty (__NR_SYSV + 32) | ||
300 | #define __NR_SYSV_access (__NR_SYSV + 33) | ||
301 | #define __NR_SYSV_nice (__NR_SYSV + 34) | ||
302 | #define __NR_SYSV_statfs (__NR_SYSV + 35) | ||
303 | #define __NR_SYSV_sync (__NR_SYSV + 36) | ||
304 | #define __NR_SYSV_kill (__NR_SYSV + 37) | ||
305 | #define __NR_SYSV_fstatfs (__NR_SYSV + 38) | ||
306 | #define __NR_SYSV_setpgrp (__NR_SYSV + 39) | ||
307 | #define __NR_SYSV_syssgi (__NR_SYSV + 40) | ||
308 | #define __NR_SYSV_dup (__NR_SYSV + 41) | ||
309 | #define __NR_SYSV_pipe (__NR_SYSV + 42) | ||
310 | #define __NR_SYSV_times (__NR_SYSV + 43) | ||
311 | #define __NR_SYSV_profil (__NR_SYSV + 44) | ||
312 | #define __NR_SYSV_plock (__NR_SYSV + 45) | ||
313 | #define __NR_SYSV_setgid (__NR_SYSV + 46) | ||
314 | #define __NR_SYSV_getgid (__NR_SYSV + 47) | ||
315 | #define __NR_SYSV_sig (__NR_SYSV + 48) | ||
316 | #define __NR_SYSV_msgsys (__NR_SYSV + 49) | ||
317 | #define __NR_SYSV_sysmips (__NR_SYSV + 50) | ||
318 | #define __NR_SYSV_acct (__NR_SYSV + 51) | ||
319 | #define __NR_SYSV_shmsys (__NR_SYSV + 52) | ||
320 | #define __NR_SYSV_semsys (__NR_SYSV + 53) | ||
321 | #define __NR_SYSV_ioctl (__NR_SYSV + 54) | ||
322 | #define __NR_SYSV_uadmin (__NR_SYSV + 55) | ||
323 | #define __NR_SYSV_sysmp (__NR_SYSV + 56) | ||
324 | #define __NR_SYSV_utssys (__NR_SYSV + 57) | ||
325 | #define __NR_SYSV_USG_reserved1 (__NR_SYSV + 58) | ||
326 | #define __NR_SYSV_execve (__NR_SYSV + 59) | ||
327 | #define __NR_SYSV_umask (__NR_SYSV + 60) | ||
328 | #define __NR_SYSV_chroot (__NR_SYSV + 61) | ||
329 | #define __NR_SYSV_fcntl (__NR_SYSV + 62) | ||
330 | #define __NR_SYSV_ulimit (__NR_SYSV + 63) | ||
331 | #define __NR_SYSV_SAFARI4_reserved1 (__NR_SYSV + 64) | ||
332 | #define __NR_SYSV_SAFARI4_reserved2 (__NR_SYSV + 65) | ||
333 | #define __NR_SYSV_SAFARI4_reserved3 (__NR_SYSV + 66) | ||
334 | #define __NR_SYSV_SAFARI4_reserved4 (__NR_SYSV + 67) | ||
335 | #define __NR_SYSV_SAFARI4_reserved5 (__NR_SYSV + 68) | ||
336 | #define __NR_SYSV_SAFARI4_reserved6 (__NR_SYSV + 69) | ||
337 | #define __NR_SYSV_advfs (__NR_SYSV + 70) | ||
338 | #define __NR_SYSV_unadvfs (__NR_SYSV + 71) | ||
339 | #define __NR_SYSV_rmount (__NR_SYSV + 72) | ||
340 | #define __NR_SYSV_rumount (__NR_SYSV + 73) | ||
341 | #define __NR_SYSV_rfstart (__NR_SYSV + 74) | ||
342 | #define __NR_SYSV_getrlimit64 (__NR_SYSV + 75) | ||
343 | #define __NR_SYSV_setrlimit64 (__NR_SYSV + 76) | ||
344 | #define __NR_SYSV_nanosleep (__NR_SYSV + 77) | ||
345 | #define __NR_SYSV_lseek64 (__NR_SYSV + 78) | ||
346 | #define __NR_SYSV_rmdir (__NR_SYSV + 79) | ||
347 | #define __NR_SYSV_mkdir (__NR_SYSV + 80) | ||
348 | #define __NR_SYSV_getdents (__NR_SYSV + 81) | ||
349 | #define __NR_SYSV_sginap (__NR_SYSV + 82) | ||
350 | #define __NR_SYSV_sgikopt (__NR_SYSV + 83) | ||
351 | #define __NR_SYSV_sysfs (__NR_SYSV + 84) | ||
352 | #define __NR_SYSV_getmsg (__NR_SYSV + 85) | ||
353 | #define __NR_SYSV_putmsg (__NR_SYSV + 86) | ||
354 | #define __NR_SYSV_poll (__NR_SYSV + 87) | ||
355 | #define __NR_SYSV_sigreturn (__NR_SYSV + 88) | ||
356 | #define __NR_SYSV_accept (__NR_SYSV + 89) | ||
357 | #define __NR_SYSV_bind (__NR_SYSV + 90) | ||
358 | #define __NR_SYSV_connect (__NR_SYSV + 91) | ||
359 | #define __NR_SYSV_gethostid (__NR_SYSV + 92) | ||
360 | #define __NR_SYSV_getpeername (__NR_SYSV + 93) | ||
361 | #define __NR_SYSV_getsockname (__NR_SYSV + 94) | ||
362 | #define __NR_SYSV_getsockopt (__NR_SYSV + 95) | ||
363 | #define __NR_SYSV_listen (__NR_SYSV + 96) | ||
364 | #define __NR_SYSV_recv (__NR_SYSV + 97) | ||
365 | #define __NR_SYSV_recvfrom (__NR_SYSV + 98) | ||
366 | #define __NR_SYSV_recvmsg (__NR_SYSV + 99) | ||
367 | #define __NR_SYSV_select (__NR_SYSV + 100) | ||
368 | #define __NR_SYSV_send (__NR_SYSV + 101) | ||
369 | #define __NR_SYSV_sendmsg (__NR_SYSV + 102) | ||
370 | #define __NR_SYSV_sendto (__NR_SYSV + 103) | ||
371 | #define __NR_SYSV_sethostid (__NR_SYSV + 104) | ||
372 | #define __NR_SYSV_setsockopt (__NR_SYSV + 105) | ||
373 | #define __NR_SYSV_shutdown (__NR_SYSV + 106) | ||
374 | #define __NR_SYSV_socket (__NR_SYSV + 107) | ||
375 | #define __NR_SYSV_gethostname (__NR_SYSV + 108) | ||
376 | #define __NR_SYSV_sethostname (__NR_SYSV + 109) | ||
377 | #define __NR_SYSV_getdomainname (__NR_SYSV + 110) | ||
378 | #define __NR_SYSV_setdomainname (__NR_SYSV + 111) | ||
379 | #define __NR_SYSV_truncate (__NR_SYSV + 112) | ||
380 | #define __NR_SYSV_ftruncate (__NR_SYSV + 113) | ||
381 | #define __NR_SYSV_rename (__NR_SYSV + 114) | ||
382 | #define __NR_SYSV_symlink (__NR_SYSV + 115) | ||
383 | #define __NR_SYSV_readlink (__NR_SYSV + 116) | ||
384 | #define __NR_SYSV_lstat (__NR_SYSV + 117) | ||
385 | #define __NR_SYSV_nfsmount (__NR_SYSV + 118) | ||
386 | #define __NR_SYSV_nfssvc (__NR_SYSV + 119) | ||
387 | #define __NR_SYSV_getfh (__NR_SYSV + 120) | ||
388 | #define __NR_SYSV_async_daemon (__NR_SYSV + 121) | ||
389 | #define __NR_SYSV_exportfs (__NR_SYSV + 122) | ||
390 | #define __NR_SYSV_setregid (__NR_SYSV + 123) | ||
391 | #define __NR_SYSV_setreuid (__NR_SYSV + 124) | ||
392 | #define __NR_SYSV_getitimer (__NR_SYSV + 125) | ||
393 | #define __NR_SYSV_setitimer (__NR_SYSV + 126) | ||
394 | #define __NR_SYSV_adjtime (__NR_SYSV + 127) | ||
395 | #define __NR_SYSV_BSD_getime (__NR_SYSV + 128) | ||
396 | #define __NR_SYSV_sproc (__NR_SYSV + 129) | ||
397 | #define __NR_SYSV_prctl (__NR_SYSV + 130) | ||
398 | #define __NR_SYSV_procblk (__NR_SYSV + 131) | ||
399 | #define __NR_SYSV_sprocsp (__NR_SYSV + 132) | ||
400 | #define __NR_SYSV_sgigsc (__NR_SYSV + 133) | ||
401 | #define __NR_SYSV_mmap (__NR_SYSV + 134) | ||
402 | #define __NR_SYSV_munmap (__NR_SYSV + 135) | ||
403 | #define __NR_SYSV_mprotect (__NR_SYSV + 136) | ||
404 | #define __NR_SYSV_msync (__NR_SYSV + 137) | ||
405 | #define __NR_SYSV_madvise (__NR_SYSV + 138) | ||
406 | #define __NR_SYSV_pagelock (__NR_SYSV + 139) | ||
407 | #define __NR_SYSV_getpagesize (__NR_SYSV + 140) | ||
408 | #define __NR_SYSV_quotactl (__NR_SYSV + 141) | ||
409 | #define __NR_SYSV_libdetach (__NR_SYSV + 142) | ||
410 | #define __NR_SYSV_BSDgetpgrp (__NR_SYSV + 143) | ||
411 | #define __NR_SYSV_BSDsetpgrp (__NR_SYSV + 144) | ||
412 | #define __NR_SYSV_vhangup (__NR_SYSV + 145) | ||
413 | #define __NR_SYSV_fsync (__NR_SYSV + 146) | ||
414 | #define __NR_SYSV_fchdir (__NR_SYSV + 147) | ||
415 | #define __NR_SYSV_getrlimit (__NR_SYSV + 148) | ||
416 | #define __NR_SYSV_setrlimit (__NR_SYSV + 149) | ||
417 | #define __NR_SYSV_cacheflush (__NR_SYSV + 150) | ||
418 | #define __NR_SYSV_cachectl (__NR_SYSV + 151) | ||
419 | #define __NR_SYSV_fchown (__NR_SYSV + 152) | ||
420 | #define __NR_SYSV_fchmod (__NR_SYSV + 153) | ||
421 | #define __NR_SYSV_wait3 (__NR_SYSV + 154) | ||
422 | #define __NR_SYSV_socketpair (__NR_SYSV + 155) | ||
423 | #define __NR_SYSV_sysinfo (__NR_SYSV + 156) | ||
424 | #define __NR_SYSV_nuname (__NR_SYSV + 157) | ||
425 | #define __NR_SYSV_xstat (__NR_SYSV + 158) | ||
426 | #define __NR_SYSV_lxstat (__NR_SYSV + 159) | ||
427 | #define __NR_SYSV_fxstat (__NR_SYSV + 160) | ||
428 | #define __NR_SYSV_xmknod (__NR_SYSV + 161) | ||
429 | #define __NR_SYSV_ksigaction (__NR_SYSV + 162) | ||
430 | #define __NR_SYSV_sigpending (__NR_SYSV + 163) | ||
431 | #define __NR_SYSV_sigprocmask (__NR_SYSV + 164) | ||
432 | #define __NR_SYSV_sigsuspend (__NR_SYSV + 165) | ||
433 | #define __NR_SYSV_sigpoll (__NR_SYSV + 166) | ||
434 | #define __NR_SYSV_swapctl (__NR_SYSV + 167) | ||
435 | #define __NR_SYSV_getcontext (__NR_SYSV + 168) | ||
436 | #define __NR_SYSV_setcontext (__NR_SYSV + 169) | ||
437 | #define __NR_SYSV_waitsys (__NR_SYSV + 170) | ||
438 | #define __NR_SYSV_sigstack (__NR_SYSV + 171) | ||
439 | #define __NR_SYSV_sigaltstack (__NR_SYSV + 172) | ||
440 | #define __NR_SYSV_sigsendset (__NR_SYSV + 173) | ||
441 | #define __NR_SYSV_statvfs (__NR_SYSV + 174) | ||
442 | #define __NR_SYSV_fstatvfs (__NR_SYSV + 175) | ||
443 | #define __NR_SYSV_getpmsg (__NR_SYSV + 176) | ||
444 | #define __NR_SYSV_putpmsg (__NR_SYSV + 177) | ||
445 | #define __NR_SYSV_lchown (__NR_SYSV + 178) | ||
446 | #define __NR_SYSV_priocntl (__NR_SYSV + 179) | ||
447 | #define __NR_SYSV_ksigqueue (__NR_SYSV + 180) | ||
448 | #define __NR_SYSV_readv (__NR_SYSV + 181) | ||
449 | #define __NR_SYSV_writev (__NR_SYSV + 182) | ||
450 | #define __NR_SYSV_truncate64 (__NR_SYSV + 183) | ||
451 | #define __NR_SYSV_ftruncate64 (__NR_SYSV + 184) | ||
452 | #define __NR_SYSV_mmap64 (__NR_SYSV + 185) | ||
453 | #define __NR_SYSV_dmi (__NR_SYSV + 186) | ||
454 | #define __NR_SYSV_pread (__NR_SYSV + 187) | ||
455 | #define __NR_SYSV_pwrite (__NR_SYSV + 188) | ||
456 | |||
457 | /* | ||
458 | * BSD 4.3 syscalls are in the range from 2000 to 2999 | ||
459 | */ | ||
460 | #define __NR_BSD43 2000 | ||
461 | #define __NR_BSD43_syscall (__NR_BSD43 + 0) | ||
462 | #define __NR_BSD43_exit (__NR_BSD43 + 1) | ||
463 | #define __NR_BSD43_fork (__NR_BSD43 + 2) | ||
464 | #define __NR_BSD43_read (__NR_BSD43 + 3) | ||
465 | #define __NR_BSD43_write (__NR_BSD43 + 4) | ||
466 | #define __NR_BSD43_open (__NR_BSD43 + 5) | ||
467 | #define __NR_BSD43_close (__NR_BSD43 + 6) | ||
468 | #define __NR_BSD43_wait (__NR_BSD43 + 7) | ||
469 | #define __NR_BSD43_creat (__NR_BSD43 + 8) | ||
470 | #define __NR_BSD43_link (__NR_BSD43 + 9) | ||
471 | #define __NR_BSD43_unlink (__NR_BSD43 + 10) | ||
472 | #define __NR_BSD43_exec (__NR_BSD43 + 11) | ||
473 | #define __NR_BSD43_chdir (__NR_BSD43 + 12) | ||
474 | #define __NR_BSD43_time (__NR_BSD43 + 13) | ||
475 | #define __NR_BSD43_mknod (__NR_BSD43 + 14) | ||
476 | #define __NR_BSD43_chmod (__NR_BSD43 + 15) | ||
477 | #define __NR_BSD43_chown (__NR_BSD43 + 16) | ||
478 | #define __NR_BSD43_sbreak (__NR_BSD43 + 17) | ||
479 | #define __NR_BSD43_oldstat (__NR_BSD43 + 18) | ||
480 | #define __NR_BSD43_lseek (__NR_BSD43 + 19) | ||
481 | #define __NR_BSD43_getpid (__NR_BSD43 + 20) | ||
482 | #define __NR_BSD43_oldmount (__NR_BSD43 + 21) | ||
483 | #define __NR_BSD43_umount (__NR_BSD43 + 22) | ||
484 | #define __NR_BSD43_setuid (__NR_BSD43 + 23) | ||
485 | #define __NR_BSD43_getuid (__NR_BSD43 + 24) | ||
486 | #define __NR_BSD43_stime (__NR_BSD43 + 25) | ||
487 | #define __NR_BSD43_ptrace (__NR_BSD43 + 26) | ||
488 | #define __NR_BSD43_alarm (__NR_BSD43 + 27) | ||
489 | #define __NR_BSD43_oldfstat (__NR_BSD43 + 28) | ||
490 | #define __NR_BSD43_pause (__NR_BSD43 + 29) | ||
491 | #define __NR_BSD43_utime (__NR_BSD43 + 30) | ||
492 | #define __NR_BSD43_stty (__NR_BSD43 + 31) | ||
493 | #define __NR_BSD43_gtty (__NR_BSD43 + 32) | ||
494 | #define __NR_BSD43_access (__NR_BSD43 + 33) | ||
495 | #define __NR_BSD43_nice (__NR_BSD43 + 34) | ||
496 | #define __NR_BSD43_ftime (__NR_BSD43 + 35) | ||
497 | #define __NR_BSD43_sync (__NR_BSD43 + 36) | ||
498 | #define __NR_BSD43_kill (__NR_BSD43 + 37) | ||
499 | #define __NR_BSD43_stat (__NR_BSD43 + 38) | ||
500 | #define __NR_BSD43_oldsetpgrp (__NR_BSD43 + 39) | ||
501 | #define __NR_BSD43_lstat (__NR_BSD43 + 40) | ||
502 | #define __NR_BSD43_dup (__NR_BSD43 + 41) | ||
503 | #define __NR_BSD43_pipe (__NR_BSD43 + 42) | ||
504 | #define __NR_BSD43_times (__NR_BSD43 + 43) | ||
505 | #define __NR_BSD43_profil (__NR_BSD43 + 44) | ||
506 | #define __NR_BSD43_msgsys (__NR_BSD43 + 45) | ||
507 | #define __NR_BSD43_setgid (__NR_BSD43 + 46) | ||
508 | #define __NR_BSD43_getgid (__NR_BSD43 + 47) | ||
509 | #define __NR_BSD43_ssig (__NR_BSD43 + 48) | ||
510 | #define __NR_BSD43_reserved1 (__NR_BSD43 + 49) | ||
511 | #define __NR_BSD43_reserved2 (__NR_BSD43 + 50) | ||
512 | #define __NR_BSD43_sysacct (__NR_BSD43 + 51) | ||
513 | #define __NR_BSD43_phys (__NR_BSD43 + 52) | ||
514 | #define __NR_BSD43_lock (__NR_BSD43 + 53) | ||
515 | #define __NR_BSD43_ioctl (__NR_BSD43 + 54) | ||
516 | #define __NR_BSD43_reboot (__NR_BSD43 + 55) | ||
517 | #define __NR_BSD43_mpxchan (__NR_BSD43 + 56) | ||
518 | #define __NR_BSD43_symlink (__NR_BSD43 + 57) | ||
519 | #define __NR_BSD43_readlink (__NR_BSD43 + 58) | ||
520 | #define __NR_BSD43_execve (__NR_BSD43 + 59) | ||
521 | #define __NR_BSD43_umask (__NR_BSD43 + 60) | ||
522 | #define __NR_BSD43_chroot (__NR_BSD43 + 61) | ||
523 | #define __NR_BSD43_fstat (__NR_BSD43 + 62) | ||
524 | #define __NR_BSD43_reserved3 (__NR_BSD43 + 63) | ||
525 | #define __NR_BSD43_getpagesize (__NR_BSD43 + 64) | ||
526 | #define __NR_BSD43_mremap (__NR_BSD43 + 65) | ||
527 | #define __NR_BSD43_vfork (__NR_BSD43 + 66) | ||
528 | #define __NR_BSD43_vread (__NR_BSD43 + 67) | ||
529 | #define __NR_BSD43_vwrite (__NR_BSD43 + 68) | ||
530 | #define __NR_BSD43_sbrk (__NR_BSD43 + 69) | ||
531 | #define __NR_BSD43_sstk (__NR_BSD43 + 70) | ||
532 | #define __NR_BSD43_mmap (__NR_BSD43 + 71) | ||
533 | #define __NR_BSD43_vadvise (__NR_BSD43 + 72) | ||
534 | #define __NR_BSD43_munmap (__NR_BSD43 + 73) | ||
535 | #define __NR_BSD43_mprotect (__NR_BSD43 + 74) | ||
536 | #define __NR_BSD43_madvise (__NR_BSD43 + 75) | ||
537 | #define __NR_BSD43_vhangup (__NR_BSD43 + 76) | ||
538 | #define __NR_BSD43_vlimit (__NR_BSD43 + 77) | ||
539 | #define __NR_BSD43_mincore (__NR_BSD43 + 78) | ||
540 | #define __NR_BSD43_getgroups (__NR_BSD43 + 79) | ||
541 | #define __NR_BSD43_setgroups (__NR_BSD43 + 80) | ||
542 | #define __NR_BSD43_getpgrp (__NR_BSD43 + 81) | ||
543 | #define __NR_BSD43_setpgrp (__NR_BSD43 + 82) | ||
544 | #define __NR_BSD43_setitimer (__NR_BSD43 + 83) | ||
545 | #define __NR_BSD43_wait3 (__NR_BSD43 + 84) | ||
546 | #define __NR_BSD43_swapon (__NR_BSD43 + 85) | ||
547 | #define __NR_BSD43_getitimer (__NR_BSD43 + 86) | ||
548 | #define __NR_BSD43_gethostname (__NR_BSD43 + 87) | ||
549 | #define __NR_BSD43_sethostname (__NR_BSD43 + 88) | ||
550 | #define __NR_BSD43_getdtablesize (__NR_BSD43 + 89) | ||
551 | #define __NR_BSD43_dup2 (__NR_BSD43 + 90) | ||
552 | #define __NR_BSD43_getdopt (__NR_BSD43 + 91) | ||
553 | #define __NR_BSD43_fcntl (__NR_BSD43 + 92) | ||
554 | #define __NR_BSD43_select (__NR_BSD43 + 93) | ||
555 | #define __NR_BSD43_setdopt (__NR_BSD43 + 94) | ||
556 | #define __NR_BSD43_fsync (__NR_BSD43 + 95) | ||
557 | #define __NR_BSD43_setpriority (__NR_BSD43 + 96) | ||
558 | #define __NR_BSD43_socket (__NR_BSD43 + 97) | ||
559 | #define __NR_BSD43_connect (__NR_BSD43 + 98) | ||
560 | #define __NR_BSD43_oldaccept (__NR_BSD43 + 99) | ||
561 | #define __NR_BSD43_getpriority (__NR_BSD43 + 100) | ||
562 | #define __NR_BSD43_send (__NR_BSD43 + 101) | ||
563 | #define __NR_BSD43_recv (__NR_BSD43 + 102) | ||
564 | #define __NR_BSD43_sigreturn (__NR_BSD43 + 103) | ||
565 | #define __NR_BSD43_bind (__NR_BSD43 + 104) | ||
566 | #define __NR_BSD43_setsockopt (__NR_BSD43 + 105) | ||
567 | #define __NR_BSD43_listen (__NR_BSD43 + 106) | ||
568 | #define __NR_BSD43_vtimes (__NR_BSD43 + 107) | ||
569 | #define __NR_BSD43_sigvec (__NR_BSD43 + 108) | ||
570 | #define __NR_BSD43_sigblock (__NR_BSD43 + 109) | ||
571 | #define __NR_BSD43_sigsetmask (__NR_BSD43 + 110) | ||
572 | #define __NR_BSD43_sigpause (__NR_BSD43 + 111) | ||
573 | #define __NR_BSD43_sigstack (__NR_BSD43 + 112) | ||
574 | #define __NR_BSD43_oldrecvmsg (__NR_BSD43 + 113) | ||
575 | #define __NR_BSD43_oldsendmsg (__NR_BSD43 + 114) | ||
576 | #define __NR_BSD43_vtrace (__NR_BSD43 + 115) | ||
577 | #define __NR_BSD43_gettimeofday (__NR_BSD43 + 116) | ||
578 | #define __NR_BSD43_getrusage (__NR_BSD43 + 117) | ||
579 | #define __NR_BSD43_getsockopt (__NR_BSD43 + 118) | ||
580 | #define __NR_BSD43_reserved4 (__NR_BSD43 + 119) | ||
581 | #define __NR_BSD43_readv (__NR_BSD43 + 120) | ||
582 | #define __NR_BSD43_writev (__NR_BSD43 + 121) | ||
583 | #define __NR_BSD43_settimeofday (__NR_BSD43 + 122) | ||
584 | #define __NR_BSD43_fchown (__NR_BSD43 + 123) | ||
585 | #define __NR_BSD43_fchmod (__NR_BSD43 + 124) | ||
586 | #define __NR_BSD43_oldrecvfrom (__NR_BSD43 + 125) | ||
587 | #define __NR_BSD43_setreuid (__NR_BSD43 + 126) | ||
588 | #define __NR_BSD43_setregid (__NR_BSD43 + 127) | ||
589 | #define __NR_BSD43_rename (__NR_BSD43 + 128) | ||
590 | #define __NR_BSD43_truncate (__NR_BSD43 + 129) | ||
591 | #define __NR_BSD43_ftruncate (__NR_BSD43 + 130) | ||
592 | #define __NR_BSD43_flock (__NR_BSD43 + 131) | ||
593 | #define __NR_BSD43_semsys (__NR_BSD43 + 132) | ||
594 | #define __NR_BSD43_sendto (__NR_BSD43 + 133) | ||
595 | #define __NR_BSD43_shutdown (__NR_BSD43 + 134) | ||
596 | #define __NR_BSD43_socketpair (__NR_BSD43 + 135) | ||
597 | #define __NR_BSD43_mkdir (__NR_BSD43 + 136) | ||
598 | #define __NR_BSD43_rmdir (__NR_BSD43 + 137) | ||
599 | #define __NR_BSD43_utimes (__NR_BSD43 + 138) | ||
600 | #define __NR_BSD43_sigcleanup (__NR_BSD43 + 139) | ||
601 | #define __NR_BSD43_adjtime (__NR_BSD43 + 140) | ||
602 | #define __NR_BSD43_oldgetpeername (__NR_BSD43 + 141) | ||
603 | #define __NR_BSD43_gethostid (__NR_BSD43 + 142) | ||
604 | #define __NR_BSD43_sethostid (__NR_BSD43 + 143) | ||
605 | #define __NR_BSD43_getrlimit (__NR_BSD43 + 144) | ||
606 | #define __NR_BSD43_setrlimit (__NR_BSD43 + 145) | ||
607 | #define __NR_BSD43_killpg (__NR_BSD43 + 146) | ||
608 | #define __NR_BSD43_shmsys (__NR_BSD43 + 147) | ||
609 | #define __NR_BSD43_quota (__NR_BSD43 + 148) | ||
610 | #define __NR_BSD43_qquota (__NR_BSD43 + 149) | ||
611 | #define __NR_BSD43_oldgetsockname (__NR_BSD43 + 150) | ||
612 | #define __NR_BSD43_sysmips (__NR_BSD43 + 151) | ||
613 | #define __NR_BSD43_cacheflush (__NR_BSD43 + 152) | ||
614 | #define __NR_BSD43_cachectl (__NR_BSD43 + 153) | ||
615 | #define __NR_BSD43_debug (__NR_BSD43 + 154) | ||
616 | #define __NR_BSD43_reserved5 (__NR_BSD43 + 155) | ||
617 | #define __NR_BSD43_reserved6 (__NR_BSD43 + 156) | ||
618 | #define __NR_BSD43_nfs_mount (__NR_BSD43 + 157) | ||
619 | #define __NR_BSD43_nfs_svc (__NR_BSD43 + 158) | ||
620 | #define __NR_BSD43_getdirentries (__NR_BSD43 + 159) | ||
621 | #define __NR_BSD43_statfs (__NR_BSD43 + 160) | ||
622 | #define __NR_BSD43_fstatfs (__NR_BSD43 + 161) | ||
623 | #define __NR_BSD43_unmount (__NR_BSD43 + 162) | ||
624 | #define __NR_BSD43_async_daemon (__NR_BSD43 + 163) | ||
625 | #define __NR_BSD43_nfs_getfh (__NR_BSD43 + 164) | ||
626 | #define __NR_BSD43_getdomainname (__NR_BSD43 + 165) | ||
627 | #define __NR_BSD43_setdomainname (__NR_BSD43 + 166) | ||
628 | #define __NR_BSD43_pcfs_mount (__NR_BSD43 + 167) | ||
629 | #define __NR_BSD43_quotactl (__NR_BSD43 + 168) | ||
630 | #define __NR_BSD43_oldexportfs (__NR_BSD43 + 169) | ||
631 | #define __NR_BSD43_smount (__NR_BSD43 + 170) | ||
632 | #define __NR_BSD43_mipshwconf (__NR_BSD43 + 171) | ||
633 | #define __NR_BSD43_exportfs (__NR_BSD43 + 172) | ||
634 | #define __NR_BSD43_nfsfh_open (__NR_BSD43 + 173) | ||
635 | #define __NR_BSD43_libattach (__NR_BSD43 + 174) | ||
636 | #define __NR_BSD43_libdetach (__NR_BSD43 + 175) | ||
637 | #define __NR_BSD43_accept (__NR_BSD43 + 176) | ||
638 | #define __NR_BSD43_reserved7 (__NR_BSD43 + 177) | ||
639 | #define __NR_BSD43_reserved8 (__NR_BSD43 + 178) | ||
640 | #define __NR_BSD43_recvmsg (__NR_BSD43 + 179) | ||
641 | #define __NR_BSD43_recvfrom (__NR_BSD43 + 180) | ||
642 | #define __NR_BSD43_sendmsg (__NR_BSD43 + 181) | ||
643 | #define __NR_BSD43_getpeername (__NR_BSD43 + 182) | ||
644 | #define __NR_BSD43_getsockname (__NR_BSD43 + 183) | ||
645 | #define __NR_BSD43_aread (__NR_BSD43 + 184) | ||
646 | #define __NR_BSD43_awrite (__NR_BSD43 + 185) | ||
647 | #define __NR_BSD43_listio (__NR_BSD43 + 186) | ||
648 | #define __NR_BSD43_acancel (__NR_BSD43 + 187) | ||
649 | #define __NR_BSD43_astatus (__NR_BSD43 + 188) | ||
650 | #define __NR_BSD43_await (__NR_BSD43 + 189) | ||
651 | #define __NR_BSD43_areadv (__NR_BSD43 + 190) | ||
652 | #define __NR_BSD43_awritev (__NR_BSD43 + 191) | ||
653 | |||
654 | /* | ||
655 | * POSIX syscalls are in the range from 3000 to 3999 | ||
656 | */ | ||
657 | #define __NR_POSIX 3000 | ||
658 | #define __NR_POSIX_syscall (__NR_POSIX + 0) | ||
659 | #define __NR_POSIX_exit (__NR_POSIX + 1) | ||
660 | #define __NR_POSIX_fork (__NR_POSIX + 2) | ||
661 | #define __NR_POSIX_read (__NR_POSIX + 3) | ||
662 | #define __NR_POSIX_write (__NR_POSIX + 4) | ||
663 | #define __NR_POSIX_open (__NR_POSIX + 5) | ||
664 | #define __NR_POSIX_close (__NR_POSIX + 6) | ||
665 | #define __NR_POSIX_wait (__NR_POSIX + 7) | ||
666 | #define __NR_POSIX_creat (__NR_POSIX + 8) | ||
667 | #define __NR_POSIX_link (__NR_POSIX + 9) | ||
668 | #define __NR_POSIX_unlink (__NR_POSIX + 10) | ||
669 | #define __NR_POSIX_exec (__NR_POSIX + 11) | ||
670 | #define __NR_POSIX_chdir (__NR_POSIX + 12) | ||
671 | #define __NR_POSIX_gtime (__NR_POSIX + 13) | ||
672 | #define __NR_POSIX_mknod (__NR_POSIX + 14) | ||
673 | #define __NR_POSIX_chmod (__NR_POSIX + 15) | ||
674 | #define __NR_POSIX_chown (__NR_POSIX + 16) | ||
675 | #define __NR_POSIX_sbreak (__NR_POSIX + 17) | ||
676 | #define __NR_POSIX_stat (__NR_POSIX + 18) | ||
677 | #define __NR_POSIX_lseek (__NR_POSIX + 19) | ||
678 | #define __NR_POSIX_getpid (__NR_POSIX + 20) | ||
679 | #define __NR_POSIX_mount (__NR_POSIX + 21) | ||
680 | #define __NR_POSIX_umount (__NR_POSIX + 22) | ||
681 | #define __NR_POSIX_setuid (__NR_POSIX + 23) | ||
682 | #define __NR_POSIX_getuid (__NR_POSIX + 24) | ||
683 | #define __NR_POSIX_stime (__NR_POSIX + 25) | ||
684 | #define __NR_POSIX_ptrace (__NR_POSIX + 26) | ||
685 | #define __NR_POSIX_alarm (__NR_POSIX + 27) | ||
686 | #define __NR_POSIX_fstat (__NR_POSIX + 28) | ||
687 | #define __NR_POSIX_pause (__NR_POSIX + 29) | ||
688 | #define __NR_POSIX_utime (__NR_POSIX + 30) | ||
689 | #define __NR_POSIX_stty (__NR_POSIX + 31) | ||
690 | #define __NR_POSIX_gtty (__NR_POSIX + 32) | ||
691 | #define __NR_POSIX_access (__NR_POSIX + 33) | ||
692 | #define __NR_POSIX_nice (__NR_POSIX + 34) | ||
693 | #define __NR_POSIX_statfs (__NR_POSIX + 35) | ||
694 | #define __NR_POSIX_sync (__NR_POSIX + 36) | ||
695 | #define __NR_POSIX_kill (__NR_POSIX + 37) | ||
696 | #define __NR_POSIX_fstatfs (__NR_POSIX + 38) | ||
697 | #define __NR_POSIX_getpgrp (__NR_POSIX + 39) | ||
698 | #define __NR_POSIX_syssgi (__NR_POSIX + 40) | ||
699 | #define __NR_POSIX_dup (__NR_POSIX + 41) | ||
700 | #define __NR_POSIX_pipe (__NR_POSIX + 42) | ||
701 | #define __NR_POSIX_times (__NR_POSIX + 43) | ||
702 | #define __NR_POSIX_profil (__NR_POSIX + 44) | ||
703 | #define __NR_POSIX_lock (__NR_POSIX + 45) | ||
704 | #define __NR_POSIX_setgid (__NR_POSIX + 46) | ||
705 | #define __NR_POSIX_getgid (__NR_POSIX + 47) | ||
706 | #define __NR_POSIX_sig (__NR_POSIX + 48) | ||
707 | #define __NR_POSIX_msgsys (__NR_POSIX + 49) | ||
708 | #define __NR_POSIX_sysmips (__NR_POSIX + 50) | ||
709 | #define __NR_POSIX_sysacct (__NR_POSIX + 51) | ||
710 | #define __NR_POSIX_shmsys (__NR_POSIX + 52) | ||
711 | #define __NR_POSIX_semsys (__NR_POSIX + 53) | ||
712 | #define __NR_POSIX_ioctl (__NR_POSIX + 54) | ||
713 | #define __NR_POSIX_uadmin (__NR_POSIX + 55) | ||
714 | #define __NR_POSIX_exch (__NR_POSIX + 56) | ||
715 | #define __NR_POSIX_utssys (__NR_POSIX + 57) | ||
716 | #define __NR_POSIX_USG_reserved1 (__NR_POSIX + 58) | ||
717 | #define __NR_POSIX_exece (__NR_POSIX + 59) | ||
718 | #define __NR_POSIX_umask (__NR_POSIX + 60) | ||
719 | #define __NR_POSIX_chroot (__NR_POSIX + 61) | ||
720 | #define __NR_POSIX_fcntl (__NR_POSIX + 62) | ||
721 | #define __NR_POSIX_ulimit (__NR_POSIX + 63) | ||
722 | #define __NR_POSIX_SAFARI4_reserved1 (__NR_POSIX + 64) | ||
723 | #define __NR_POSIX_SAFARI4_reserved2 (__NR_POSIX + 65) | ||
724 | #define __NR_POSIX_SAFARI4_reserved3 (__NR_POSIX + 66) | ||
725 | #define __NR_POSIX_SAFARI4_reserved4 (__NR_POSIX + 67) | ||
726 | #define __NR_POSIX_SAFARI4_reserved5 (__NR_POSIX + 68) | ||
727 | #define __NR_POSIX_SAFARI4_reserved6 (__NR_POSIX + 69) | ||
728 | #define __NR_POSIX_advfs (__NR_POSIX + 70) | ||
729 | #define __NR_POSIX_unadvfs (__NR_POSIX + 71) | ||
730 | #define __NR_POSIX_rmount (__NR_POSIX + 72) | ||
731 | #define __NR_POSIX_rumount (__NR_POSIX + 73) | ||
732 | #define __NR_POSIX_rfstart (__NR_POSIX + 74) | ||
733 | #define __NR_POSIX_reserved1 (__NR_POSIX + 75) | ||
734 | #define __NR_POSIX_rdebug (__NR_POSIX + 76) | ||
735 | #define __NR_POSIX_rfstop (__NR_POSIX + 77) | ||
736 | #define __NR_POSIX_rfsys (__NR_POSIX + 78) | ||
737 | #define __NR_POSIX_rmdir (__NR_POSIX + 79) | ||
738 | #define __NR_POSIX_mkdir (__NR_POSIX + 80) | ||
739 | #define __NR_POSIX_getdents (__NR_POSIX + 81) | ||
740 | #define __NR_POSIX_sginap (__NR_POSIX + 82) | ||
741 | #define __NR_POSIX_sgikopt (__NR_POSIX + 83) | ||
742 | #define __NR_POSIX_sysfs (__NR_POSIX + 84) | ||
743 | #define __NR_POSIX_getmsg (__NR_POSIX + 85) | ||
744 | #define __NR_POSIX_putmsg (__NR_POSIX + 86) | ||
745 | #define __NR_POSIX_poll (__NR_POSIX + 87) | ||
746 | #define __NR_POSIX_sigreturn (__NR_POSIX + 88) | ||
747 | #define __NR_POSIX_accept (__NR_POSIX + 89) | ||
748 | #define __NR_POSIX_bind (__NR_POSIX + 90) | ||
749 | #define __NR_POSIX_connect (__NR_POSIX + 91) | ||
750 | #define __NR_POSIX_gethostid (__NR_POSIX + 92) | ||
751 | #define __NR_POSIX_getpeername (__NR_POSIX + 93) | ||
752 | #define __NR_POSIX_getsockname (__NR_POSIX + 94) | ||
753 | #define __NR_POSIX_getsockopt (__NR_POSIX + 95) | ||
754 | #define __NR_POSIX_listen (__NR_POSIX + 96) | ||
755 | #define __NR_POSIX_recv (__NR_POSIX + 97) | ||
756 | #define __NR_POSIX_recvfrom (__NR_POSIX + 98) | ||
757 | #define __NR_POSIX_recvmsg (__NR_POSIX + 99) | ||
758 | #define __NR_POSIX_select (__NR_POSIX + 100) | ||
759 | #define __NR_POSIX_send (__NR_POSIX + 101) | ||
760 | #define __NR_POSIX_sendmsg (__NR_POSIX + 102) | ||
761 | #define __NR_POSIX_sendto (__NR_POSIX + 103) | ||
762 | #define __NR_POSIX_sethostid (__NR_POSIX + 104) | ||
763 | #define __NR_POSIX_setsockopt (__NR_POSIX + 105) | ||
764 | #define __NR_POSIX_shutdown (__NR_POSIX + 106) | ||
765 | #define __NR_POSIX_socket (__NR_POSIX + 107) | ||
766 | #define __NR_POSIX_gethostname (__NR_POSIX + 108) | ||
767 | #define __NR_POSIX_sethostname (__NR_POSIX + 109) | ||
768 | #define __NR_POSIX_getdomainname (__NR_POSIX + 110) | ||
769 | #define __NR_POSIX_setdomainname (__NR_POSIX + 111) | ||
770 | #define __NR_POSIX_truncate (__NR_POSIX + 112) | ||
771 | #define __NR_POSIX_ftruncate (__NR_POSIX + 113) | ||
772 | #define __NR_POSIX_rename (__NR_POSIX + 114) | ||
773 | #define __NR_POSIX_symlink (__NR_POSIX + 115) | ||
774 | #define __NR_POSIX_readlink (__NR_POSIX + 116) | ||
775 | #define __NR_POSIX_lstat (__NR_POSIX + 117) | ||
776 | #define __NR_POSIX_nfs_mount (__NR_POSIX + 118) | ||
777 | #define __NR_POSIX_nfs_svc (__NR_POSIX + 119) | ||
778 | #define __NR_POSIX_nfs_getfh (__NR_POSIX + 120) | ||
779 | #define __NR_POSIX_async_daemon (__NR_POSIX + 121) | ||
780 | #define __NR_POSIX_exportfs (__NR_POSIX + 122) | ||
781 | #define __NR_POSIX_SGI_setregid (__NR_POSIX + 123) | ||
782 | #define __NR_POSIX_SGI_setreuid (__NR_POSIX + 124) | ||
783 | #define __NR_POSIX_getitimer (__NR_POSIX + 125) | ||
784 | #define __NR_POSIX_setitimer (__NR_POSIX + 126) | ||
785 | #define __NR_POSIX_adjtime (__NR_POSIX + 127) | ||
786 | #define __NR_POSIX_SGI_bsdgettime (__NR_POSIX + 128) | ||
787 | #define __NR_POSIX_SGI_sproc (__NR_POSIX + 129) | ||
788 | #define __NR_POSIX_SGI_prctl (__NR_POSIX + 130) | ||
789 | #define __NR_POSIX_SGI_blkproc (__NR_POSIX + 131) | ||
790 | #define __NR_POSIX_SGI_reserved1 (__NR_POSIX + 132) | ||
791 | #define __NR_POSIX_SGI_sgigsc (__NR_POSIX + 133) | ||
792 | #define __NR_POSIX_SGI_mmap (__NR_POSIX + 134) | ||
793 | #define __NR_POSIX_SGI_munmap (__NR_POSIX + 135) | ||
794 | #define __NR_POSIX_SGI_mprotect (__NR_POSIX + 136) | ||
795 | #define __NR_POSIX_SGI_msync (__NR_POSIX + 137) | ||
796 | #define __NR_POSIX_SGI_madvise (__NR_POSIX + 138) | ||
797 | #define __NR_POSIX_SGI_mpin (__NR_POSIX + 139) | ||
798 | #define __NR_POSIX_SGI_getpagesize (__NR_POSIX + 140) | ||
799 | #define __NR_POSIX_SGI_libattach (__NR_POSIX + 141) | ||
800 | #define __NR_POSIX_SGI_libdetach (__NR_POSIX + 142) | ||
801 | #define __NR_POSIX_SGI_getpgrp (__NR_POSIX + 143) | ||
802 | #define __NR_POSIX_SGI_setpgrp (__NR_POSIX + 144) | ||
803 | #define __NR_POSIX_SGI_reserved2 (__NR_POSIX + 145) | ||
804 | #define __NR_POSIX_SGI_reserved3 (__NR_POSIX + 146) | ||
805 | #define __NR_POSIX_SGI_reserved4 (__NR_POSIX + 147) | ||
806 | #define __NR_POSIX_SGI_reserved5 (__NR_POSIX + 148) | ||
807 | #define __NR_POSIX_SGI_reserved6 (__NR_POSIX + 149) | ||
808 | #define __NR_POSIX_cacheflush (__NR_POSIX + 150) | ||
809 | #define __NR_POSIX_cachectl (__NR_POSIX + 151) | ||
810 | #define __NR_POSIX_fchown (__NR_POSIX + 152) | ||
811 | #define __NR_POSIX_fchmod (__NR_POSIX + 153) | ||
812 | #define __NR_POSIX_wait3 (__NR_POSIX + 154) | ||
813 | #define __NR_POSIX_mmap (__NR_POSIX + 155) | ||
814 | #define __NR_POSIX_munmap (__NR_POSIX + 156) | ||
815 | #define __NR_POSIX_madvise (__NR_POSIX + 157) | ||
816 | #define __NR_POSIX_BSD_getpagesize (__NR_POSIX + 158) | ||
817 | #define __NR_POSIX_setreuid (__NR_POSIX + 159) | ||
818 | #define __NR_POSIX_setregid (__NR_POSIX + 160) | ||
819 | #define __NR_POSIX_setpgid (__NR_POSIX + 161) | ||
820 | #define __NR_POSIX_getgroups (__NR_POSIX + 162) | ||
821 | #define __NR_POSIX_setgroups (__NR_POSIX + 163) | ||
822 | #define __NR_POSIX_gettimeofday (__NR_POSIX + 164) | ||
823 | #define __NR_POSIX_getrusage (__NR_POSIX + 165) | ||
824 | #define __NR_POSIX_getrlimit (__NR_POSIX + 166) | ||
825 | #define __NR_POSIX_setrlimit (__NR_POSIX + 167) | ||
826 | #define __NR_POSIX_waitpid (__NR_POSIX + 168) | ||
827 | #define __NR_POSIX_dup2 (__NR_POSIX + 169) | ||
828 | #define __NR_POSIX_reserved2 (__NR_POSIX + 170) | ||
829 | #define __NR_POSIX_reserved3 (__NR_POSIX + 171) | ||
830 | #define __NR_POSIX_reserved4 (__NR_POSIX + 172) | ||
831 | #define __NR_POSIX_reserved5 (__NR_POSIX + 173) | ||
832 | #define __NR_POSIX_reserved6 (__NR_POSIX + 174) | ||
833 | #define __NR_POSIX_reserved7 (__NR_POSIX + 175) | ||
834 | #define __NR_POSIX_reserved8 (__NR_POSIX + 176) | ||
835 | #define __NR_POSIX_reserved9 (__NR_POSIX + 177) | ||
836 | #define __NR_POSIX_reserved10 (__NR_POSIX + 178) | ||
837 | #define __NR_POSIX_reserved11 (__NR_POSIX + 179) | ||
838 | #define __NR_POSIX_reserved12 (__NR_POSIX + 180) | ||
839 | #define __NR_POSIX_reserved13 (__NR_POSIX + 181) | ||
840 | #define __NR_POSIX_reserved14 (__NR_POSIX + 182) | ||
841 | #define __NR_POSIX_reserved15 (__NR_POSIX + 183) | ||
842 | #define __NR_POSIX_reserved16 (__NR_POSIX + 184) | ||
843 | #define __NR_POSIX_reserved17 (__NR_POSIX + 185) | ||
844 | #define __NR_POSIX_reserved18 (__NR_POSIX + 186) | ||
845 | #define __NR_POSIX_reserved19 (__NR_POSIX + 187) | ||
846 | #define __NR_POSIX_reserved20 (__NR_POSIX + 188) | ||
847 | #define __NR_POSIX_reserved21 (__NR_POSIX + 189) | ||
848 | #define __NR_POSIX_reserved22 (__NR_POSIX + 190) | ||
849 | #define __NR_POSIX_reserved23 (__NR_POSIX + 191) | ||
850 | #define __NR_POSIX_reserved24 (__NR_POSIX + 192) | ||
851 | #define __NR_POSIX_reserved25 (__NR_POSIX + 193) | ||
852 | #define __NR_POSIX_reserved26 (__NR_POSIX + 194) | ||
853 | #define __NR_POSIX_reserved27 (__NR_POSIX + 195) | ||
854 | #define __NR_POSIX_reserved28 (__NR_POSIX + 196) | ||
855 | #define __NR_POSIX_reserved29 (__NR_POSIX + 197) | ||
856 | #define __NR_POSIX_reserved30 (__NR_POSIX + 198) | ||
857 | #define __NR_POSIX_reserved31 (__NR_POSIX + 199) | ||
858 | #define __NR_POSIX_reserved32 (__NR_POSIX + 200) | ||
859 | #define __NR_POSIX_reserved33 (__NR_POSIX + 201) | ||
860 | #define __NR_POSIX_reserved34 (__NR_POSIX + 202) | ||
861 | #define __NR_POSIX_reserved35 (__NR_POSIX + 203) | ||
862 | #define __NR_POSIX_reserved36 (__NR_POSIX + 204) | ||
863 | #define __NR_POSIX_reserved37 (__NR_POSIX + 205) | ||
864 | #define __NR_POSIX_reserved38 (__NR_POSIX + 206) | ||
865 | #define __NR_POSIX_reserved39 (__NR_POSIX + 207) | ||
866 | #define __NR_POSIX_reserved40 (__NR_POSIX + 208) | ||
867 | #define __NR_POSIX_reserved41 (__NR_POSIX + 209) | ||
868 | #define __NR_POSIX_reserved42 (__NR_POSIX + 210) | ||
869 | #define __NR_POSIX_reserved43 (__NR_POSIX + 211) | ||
870 | #define __NR_POSIX_reserved44 (__NR_POSIX + 212) | ||
871 | #define __NR_POSIX_reserved45 (__NR_POSIX + 213) | ||
872 | #define __NR_POSIX_reserved46 (__NR_POSIX + 214) | ||
873 | #define __NR_POSIX_reserved47 (__NR_POSIX + 215) | ||
874 | #define __NR_POSIX_reserved48 (__NR_POSIX + 216) | ||
875 | #define __NR_POSIX_reserved49 (__NR_POSIX + 217) | ||
876 | #define __NR_POSIX_reserved50 (__NR_POSIX + 218) | ||
877 | #define __NR_POSIX_reserved51 (__NR_POSIX + 219) | ||
878 | #define __NR_POSIX_reserved52 (__NR_POSIX + 220) | ||
879 | #define __NR_POSIX_reserved53 (__NR_POSIX + 221) | ||
880 | #define __NR_POSIX_reserved54 (__NR_POSIX + 222) | ||
881 | #define __NR_POSIX_reserved55 (__NR_POSIX + 223) | ||
882 | #define __NR_POSIX_reserved56 (__NR_POSIX + 224) | ||
883 | #define __NR_POSIX_reserved57 (__NR_POSIX + 225) | ||
884 | #define __NR_POSIX_reserved58 (__NR_POSIX + 226) | ||
885 | #define __NR_POSIX_reserved59 (__NR_POSIX + 227) | ||
886 | #define __NR_POSIX_reserved60 (__NR_POSIX + 228) | ||
887 | #define __NR_POSIX_reserved61 (__NR_POSIX + 229) | ||
888 | #define __NR_POSIX_reserved62 (__NR_POSIX + 230) | ||
889 | #define __NR_POSIX_reserved63 (__NR_POSIX + 231) | ||
890 | #define __NR_POSIX_reserved64 (__NR_POSIX + 232) | ||
891 | #define __NR_POSIX_reserved65 (__NR_POSIX + 233) | ||
892 | #define __NR_POSIX_reserved66 (__NR_POSIX + 234) | ||
893 | #define __NR_POSIX_reserved67 (__NR_POSIX + 235) | ||
894 | #define __NR_POSIX_reserved68 (__NR_POSIX + 236) | ||
895 | #define __NR_POSIX_reserved69 (__NR_POSIX + 237) | ||
896 | #define __NR_POSIX_reserved70 (__NR_POSIX + 238) | ||
897 | #define __NR_POSIX_reserved71 (__NR_POSIX + 239) | ||
898 | #define __NR_POSIX_reserved72 (__NR_POSIX + 240) | ||
899 | #define __NR_POSIX_reserved73 (__NR_POSIX + 241) | ||
900 | #define __NR_POSIX_reserved74 (__NR_POSIX + 242) | ||
901 | #define __NR_POSIX_reserved75 (__NR_POSIX + 243) | ||
902 | #define __NR_POSIX_reserved76 (__NR_POSIX + 244) | ||
903 | #define __NR_POSIX_reserved77 (__NR_POSIX + 245) | ||
904 | #define __NR_POSIX_reserved78 (__NR_POSIX + 246) | ||
905 | #define __NR_POSIX_reserved79 (__NR_POSIX + 247) | ||
906 | #define __NR_POSIX_reserved80 (__NR_POSIX + 248) | ||
907 | #define __NR_POSIX_reserved81 (__NR_POSIX + 249) | ||
908 | #define __NR_POSIX_reserved82 (__NR_POSIX + 250) | ||
909 | #define __NR_POSIX_reserved83 (__NR_POSIX + 251) | ||
910 | #define __NR_POSIX_reserved84 (__NR_POSIX + 252) | ||
911 | #define __NR_POSIX_reserved85 (__NR_POSIX + 253) | ||
912 | #define __NR_POSIX_reserved86 (__NR_POSIX + 254) | ||
913 | #define __NR_POSIX_reserved87 (__NR_POSIX + 255) | ||
914 | #define __NR_POSIX_reserved88 (__NR_POSIX + 256) | ||
915 | #define __NR_POSIX_reserved89 (__NR_POSIX + 257) | ||
916 | #define __NR_POSIX_reserved90 (__NR_POSIX + 258) | ||
917 | #define __NR_POSIX_reserved91 (__NR_POSIX + 259) | ||
918 | #define __NR_POSIX_netboot (__NR_POSIX + 260) | ||
919 | #define __NR_POSIX_netunboot (__NR_POSIX + 261) | ||
920 | #define __NR_POSIX_rdump (__NR_POSIX + 262) | ||
921 | #define __NR_POSIX_setsid (__NR_POSIX + 263) | ||
922 | #define __NR_POSIX_getmaxsig (__NR_POSIX + 264) | ||
923 | #define __NR_POSIX_sigpending (__NR_POSIX + 265) | ||
924 | #define __NR_POSIX_sigprocmask (__NR_POSIX + 266) | ||
925 | #define __NR_POSIX_sigsuspend (__NR_POSIX + 267) | ||
926 | #define __NR_POSIX_sigaction (__NR_POSIX + 268) | ||
927 | #define __NR_POSIX_MIPS_reserved1 (__NR_POSIX + 269) | ||
928 | #define __NR_POSIX_MIPS_reserved2 (__NR_POSIX + 270) | ||
929 | #define __NR_POSIX_MIPS_reserved3 (__NR_POSIX + 271) | ||
930 | #define __NR_POSIX_MIPS_reserved4 (__NR_POSIX + 272) | ||
931 | #define __NR_POSIX_MIPS_reserved5 (__NR_POSIX + 273) | ||
932 | #define __NR_POSIX_MIPS_reserved6 (__NR_POSIX + 274) | ||
933 | #define __NR_POSIX_MIPS_reserved7 (__NR_POSIX + 275) | ||
934 | #define __NR_POSIX_MIPS_reserved8 (__NR_POSIX + 276) | ||
935 | #define __NR_POSIX_MIPS_reserved9 (__NR_POSIX + 277) | ||
936 | #define __NR_POSIX_MIPS_reserved10 (__NR_POSIX + 278) | ||
937 | #define __NR_POSIX_MIPS_reserved11 (__NR_POSIX + 279) | ||
938 | #define __NR_POSIX_TANDEM_reserved1 (__NR_POSIX + 280) | ||
939 | #define __NR_POSIX_TANDEM_reserved2 (__NR_POSIX + 281) | ||
940 | #define __NR_POSIX_TANDEM_reserved3 (__NR_POSIX + 282) | ||
941 | #define __NR_POSIX_TANDEM_reserved4 (__NR_POSIX + 283) | ||
942 | #define __NR_POSIX_TANDEM_reserved5 (__NR_POSIX + 284) | ||
943 | #define __NR_POSIX_TANDEM_reserved6 (__NR_POSIX + 285) | ||
944 | #define __NR_POSIX_TANDEM_reserved7 (__NR_POSIX + 286) | ||
945 | #define __NR_POSIX_TANDEM_reserved8 (__NR_POSIX + 287) | ||
946 | #define __NR_POSIX_TANDEM_reserved9 (__NR_POSIX + 288) | ||
947 | #define __NR_POSIX_TANDEM_reserved10 (__NR_POSIX + 289) | ||
948 | #define __NR_POSIX_TANDEM_reserved11 (__NR_POSIX + 290) | ||
949 | #define __NR_POSIX_TANDEM_reserved12 (__NR_POSIX + 291) | ||
950 | #define __NR_POSIX_TANDEM_reserved13 (__NR_POSIX + 292) | ||
951 | #define __NR_POSIX_TANDEM_reserved14 (__NR_POSIX + 293) | ||
952 | #define __NR_POSIX_TANDEM_reserved15 (__NR_POSIX + 294) | ||
953 | #define __NR_POSIX_TANDEM_reserved16 (__NR_POSIX + 295) | ||
954 | #define __NR_POSIX_TANDEM_reserved17 (__NR_POSIX + 296) | ||
955 | #define __NR_POSIX_TANDEM_reserved18 (__NR_POSIX + 297) | ||
956 | #define __NR_POSIX_TANDEM_reserved19 (__NR_POSIX + 298) | ||
957 | #define __NR_POSIX_TANDEM_reserved20 (__NR_POSIX + 299) | ||
958 | #define __NR_POSIX_SGI_reserved7 (__NR_POSIX + 300) | ||
959 | #define __NR_POSIX_SGI_reserved8 (__NR_POSIX + 301) | ||
960 | #define __NR_POSIX_SGI_reserved9 (__NR_POSIX + 302) | ||
961 | #define __NR_POSIX_SGI_reserved10 (__NR_POSIX + 303) | ||
962 | #define __NR_POSIX_SGI_reserved11 (__NR_POSIX + 304) | ||
963 | #define __NR_POSIX_SGI_reserved12 (__NR_POSIX + 305) | ||
964 | #define __NR_POSIX_SGI_reserved13 (__NR_POSIX + 306) | ||
965 | #define __NR_POSIX_SGI_reserved14 (__NR_POSIX + 307) | ||
966 | #define __NR_POSIX_SGI_reserved15 (__NR_POSIX + 308) | ||
967 | #define __NR_POSIX_SGI_reserved16 (__NR_POSIX + 309) | ||
968 | #define __NR_POSIX_SGI_reserved17 (__NR_POSIX + 310) | ||
969 | #define __NR_POSIX_SGI_reserved18 (__NR_POSIX + 311) | ||
970 | #define __NR_POSIX_SGI_reserved19 (__NR_POSIX + 312) | ||
971 | #define __NR_POSIX_SGI_reserved20 (__NR_POSIX + 313) | ||
972 | #define __NR_POSIX_SGI_reserved21 (__NR_POSIX + 314) | ||
973 | #define __NR_POSIX_SGI_reserved22 (__NR_POSIX + 315) | ||
974 | #define __NR_POSIX_SGI_reserved23 (__NR_POSIX + 316) | ||
975 | #define __NR_POSIX_SGI_reserved24 (__NR_POSIX + 317) | ||
976 | #define __NR_POSIX_SGI_reserved25 (__NR_POSIX + 318) | ||
977 | #define __NR_POSIX_SGI_reserved26 (__NR_POSIX + 319) | ||
978 | |||
979 | #endif /* _ASM_RISCOS_SYSCALL_H */ | ||
diff --git a/include/asm-parisc/atomic.h b/include/asm-parisc/atomic.h index 983e9a2b6042..64ebd086c40d 100644 --- a/include/asm-parisc/atomic.h +++ b/include/asm-parisc/atomic.h | |||
@@ -216,4 +216,5 @@ static __inline__ int atomic_read(const atomic_t *v) | |||
216 | #define smp_mb__before_atomic_inc() smp_mb() | 216 | #define smp_mb__before_atomic_inc() smp_mb() |
217 | #define smp_mb__after_atomic_inc() smp_mb() | 217 | #define smp_mb__after_atomic_inc() smp_mb() |
218 | 218 | ||
219 | #include <asm-generic/atomic.h> | ||
219 | #endif | 220 | #endif |
diff --git a/include/asm-parisc/mman.h b/include/asm-parisc/mman.h index e829607eb8bc..736b0abcac05 100644 --- a/include/asm-parisc/mman.h +++ b/include/asm-parisc/mman.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #define MADV_SPACEAVAIL 5 /* insure that resources are reserved */ | 38 | #define MADV_SPACEAVAIL 5 /* insure that resources are reserved */ |
39 | #define MADV_VPS_PURGE 6 /* Purge pages from VM page cache */ | 39 | #define MADV_VPS_PURGE 6 /* Purge pages from VM page cache */ |
40 | #define MADV_VPS_INHERIT 7 /* Inherit parents page size */ | 40 | #define MADV_VPS_INHERIT 7 /* Inherit parents page size */ |
41 | #define MADV_REMOVE 8 /* remove these pages & resources */ | ||
41 | 42 | ||
42 | /* The range 12-64 is reserved for page size specification. */ | 43 | /* The range 12-64 is reserved for page size specification. */ |
43 | #define MADV_4K_PAGES 12 /* Use 4K pages */ | 44 | #define MADV_4K_PAGES 12 /* Use 4K pages */ |
diff --git a/include/asm-powerpc/atomic.h b/include/asm-powerpc/atomic.h index ec4b14468959..ae395a0632a6 100644 --- a/include/asm-powerpc/atomic.h +++ b/include/asm-powerpc/atomic.h | |||
@@ -402,5 +402,6 @@ static __inline__ long atomic64_dec_if_positive(atomic64_t *v) | |||
402 | 402 | ||
403 | #endif /* __powerpc64__ */ | 403 | #endif /* __powerpc64__ */ |
404 | 404 | ||
405 | #include <asm-generic/atomic.h> | ||
405 | #endif /* __KERNEL__ */ | 406 | #endif /* __KERNEL__ */ |
406 | #endif /* _ASM_POWERPC_ATOMIC_H_ */ | 407 | #endif /* _ASM_POWERPC_ATOMIC_H_ */ |
diff --git a/include/asm-powerpc/mman.h b/include/asm-powerpc/mman.h index f5e5342fcac5..a2e34c21b44f 100644 --- a/include/asm-powerpc/mman.h +++ b/include/asm-powerpc/mman.h | |||
@@ -44,6 +44,7 @@ | |||
44 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 44 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
45 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 45 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
46 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 46 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
47 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
47 | 48 | ||
48 | /* compatibility flags */ | 49 | /* compatibility flags */ |
49 | #define MAP_ANON MAP_ANONYMOUS | 50 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-ppc/ibm_ocp.h b/include/asm-ppc/ibm_ocp.h index 9c21de1ff4ed..ddce616f765a 100644 --- a/include/asm-ppc/ibm_ocp.h +++ b/include/asm-ppc/ibm_ocp.h | |||
@@ -63,7 +63,6 @@ struct ocp_func_emac_data { | |||
63 | int wol_irq; /* WOL interrupt */ | 63 | int wol_irq; /* WOL interrupt */ |
64 | int mdio_idx; /* EMAC idx of MDIO master or -1 */ | 64 | int mdio_idx; /* EMAC idx of MDIO master or -1 */ |
65 | int tah_idx; /* TAH device index or -1 */ | 65 | int tah_idx; /* TAH device index or -1 */ |
66 | int jumbo; /* Jumbo frames capable flag */ | ||
67 | int phy_mode; /* PHY type or configurable mode */ | 66 | int phy_mode; /* PHY type or configurable mode */ |
68 | u8 mac_addr[6]; /* EMAC mac address */ | 67 | u8 mac_addr[6]; /* EMAC mac address */ |
69 | u32 phy_map; /* EMAC phy map */ | 68 | u32 phy_map; /* EMAC phy map */ |
diff --git a/include/asm-ppc/io.h b/include/asm-ppc/io.h index 84ac6e258eef..df9cf6ed189d 100644 --- a/include/asm-ppc/io.h +++ b/include/asm-ppc/io.h | |||
@@ -27,6 +27,8 @@ | |||
27 | 27 | ||
28 | #if defined(CONFIG_4xx) | 28 | #if defined(CONFIG_4xx) |
29 | #include <asm/ibm4xx.h> | 29 | #include <asm/ibm4xx.h> |
30 | #elif defined(CONFIG_PPC_MPC52xx) | ||
31 | #include <asm/mpc52xx.h> | ||
30 | #elif defined(CONFIG_8xx) | 32 | #elif defined(CONFIG_8xx) |
31 | #include <asm/mpc8xx.h> | 33 | #include <asm/mpc8xx.h> |
32 | #elif defined(CONFIG_8260) | 34 | #elif defined(CONFIG_8260) |
diff --git a/include/asm-ppc/mpc52xx.h b/include/asm-ppc/mpc52xx.h index e5f80c22fbfc..a055e0756b9d 100644 --- a/include/asm-ppc/mpc52xx.h +++ b/include/asm-ppc/mpc52xx.h | |||
@@ -29,6 +29,17 @@ struct pt_regs; | |||
29 | #endif /* __ASSEMBLY__ */ | 29 | #endif /* __ASSEMBLY__ */ |
30 | 30 | ||
31 | 31 | ||
32 | #ifdef CONFIG_PCI | ||
33 | #define _IO_BASE isa_io_base | ||
34 | #define _ISA_MEM_BASE isa_mem_base | ||
35 | #define PCI_DRAM_OFFSET pci_dram_offset | ||
36 | #else | ||
37 | #define _IO_BASE 0 | ||
38 | #define _ISA_MEM_BASE 0 | ||
39 | #define PCI_DRAM_OFFSET 0 | ||
40 | #endif | ||
41 | |||
42 | |||
32 | /* ======================================================================== */ | 43 | /* ======================================================================== */ |
33 | /* PPC Sys devices definition */ | 44 | /* PPC Sys devices definition */ |
34 | /* ======================================================================== */ | 45 | /* ======================================================================== */ |
@@ -107,7 +118,7 @@ enum ppc_sys_devices { | |||
107 | #define MPC52xx_SDMA_IRQ_NUM 17 | 118 | #define MPC52xx_SDMA_IRQ_NUM 17 |
108 | #define MPC52xx_PERP_IRQ_NUM 23 | 119 | #define MPC52xx_PERP_IRQ_NUM 23 |
109 | 120 | ||
110 | #define MPC52xx_CRIT_IRQ_BASE 0 | 121 | #define MPC52xx_CRIT_IRQ_BASE 1 |
111 | #define MPC52xx_MAIN_IRQ_BASE (MPC52xx_CRIT_IRQ_BASE + MPC52xx_CRIT_IRQ_NUM) | 122 | #define MPC52xx_MAIN_IRQ_BASE (MPC52xx_CRIT_IRQ_BASE + MPC52xx_CRIT_IRQ_NUM) |
112 | #define MPC52xx_SDMA_IRQ_BASE (MPC52xx_MAIN_IRQ_BASE + MPC52xx_MAIN_IRQ_NUM) | 123 | #define MPC52xx_SDMA_IRQ_BASE (MPC52xx_MAIN_IRQ_BASE + MPC52xx_MAIN_IRQ_NUM) |
113 | #define MPC52xx_PERP_IRQ_BASE (MPC52xx_SDMA_IRQ_BASE + MPC52xx_SDMA_IRQ_NUM) | 124 | #define MPC52xx_PERP_IRQ_BASE (MPC52xx_SDMA_IRQ_BASE + MPC52xx_SDMA_IRQ_NUM) |
diff --git a/include/asm-s390/atomic.h b/include/asm-s390/atomic.h index b3bd4f679f72..d82aedf616fe 100644 --- a/include/asm-s390/atomic.h +++ b/include/asm-s390/atomic.h | |||
@@ -5,7 +5,7 @@ | |||
5 | * include/asm-s390/atomic.h | 5 | * include/asm-s390/atomic.h |
6 | * | 6 | * |
7 | * S390 version | 7 | * S390 version |
8 | * Copyright (C) 1999-2003 IBM Deutschland Entwicklung GmbH, IBM Corporation | 8 | * Copyright (C) 1999-2005 IBM Deutschland Entwicklung GmbH, IBM Corporation |
9 | * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), | 9 | * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), |
10 | * Denis Joseph Barrow, | 10 | * Denis Joseph Barrow, |
11 | * Arnd Bergmann (arndb@de.ibm.com) | 11 | * Arnd Bergmann (arndb@de.ibm.com) |
@@ -45,59 +45,57 @@ typedef struct { | |||
45 | #define atomic_read(v) ((v)->counter) | 45 | #define atomic_read(v) ((v)->counter) |
46 | #define atomic_set(v,i) (((v)->counter) = (i)) | 46 | #define atomic_set(v,i) (((v)->counter) = (i)) |
47 | 47 | ||
48 | static __inline__ void atomic_add(int i, atomic_t * v) | ||
49 | { | ||
50 | __CS_LOOP(v, i, "ar"); | ||
51 | } | ||
52 | static __inline__ int atomic_add_return(int i, atomic_t * v) | 48 | static __inline__ int atomic_add_return(int i, atomic_t * v) |
53 | { | 49 | { |
54 | return __CS_LOOP(v, i, "ar"); | 50 | return __CS_LOOP(v, i, "ar"); |
55 | } | 51 | } |
56 | static __inline__ int atomic_add_negative(int i, atomic_t * v) | 52 | #define atomic_add(_i, _v) atomic_add_return(_i, _v) |
57 | { | 53 | #define atomic_add_negative(_i, _v) (atomic_add_return(_i, _v) < 0) |
58 | return __CS_LOOP(v, i, "ar") < 0; | 54 | #define atomic_inc(_v) atomic_add_return(1, _v) |
59 | } | 55 | #define atomic_inc_return(_v) atomic_add_return(1, _v) |
60 | static __inline__ void atomic_sub(int i, atomic_t * v) | 56 | #define atomic_inc_and_test(_v) (atomic_add_return(1, _v) == 0) |
61 | { | 57 | |
62 | __CS_LOOP(v, i, "sr"); | ||
63 | } | ||
64 | static __inline__ int atomic_sub_return(int i, atomic_t * v) | 58 | static __inline__ int atomic_sub_return(int i, atomic_t * v) |
65 | { | 59 | { |
66 | return __CS_LOOP(v, i, "sr"); | 60 | return __CS_LOOP(v, i, "sr"); |
67 | } | 61 | } |
68 | static __inline__ void atomic_inc(volatile atomic_t * v) | 62 | #define atomic_sub(_i, _v) atomic_sub_return(_i, _v) |
69 | { | 63 | #define atomic_sub_and_test(_i, _v) (atomic_sub_return(_i, _v) == 0) |
70 | __CS_LOOP(v, 1, "ar"); | 64 | #define atomic_dec(_v) atomic_sub_return(1, _v) |
71 | } | 65 | #define atomic_dec_return(_v) atomic_sub_return(1, _v) |
72 | static __inline__ int atomic_inc_return(volatile atomic_t * v) | 66 | #define atomic_dec_and_test(_v) (atomic_sub_return(1, _v) == 0) |
73 | { | ||
74 | return __CS_LOOP(v, 1, "ar"); | ||
75 | } | ||
76 | 67 | ||
77 | static __inline__ int atomic_inc_and_test(volatile atomic_t * v) | ||
78 | { | ||
79 | return __CS_LOOP(v, 1, "ar") == 0; | ||
80 | } | ||
81 | static __inline__ void atomic_dec(volatile atomic_t * v) | ||
82 | { | ||
83 | __CS_LOOP(v, 1, "sr"); | ||
84 | } | ||
85 | static __inline__ int atomic_dec_return(volatile atomic_t * v) | ||
86 | { | ||
87 | return __CS_LOOP(v, 1, "sr"); | ||
88 | } | ||
89 | static __inline__ int atomic_dec_and_test(volatile atomic_t * v) | ||
90 | { | ||
91 | return __CS_LOOP(v, 1, "sr") == 0; | ||
92 | } | ||
93 | static __inline__ void atomic_clear_mask(unsigned long mask, atomic_t * v) | 68 | static __inline__ void atomic_clear_mask(unsigned long mask, atomic_t * v) |
94 | { | 69 | { |
95 | __CS_LOOP(v, ~mask, "nr"); | 70 | __CS_LOOP(v, ~mask, "nr"); |
96 | } | 71 | } |
72 | |||
97 | static __inline__ void atomic_set_mask(unsigned long mask, atomic_t * v) | 73 | static __inline__ void atomic_set_mask(unsigned long mask, atomic_t * v) |
98 | { | 74 | { |
99 | __CS_LOOP(v, mask, "or"); | 75 | __CS_LOOP(v, mask, "or"); |
100 | } | 76 | } |
77 | |||
78 | static __inline__ int atomic_cmpxchg(atomic_t *v, int old, int new) | ||
79 | { | ||
80 | __asm__ __volatile__(" cs %0,%3,0(%2)\n" | ||
81 | : "+d" (old), "=m" (v->counter) | ||
82 | : "a" (v), "d" (new), "m" (v->counter) | ||
83 | : "cc", "memory" ); | ||
84 | return old; | ||
85 | } | ||
86 | |||
87 | static __inline__ int atomic_add_unless(atomic_t *v, int a, int u) | ||
88 | { | ||
89 | int c, old; | ||
90 | |||
91 | c = atomic_read(v); | ||
92 | while (c != u && (old = atomic_cmpxchg(v, c, c + a)) != c) | ||
93 | c = old; | ||
94 | return c != u; | ||
95 | } | ||
96 | |||
97 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) | ||
98 | |||
101 | #undef __CS_LOOP | 99 | #undef __CS_LOOP |
102 | 100 | ||
103 | #ifdef __s390x__ | 101 | #ifdef __s390x__ |
@@ -123,97 +121,67 @@ typedef struct { | |||
123 | #define atomic64_read(v) ((v)->counter) | 121 | #define atomic64_read(v) ((v)->counter) |
124 | #define atomic64_set(v,i) (((v)->counter) = (i)) | 122 | #define atomic64_set(v,i) (((v)->counter) = (i)) |
125 | 123 | ||
126 | static __inline__ void atomic64_add(long long i, atomic64_t * v) | ||
127 | { | ||
128 | __CSG_LOOP(v, i, "agr"); | ||
129 | } | ||
130 | static __inline__ long long atomic64_add_return(long long i, atomic64_t * v) | 124 | static __inline__ long long atomic64_add_return(long long i, atomic64_t * v) |
131 | { | 125 | { |
132 | return __CSG_LOOP(v, i, "agr"); | 126 | return __CSG_LOOP(v, i, "agr"); |
133 | } | 127 | } |
134 | static __inline__ long long atomic64_add_negative(long long i, atomic64_t * v) | 128 | #define atomic64_add(_i, _v) atomic64_add_return(_i, _v) |
135 | { | 129 | #define atomic64_add_negative(_i, _v) (atomic64_add_return(_i, _v) < 0) |
136 | return __CSG_LOOP(v, i, "agr") < 0; | 130 | #define atomic64_inc(_v) atomic64_add_return(1, _v) |
137 | } | 131 | #define atomic64_inc_return(_v) atomic64_add_return(1, _v) |
138 | static __inline__ void atomic64_sub(long long i, atomic64_t * v) | 132 | #define atomic64_inc_and_test(_v) (atomic64_add_return(1, _v) == 0) |
139 | { | 133 | |
140 | __CSG_LOOP(v, i, "sgr"); | 134 | static __inline__ long long atomic64_sub_return(long long i, atomic64_t * v) |
141 | } | ||
142 | static __inline__ void atomic64_inc(volatile atomic64_t * v) | ||
143 | { | ||
144 | __CSG_LOOP(v, 1, "agr"); | ||
145 | } | ||
146 | static __inline__ long long atomic64_inc_return(volatile atomic64_t * v) | ||
147 | { | ||
148 | return __CSG_LOOP(v, 1, "agr"); | ||
149 | } | ||
150 | static __inline__ long long atomic64_inc_and_test(volatile atomic64_t * v) | ||
151 | { | ||
152 | return __CSG_LOOP(v, 1, "agr") == 0; | ||
153 | } | ||
154 | static __inline__ void atomic64_dec(volatile atomic64_t * v) | ||
155 | { | ||
156 | __CSG_LOOP(v, 1, "sgr"); | ||
157 | } | ||
158 | static __inline__ long long atomic64_dec_return(volatile atomic64_t * v) | ||
159 | { | ||
160 | return __CSG_LOOP(v, 1, "sgr"); | ||
161 | } | ||
162 | static __inline__ long long atomic64_dec_and_test(volatile atomic64_t * v) | ||
163 | { | 135 | { |
164 | return __CSG_LOOP(v, 1, "sgr") == 0; | 136 | return __CSG_LOOP(v, i, "sgr"); |
165 | } | 137 | } |
138 | #define atomic64_sub(_i, _v) atomic64_sub_return(_i, _v) | ||
139 | #define atomic64_sub_and_test(_i, _v) (atomic64_sub_return(_i, _v) == 0) | ||
140 | #define atomic64_dec(_v) atomic64_sub_return(1, _v) | ||
141 | #define atomic64_dec_return(_v) atomic64_sub_return(1, _v) | ||
142 | #define atomic64_dec_and_test(_v) (atomic64_sub_return(1, _v) == 0) | ||
143 | |||
166 | static __inline__ void atomic64_clear_mask(unsigned long mask, atomic64_t * v) | 144 | static __inline__ void atomic64_clear_mask(unsigned long mask, atomic64_t * v) |
167 | { | 145 | { |
168 | __CSG_LOOP(v, ~mask, "ngr"); | 146 | __CSG_LOOP(v, ~mask, "ngr"); |
169 | } | 147 | } |
148 | |||
170 | static __inline__ void atomic64_set_mask(unsigned long mask, atomic64_t * v) | 149 | static __inline__ void atomic64_set_mask(unsigned long mask, atomic64_t * v) |
171 | { | 150 | { |
172 | __CSG_LOOP(v, mask, "ogr"); | 151 | __CSG_LOOP(v, mask, "ogr"); |
173 | } | 152 | } |
174 | 153 | ||
175 | #undef __CSG_LOOP | 154 | static __inline__ long long atomic64_cmpxchg(atomic64_t *v, |
176 | #endif | 155 | long long old, long long new) |
177 | 156 | { | |
178 | /* | 157 | __asm__ __volatile__(" csg %0,%3,0(%2)\n" |
179 | returns 0 if expected_oldval==value in *v ( swap was successful ) | 158 | : "+d" (old), "=m" (v->counter) |
180 | returns 1 if unsuccessful. | 159 | : "a" (v), "d" (new), "m" (v->counter) |
160 | : "cc", "memory" ); | ||
161 | return old; | ||
162 | } | ||
181 | 163 | ||
182 | This is non-portable, use bitops or spinlocks instead! | 164 | static __inline__ int atomic64_add_unless(atomic64_t *v, |
183 | */ | 165 | long long a, long long u) |
184 | static __inline__ int | ||
185 | atomic_compare_and_swap(int expected_oldval,int new_val,atomic_t *v) | ||
186 | { | 166 | { |
187 | int retval; | 167 | long long c, old; |
188 | 168 | ||
189 | __asm__ __volatile__( | 169 | c = atomic64_read(v); |
190 | " lr %0,%3\n" | 170 | while (c != u && (old = atomic64_cmpxchg(v, c, c + a)) != c) |
191 | " cs %0,%4,0(%2)\n" | 171 | c = old; |
192 | " ipm %0\n" | 172 | return c != u; |
193 | " srl %0,28\n" | ||
194 | "0:" | ||
195 | : "=&d" (retval), "=m" (v->counter) | ||
196 | : "a" (v), "d" (expected_oldval) , "d" (new_val), | ||
197 | "m" (v->counter) : "cc", "memory" ); | ||
198 | return retval; | ||
199 | } | 173 | } |
200 | 174 | ||
201 | #define atomic_cmpxchg(v, o, n) (atomic_compare_and_swap((o), (n), &((v)->counter))) | 175 | #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) |
202 | 176 | ||
203 | #define atomic_add_unless(v, a, u) \ | 177 | #undef __CSG_LOOP |
204 | ({ \ | 178 | #endif |
205 | int c, old; \ | ||
206 | c = atomic_read(v); \ | ||
207 | while (c != (u) && (old = atomic_cmpxchg((v), c, c + (a))) != c) \ | ||
208 | c = old; \ | ||
209 | c != (u); \ | ||
210 | }) | ||
211 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) | ||
212 | 179 | ||
213 | #define smp_mb__before_atomic_dec() smp_mb() | 180 | #define smp_mb__before_atomic_dec() smp_mb() |
214 | #define smp_mb__after_atomic_dec() smp_mb() | 181 | #define smp_mb__after_atomic_dec() smp_mb() |
215 | #define smp_mb__before_atomic_inc() smp_mb() | 182 | #define smp_mb__before_atomic_inc() smp_mb() |
216 | #define smp_mb__after_atomic_inc() smp_mb() | 183 | #define smp_mb__after_atomic_inc() smp_mb() |
217 | 184 | ||
185 | #include <asm-generic/atomic.h> | ||
218 | #endif /* __KERNEL__ */ | 186 | #endif /* __KERNEL__ */ |
219 | #endif /* __ARCH_S390_ATOMIC__ */ | 187 | #endif /* __ARCH_S390_ATOMIC__ */ |
diff --git a/include/asm-s390/ccwdev.h b/include/asm-s390/ccwdev.h index 3eb231af5d51..12456cb2f882 100644 --- a/include/asm-s390/ccwdev.h +++ b/include/asm-s390/ccwdev.h | |||
@@ -185,8 +185,5 @@ extern struct ccw_device *ccw_device_probe_console(void); | |||
185 | extern int _ccw_device_get_device_number(struct ccw_device *); | 185 | extern int _ccw_device_get_device_number(struct ccw_device *); |
186 | extern int _ccw_device_get_subchannel_number(struct ccw_device *); | 186 | extern int _ccw_device_get_subchannel_number(struct ccw_device *); |
187 | 187 | ||
188 | extern struct device *s390_root_dev_register(const char *); | ||
189 | extern void s390_root_dev_unregister(struct device *); | ||
190 | |||
191 | extern void *ccw_device_get_chp_desc(struct ccw_device *, int); | 188 | extern void *ccw_device_get_chp_desc(struct ccw_device *, int); |
192 | #endif /* _S390_CCWDEV_H_ */ | 189 | #endif /* _S390_CCWDEV_H_ */ |
diff --git a/include/asm-s390/mman.h b/include/asm-s390/mman.h index ea86bd12204f..c8d5409b5d56 100644 --- a/include/asm-s390/mman.h +++ b/include/asm-s390/mman.h | |||
@@ -43,6 +43,7 @@ | |||
43 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 43 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 44 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
45 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 45 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
46 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
46 | 47 | ||
47 | /* compatibility flags */ | 48 | /* compatibility flags */ |
48 | #define MAP_ANON MAP_ANONYMOUS | 49 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-s390/qdio.h b/include/asm-s390/qdio.h index 0ddf0a8ef8de..7bc15f0231db 100644 --- a/include/asm-s390/qdio.h +++ b/include/asm-s390/qdio.h | |||
@@ -195,12 +195,14 @@ struct qdr { | |||
195 | /* | 195 | /* |
196 | * queue information block (QIB) | 196 | * queue information block (QIB) |
197 | */ | 197 | */ |
198 | #define QIB_AC_INBOUND_PCI_SUPPORTED 0x80 | 198 | #define QIB_AC_INBOUND_PCI_SUPPORTED 0x80 |
199 | #define QIB_AC_OUTBOUND_PCI_SUPPORTED 0x40 | 199 | #define QIB_AC_OUTBOUND_PCI_SUPPORTED 0x40 |
200 | #define QIB_RFLAGS_ENABLE_QEBSM 0x80 | ||
201 | |||
200 | struct qib { | 202 | struct qib { |
201 | unsigned int qfmt : 8; /* queue format */ | 203 | unsigned int qfmt : 8; /* queue format */ |
202 | unsigned int pfmt : 8; /* impl. dep. parameter format */ | 204 | unsigned int pfmt : 8; /* impl. dep. parameter format */ |
203 | unsigned int res1 : 8; /* reserved */ | 205 | unsigned int rflags : 8; /* QEBSM */ |
204 | unsigned int ac : 8; /* adapter characteristics */ | 206 | unsigned int ac : 8; /* adapter characteristics */ |
205 | unsigned int res2; /* reserved */ | 207 | unsigned int res2; /* reserved */ |
206 | #ifdef QDIO_32_BIT | 208 | #ifdef QDIO_32_BIT |
diff --git a/include/asm-s390/s390_rdev.h b/include/asm-s390/s390_rdev.h new file mode 100644 index 000000000000..3ad78f2b9c48 --- /dev/null +++ b/include/asm-s390/s390_rdev.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * include/asm-s390/ccwdev.h | ||
3 | * | ||
4 | * Copyright (C) 2002,2005 IBM Deutschland Entwicklung GmbH, IBM Corporation | ||
5 | * Author(s): Cornelia Huck <cohuck@de.ibm.com> | ||
6 | * Carsten Otte <cotte@de.ibm.com> | ||
7 | * | ||
8 | * Interface for s390 root device | ||
9 | */ | ||
10 | |||
11 | #ifndef _S390_RDEV_H_ | ||
12 | #define _S390_RDEV_H_ | ||
13 | extern struct device *s390_root_dev_register(const char *); | ||
14 | extern void s390_root_dev_unregister(struct device *); | ||
15 | #endif /* _S390_RDEV_H_ */ | ||
diff --git a/include/asm-s390/uaccess.h b/include/asm-s390/uaccess.h index 10a619da4761..be104f21c70a 100644 --- a/include/asm-s390/uaccess.h +++ b/include/asm-s390/uaccess.h | |||
@@ -61,8 +61,10 @@ | |||
61 | #define segment_eq(a,b) ((a).ar4 == (b).ar4) | 61 | #define segment_eq(a,b) ((a).ar4 == (b).ar4) |
62 | 62 | ||
63 | 63 | ||
64 | #define __access_ok(addr,size) (1) | 64 | static inline int __access_ok(const void *addr, unsigned long size) |
65 | 65 | { | |
66 | return 1; | ||
67 | } | ||
66 | #define access_ok(type,addr,size) __access_ok(addr,size) | 68 | #define access_ok(type,addr,size) __access_ok(addr,size) |
67 | 69 | ||
68 | /* | 70 | /* |
@@ -206,25 +208,25 @@ extern int __put_user_bad(void) __attribute__((noreturn)); | |||
206 | case 1: { \ | 208 | case 1: { \ |
207 | unsigned char __x; \ | 209 | unsigned char __x; \ |
208 | __get_user_asm(__x, ptr, __gu_err); \ | 210 | __get_user_asm(__x, ptr, __gu_err); \ |
209 | (x) = (__typeof__(*(ptr))) __x; \ | 211 | (x) = *(__typeof__(*(ptr)) *) &__x; \ |
210 | break; \ | 212 | break; \ |
211 | }; \ | 213 | }; \ |
212 | case 2: { \ | 214 | case 2: { \ |
213 | unsigned short __x; \ | 215 | unsigned short __x; \ |
214 | __get_user_asm(__x, ptr, __gu_err); \ | 216 | __get_user_asm(__x, ptr, __gu_err); \ |
215 | (x) = (__typeof__(*(ptr))) __x; \ | 217 | (x) = *(__typeof__(*(ptr)) *) &__x; \ |
216 | break; \ | 218 | break; \ |
217 | }; \ | 219 | }; \ |
218 | case 4: { \ | 220 | case 4: { \ |
219 | unsigned int __x; \ | 221 | unsigned int __x; \ |
220 | __get_user_asm(__x, ptr, __gu_err); \ | 222 | __get_user_asm(__x, ptr, __gu_err); \ |
221 | (x) = (__typeof__(*(ptr))) __x; \ | 223 | (x) = *(__typeof__(*(ptr)) *) &__x; \ |
222 | break; \ | 224 | break; \ |
223 | }; \ | 225 | }; \ |
224 | case 8: { \ | 226 | case 8: { \ |
225 | unsigned long long __x; \ | 227 | unsigned long long __x; \ |
226 | __get_user_asm(__x, ptr, __gu_err); \ | 228 | __get_user_asm(__x, ptr, __gu_err); \ |
227 | (x) = (__typeof__(*(ptr))) __x; \ | 229 | (x) = *(__typeof__(*(ptr)) *) &__x; \ |
228 | break; \ | 230 | break; \ |
229 | }; \ | 231 | }; \ |
230 | default: \ | 232 | default: \ |
diff --git a/include/asm-s390/unistd.h b/include/asm-s390/unistd.h index f97d92691f17..2861cdc243ad 100644 --- a/include/asm-s390/unistd.h +++ b/include/asm-s390/unistd.h | |||
@@ -539,7 +539,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ | |||
539 | #define __ARCH_WANT_SYS_SIGPENDING | 539 | #define __ARCH_WANT_SYS_SIGPENDING |
540 | #define __ARCH_WANT_SYS_SIGPROCMASK | 540 | #define __ARCH_WANT_SYS_SIGPROCMASK |
541 | #define __ARCH_WANT_SYS_RT_SIGACTION | 541 | #define __ARCH_WANT_SYS_RT_SIGACTION |
542 | # ifdef CONFIG_ARCH_S390_31 | 542 | # ifndef CONFIG_64BIT |
543 | # define __ARCH_WANT_STAT64 | 543 | # define __ARCH_WANT_STAT64 |
544 | # define __ARCH_WANT_SYS_TIME | 544 | # define __ARCH_WANT_SYS_TIME |
545 | # endif | 545 | # endif |
diff --git a/include/asm-s390/vtoc.h b/include/asm-s390/vtoc.h index 41d369f38b0e..d1de5b7ebb0b 100644 --- a/include/asm-s390/vtoc.h +++ b/include/asm-s390/vtoc.h | |||
@@ -176,4 +176,28 @@ struct vtoc_format7_label | |||
176 | struct vtoc_cchhb DS7PTRDS; /* pointer to next FMT7 DSCB */ | 176 | struct vtoc_cchhb DS7PTRDS; /* pointer to next FMT7 DSCB */ |
177 | } __attribute__ ((packed)); | 177 | } __attribute__ ((packed)); |
178 | 178 | ||
179 | struct vtoc_cms_label { | ||
180 | u8 label_id[4]; /* Label identifier */ | ||
181 | u8 vol_id[6]; /* Volid */ | ||
182 | u16 version_id; /* Version identifier */ | ||
183 | u32 block_size; /* Disk block size */ | ||
184 | u32 origin_ptr; /* Disk origin pointer */ | ||
185 | u32 usable_count; /* Number of usable cylinders/blocks */ | ||
186 | u32 formatted_count; /* Maximum number of formatted cylinders/ | ||
187 | * blocks */ | ||
188 | u32 block_count; /* Disk size in CMS blocks */ | ||
189 | u32 used_count; /* Number of CMS blocks in use */ | ||
190 | u32 fst_size; /* File Status Table (FST) size */ | ||
191 | u32 fst_count; /* Number of FSTs per CMS block */ | ||
192 | u8 format_date[6]; /* Disk FORMAT date */ | ||
193 | u8 reserved1[2]; | ||
194 | u32 disk_offset; /* Disk offset when reserved*/ | ||
195 | u32 map_block; /* Allocation Map Block with next hole */ | ||
196 | u32 hblk_disp; /* Displacement into HBLK data of next hole */ | ||
197 | u32 user_disp; /* Displacement into user part of Allocation | ||
198 | * map */ | ||
199 | u8 reserved2[4]; | ||
200 | u8 segment_name[8]; /* Name of shared segment */ | ||
201 | } __attribute__ ((packed)); | ||
202 | |||
179 | #endif /* _ASM_S390_VTOC_H */ | 203 | #endif /* _ASM_S390_VTOC_H */ |
diff --git a/include/asm-sh/atomic.h b/include/asm-sh/atomic.h index aabfd334462c..618d8e0de348 100644 --- a/include/asm-sh/atomic.h +++ b/include/asm-sh/atomic.h | |||
@@ -140,4 +140,5 @@ static __inline__ void atomic_set_mask(unsigned int mask, atomic_t *v) | |||
140 | #define smp_mb__before_atomic_inc() barrier() | 140 | #define smp_mb__before_atomic_inc() barrier() |
141 | #define smp_mb__after_atomic_inc() barrier() | 141 | #define smp_mb__after_atomic_inc() barrier() |
142 | 142 | ||
143 | #include <asm-generic/atomic.h> | ||
143 | #endif /* __ASM_SH_ATOMIC_H */ | 144 | #endif /* __ASM_SH_ATOMIC_H */ |
diff --git a/include/asm-sh/mman.h b/include/asm-sh/mman.h index 3ebab5f79db7..693bd55a3710 100644 --- a/include/asm-sh/mman.h +++ b/include/asm-sh/mman.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 35 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 36 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
37 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 37 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
38 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
38 | 39 | ||
39 | /* compatibility flags */ | 40 | /* compatibility flags */ |
40 | #define MAP_ANON MAP_ANONYMOUS | 41 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-sh64/atomic.h b/include/asm-sh64/atomic.h index 927a2bc27b30..f3ce5c0df13a 100644 --- a/include/asm-sh64/atomic.h +++ b/include/asm-sh64/atomic.h | |||
@@ -152,4 +152,5 @@ static __inline__ void atomic_set_mask(unsigned int mask, atomic_t *v) | |||
152 | #define smp_mb__before_atomic_inc() barrier() | 152 | #define smp_mb__before_atomic_inc() barrier() |
153 | #define smp_mb__after_atomic_inc() barrier() | 153 | #define smp_mb__after_atomic_inc() barrier() |
154 | 154 | ||
155 | #include <asm-generic/atomic.h> | ||
155 | #endif /* __ASM_SH64_ATOMIC_H */ | 156 | #endif /* __ASM_SH64_ATOMIC_H */ |
diff --git a/include/asm-sparc/atomic.h b/include/asm-sparc/atomic.h index 62bec7ad271c..accb4967e9d2 100644 --- a/include/asm-sparc/atomic.h +++ b/include/asm-sparc/atomic.h | |||
@@ -159,4 +159,5 @@ static inline int __atomic24_sub(int i, atomic24_t *v) | |||
159 | 159 | ||
160 | #endif /* !(__KERNEL__) */ | 160 | #endif /* !(__KERNEL__) */ |
161 | 161 | ||
162 | #include <asm-generic/atomic.h> | ||
162 | #endif /* !(__ARCH_SPARC_ATOMIC__) */ | 163 | #endif /* !(__ARCH_SPARC_ATOMIC__) */ |
diff --git a/include/asm-sparc/mman.h b/include/asm-sparc/mman.h index 138eb81dd70d..98435ad8619e 100644 --- a/include/asm-sparc/mman.h +++ b/include/asm-sparc/mman.h | |||
@@ -54,6 +54,7 @@ | |||
54 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 54 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
55 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 55 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ | 56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ |
57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ | ||
57 | 58 | ||
58 | /* compatibility flags */ | 59 | /* compatibility flags */ |
59 | #define MAP_ANON MAP_ANONYMOUS | 60 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-sparc64/atomic.h b/include/asm-sparc64/atomic.h index 3789fe315992..11f5aa5d108c 100644 --- a/include/asm-sparc64/atomic.h +++ b/include/asm-sparc64/atomic.h | |||
@@ -96,4 +96,5 @@ extern int atomic64_sub_ret(int, atomic64_t *); | |||
96 | #define smp_mb__after_atomic_inc() barrier() | 96 | #define smp_mb__after_atomic_inc() barrier() |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | #include <asm-generic/atomic.h> | ||
99 | #endif /* !(__ARCH_SPARC64_ATOMIC__) */ | 100 | #endif /* !(__ARCH_SPARC64_ATOMIC__) */ |
diff --git a/include/asm-sparc64/mman.h b/include/asm-sparc64/mman.h index 01cecf54357b..cb4b6156194d 100644 --- a/include/asm-sparc64/mman.h +++ b/include/asm-sparc64/mman.h | |||
@@ -54,6 +54,7 @@ | |||
54 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 54 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
55 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 55 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ | 56 | #define MADV_FREE 0x5 /* (Solaris) contents can be freed */ |
57 | #define MADV_REMOVE 0x6 /* remove these pages & resources */ | ||
57 | 58 | ||
58 | /* compatibility flags */ | 59 | /* compatibility flags */ |
59 | #define MAP_ANON MAP_ANONYMOUS | 60 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-v850/atomic.h b/include/asm-v850/atomic.h index bede3172ce7f..f5b9ab6f4e70 100644 --- a/include/asm-v850/atomic.h +++ b/include/asm-v850/atomic.h | |||
@@ -126,4 +126,5 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
126 | #define smp_mb__before_atomic_inc() barrier() | 126 | #define smp_mb__before_atomic_inc() barrier() |
127 | #define smp_mb__after_atomic_inc() barrier() | 127 | #define smp_mb__after_atomic_inc() barrier() |
128 | 128 | ||
129 | #include <asm-generic/atomic.h> | ||
129 | #endif /* __V850_ATOMIC_H__ */ | 130 | #endif /* __V850_ATOMIC_H__ */ |
diff --git a/include/asm-v850/mman.h b/include/asm-v850/mman.h index e2b90081b56f..edc79965193a 100644 --- a/include/asm-v850/mman.h +++ b/include/asm-v850/mman.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 32 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
33 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 33 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
34 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 34 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
35 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
35 | 36 | ||
36 | /* compatibility flags */ | 37 | /* compatibility flags */ |
37 | #define MAP_ANON MAP_ANONYMOUS | 38 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-x86_64/atomic.h b/include/asm-x86_64/atomic.h index 50db9f39274f..72eb071488c7 100644 --- a/include/asm-x86_64/atomic.h +++ b/include/asm-x86_64/atomic.h | |||
@@ -424,4 +424,5 @@ __asm__ __volatile__(LOCK "orl %0,%1" \ | |||
424 | #define smp_mb__before_atomic_inc() barrier() | 424 | #define smp_mb__before_atomic_inc() barrier() |
425 | #define smp_mb__after_atomic_inc() barrier() | 425 | #define smp_mb__after_atomic_inc() barrier() |
426 | 426 | ||
427 | #include <asm-generic/atomic.h> | ||
427 | #endif | 428 | #endif |
diff --git a/include/asm-x86_64/cacheflush.h b/include/asm-x86_64/cacheflush.h index b3189fb229d1..d32f7f58752a 100644 --- a/include/asm-x86_64/cacheflush.h +++ b/include/asm-x86_64/cacheflush.h | |||
@@ -27,4 +27,8 @@ void global_flush_tlb(void); | |||
27 | int change_page_attr(struct page *page, int numpages, pgprot_t prot); | 27 | int change_page_attr(struct page *page, int numpages, pgprot_t prot); |
28 | int change_page_attr_addr(unsigned long addr, int numpages, pgprot_t prot); | 28 | int change_page_attr_addr(unsigned long addr, int numpages, pgprot_t prot); |
29 | 29 | ||
30 | #ifdef CONFIG_DEBUG_RODATA | ||
31 | void mark_rodata_ro(void); | ||
32 | #endif | ||
33 | |||
30 | #endif /* _X8664_CACHEFLUSH_H */ | 34 | #endif /* _X8664_CACHEFLUSH_H */ |
diff --git a/include/asm-x86_64/mman.h b/include/asm-x86_64/mman.h index 78e60a4fd4ee..d0e97b74f735 100644 --- a/include/asm-x86_64/mman.h +++ b/include/asm-x86_64/mman.h | |||
@@ -36,6 +36,7 @@ | |||
36 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 36 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
37 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 37 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
38 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 38 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
39 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
39 | 40 | ||
40 | /* compatibility flags */ | 41 | /* compatibility flags */ |
41 | #define MAP_ANON MAP_ANONYMOUS | 42 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/asm-x86_64/mpspec.h b/include/asm-x86_64/mpspec.h index 6f8a17d105ab..10248a9a0582 100644 --- a/include/asm-x86_64/mpspec.h +++ b/include/asm-x86_64/mpspec.h | |||
@@ -76,7 +76,7 @@ struct mpc_config_bus | |||
76 | { | 76 | { |
77 | unsigned char mpc_type; | 77 | unsigned char mpc_type; |
78 | unsigned char mpc_busid; | 78 | unsigned char mpc_busid; |
79 | unsigned char mpc_bustype[6] __attribute((packed)); | 79 | unsigned char mpc_bustype[6]; |
80 | }; | 80 | }; |
81 | 81 | ||
82 | /* List of Bus Type string values, Intel MP Spec. */ | 82 | /* List of Bus Type string values, Intel MP Spec. */ |
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h index ecf58c7c1650..02888d7a496f 100644 --- a/include/asm-x86_64/pgtable.h +++ b/include/asm-x86_64/pgtable.h | |||
@@ -122,6 +122,8 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long | |||
122 | 122 | ||
123 | #define pte_same(a, b) ((a).pte == (b).pte) | 123 | #define pte_same(a, b) ((a).pte == (b).pte) |
124 | 124 | ||
125 | #define pte_pgprot(a) (__pgprot((a).pte & ~PHYSICAL_PAGE_MASK)) | ||
126 | |||
125 | #define PMD_SIZE (1UL << PMD_SHIFT) | 127 | #define PMD_SIZE (1UL << PMD_SHIFT) |
126 | #define PMD_MASK (~(PMD_SIZE-1)) | 128 | #define PMD_MASK (~(PMD_SIZE-1)) |
127 | #define PUD_SIZE (1UL << PUD_SHIFT) | 129 | #define PUD_SIZE (1UL << PUD_SHIFT) |
diff --git a/include/asm-x86_64/system.h b/include/asm-x86_64/system.h index 85348e02ad2e..b34cc2ee222b 100644 --- a/include/asm-x86_64/system.h +++ b/include/asm-x86_64/system.h | |||
@@ -315,6 +315,8 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, | |||
315 | #define local_irq_enable() __asm__ __volatile__("sti": : :"memory") | 315 | #define local_irq_enable() __asm__ __volatile__("sti": : :"memory") |
316 | /* used in the idle loop; sti takes one instruction cycle to complete */ | 316 | /* used in the idle loop; sti takes one instruction cycle to complete */ |
317 | #define safe_halt() __asm__ __volatile__("sti; hlt": : :"memory") | 317 | #define safe_halt() __asm__ __volatile__("sti; hlt": : :"memory") |
318 | /* used when interrupts are already enabled or to shutdown the processor */ | ||
319 | #define halt() __asm__ __volatile__("hlt": : :"memory") | ||
318 | 320 | ||
319 | #define irqs_disabled() \ | 321 | #define irqs_disabled() \ |
320 | ({ \ | 322 | ({ \ |
diff --git a/include/asm-xtensa/atomic.h b/include/asm-xtensa/atomic.h index 3670cc7695da..e2ce06b101ad 100644 --- a/include/asm-xtensa/atomic.h +++ b/include/asm-xtensa/atomic.h | |||
@@ -286,6 +286,7 @@ static inline void atomic_set_mask(unsigned int mask, atomic_t *v) | |||
286 | #define smp_mb__before_atomic_inc() barrier() | 286 | #define smp_mb__before_atomic_inc() barrier() |
287 | #define smp_mb__after_atomic_inc() barrier() | 287 | #define smp_mb__after_atomic_inc() barrier() |
288 | 288 | ||
289 | #include <asm-generic/atomic.h> | ||
289 | #endif /* __KERNEL__ */ | 290 | #endif /* __KERNEL__ */ |
290 | 291 | ||
291 | #endif /* _XTENSA_ATOMIC_H */ | 292 | #endif /* _XTENSA_ATOMIC_H */ |
diff --git a/include/asm-xtensa/mman.h b/include/asm-xtensa/mman.h index 9a95a45df996..082a7504925e 100644 --- a/include/asm-xtensa/mman.h +++ b/include/asm-xtensa/mman.h | |||
@@ -72,6 +72,7 @@ | |||
72 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ | 72 | #define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */ |
73 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ | 73 | #define MADV_WILLNEED 0x3 /* pre-fault pages */ |
74 | #define MADV_DONTNEED 0x4 /* discard these pages */ | 74 | #define MADV_DONTNEED 0x4 /* discard these pages */ |
75 | #define MADV_REMOVE 0x5 /* remove these pages & resources */ | ||
75 | 76 | ||
76 | /* compatibility flags */ | 77 | /* compatibility flags */ |
77 | #define MAP_ANON MAP_ANONYMOUS | 78 | #define MAP_ANON MAP_ANONYMOUS |
diff --git a/include/keys/user-type.h b/include/keys/user-type.h index 26f6ec38577a..a3dae1803f45 100644 --- a/include/keys/user-type.h +++ b/include/keys/user-type.h | |||
@@ -35,7 +35,6 @@ struct user_key_payload { | |||
35 | extern struct key_type key_type_user; | 35 | extern struct key_type key_type_user; |
36 | 36 | ||
37 | extern int user_instantiate(struct key *key, const void *data, size_t datalen); | 37 | extern int user_instantiate(struct key *key, const void *data, size_t datalen); |
38 | extern int user_duplicate(struct key *key, const struct key *source); | ||
39 | extern int user_update(struct key *key, const void *data, size_t datalen); | 38 | extern int user_update(struct key *key, const void *data, size_t datalen); |
40 | extern int user_match(const struct key *key, const void *criterion); | 39 | extern int user_match(const struct key *key, const void *criterion); |
41 | extern void user_destroy(struct key *key); | 40 | extern void user_destroy(struct key *key); |
diff --git a/include/linux/ata.h b/include/linux/ata.h index d2873b732bb1..94f77cce27fa 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -129,6 +129,7 @@ enum { | |||
129 | ATA_CMD_READ_EXT = 0x25, | 129 | ATA_CMD_READ_EXT = 0x25, |
130 | ATA_CMD_WRITE = 0xCA, | 130 | ATA_CMD_WRITE = 0xCA, |
131 | ATA_CMD_WRITE_EXT = 0x35, | 131 | ATA_CMD_WRITE_EXT = 0x35, |
132 | ATA_CMD_WRITE_FUA_EXT = 0x3D, | ||
132 | ATA_CMD_PIO_READ = 0x20, | 133 | ATA_CMD_PIO_READ = 0x20, |
133 | ATA_CMD_PIO_READ_EXT = 0x24, | 134 | ATA_CMD_PIO_READ_EXT = 0x24, |
134 | ATA_CMD_PIO_WRITE = 0x30, | 135 | ATA_CMD_PIO_WRITE = 0x30, |
@@ -137,10 +138,13 @@ enum { | |||
137 | ATA_CMD_READ_MULTI_EXT = 0x29, | 138 | ATA_CMD_READ_MULTI_EXT = 0x29, |
138 | ATA_CMD_WRITE_MULTI = 0xC5, | 139 | ATA_CMD_WRITE_MULTI = 0xC5, |
139 | ATA_CMD_WRITE_MULTI_EXT = 0x39, | 140 | ATA_CMD_WRITE_MULTI_EXT = 0x39, |
141 | ATA_CMD_WRITE_MULTI_FUA_EXT = 0xCE, | ||
140 | ATA_CMD_SET_FEATURES = 0xEF, | 142 | ATA_CMD_SET_FEATURES = 0xEF, |
141 | ATA_CMD_PACKET = 0xA0, | 143 | ATA_CMD_PACKET = 0xA0, |
142 | ATA_CMD_VERIFY = 0x40, | 144 | ATA_CMD_VERIFY = 0x40, |
143 | ATA_CMD_VERIFY_EXT = 0x42, | 145 | ATA_CMD_VERIFY_EXT = 0x42, |
146 | ATA_CMD_STANDBYNOW1 = 0xE0, | ||
147 | ATA_CMD_IDLEIMMEDIATE = 0xE1, | ||
144 | ATA_CMD_INIT_DEV_PARAMS = 0x91, | 148 | ATA_CMD_INIT_DEV_PARAMS = 0x91, |
145 | 149 | ||
146 | /* SETFEATURES stuff */ | 150 | /* SETFEATURES stuff */ |
@@ -192,6 +196,7 @@ enum { | |||
192 | ATA_TFLAG_DEVICE = (1 << 2), /* enable r/w to device reg */ | 196 | ATA_TFLAG_DEVICE = (1 << 2), /* enable r/w to device reg */ |
193 | ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */ | 197 | ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */ |
194 | ATA_TFLAG_LBA = (1 << 4), /* enable LBA */ | 198 | ATA_TFLAG_LBA = (1 << 4), /* enable LBA */ |
199 | ATA_TFLAG_FUA = (1 << 5), /* enable FUA */ | ||
195 | }; | 200 | }; |
196 | 201 | ||
197 | enum ata_tf_protocols { | 202 | enum ata_tf_protocols { |
@@ -245,7 +250,8 @@ struct ata_taskfile { | |||
245 | #define ata_id_is_sata(id) ((id)[93] == 0) | 250 | #define ata_id_is_sata(id) ((id)[93] == 0) |
246 | #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6)) | 251 | #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6)) |
247 | #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5)) | 252 | #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5)) |
248 | #define ata_id_has_flush(id) ((id)[83] & (1 << 12)) | 253 | #define ata_id_has_fua(id) ((id)[84] & (1 << 6)) |
254 | #define ata_id_has_flush(id) ((id)[83] & (1 << 12)) | ||
249 | #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13)) | 255 | #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13)) |
250 | #define ata_id_has_lba48(id) ((id)[83] & (1 << 10)) | 256 | #define ata_id_has_lba48(id) ((id)[83] & (1 << 10)) |
251 | #define ata_id_has_wcache(id) ((id)[82] & (1 << 5)) | 257 | #define ata_id_has_wcache(id) ((id)[82] & (1 << 5)) |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index a18500d196e1..fb0985377421 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -102,7 +102,7 @@ void copy_io_context(struct io_context **pdst, struct io_context **psrc); | |||
102 | void swap_io_context(struct io_context **ioc1, struct io_context **ioc2); | 102 | void swap_io_context(struct io_context **ioc1, struct io_context **ioc2); |
103 | 103 | ||
104 | struct request; | 104 | struct request; |
105 | typedef void (rq_end_io_fn)(struct request *); | 105 | typedef void (rq_end_io_fn)(struct request *, int); |
106 | 106 | ||
107 | struct request_list { | 107 | struct request_list { |
108 | int count[2]; | 108 | int count[2]; |
@@ -207,6 +207,7 @@ enum rq_flag_bits { | |||
207 | __REQ_SORTED, /* elevator knows about this request */ | 207 | __REQ_SORTED, /* elevator knows about this request */ |
208 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ | 208 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ |
209 | __REQ_HARDBARRIER, /* may not be passed by drive either */ | 209 | __REQ_HARDBARRIER, /* may not be passed by drive either */ |
210 | __REQ_FUA, /* forced unit access */ | ||
210 | __REQ_CMD, /* is a regular fs rw request */ | 211 | __REQ_CMD, /* is a regular fs rw request */ |
211 | __REQ_NOMERGE, /* don't touch this for merging */ | 212 | __REQ_NOMERGE, /* don't touch this for merging */ |
212 | __REQ_STARTED, /* drive already may have started this one */ | 213 | __REQ_STARTED, /* drive already may have started this one */ |
@@ -230,9 +231,7 @@ enum rq_flag_bits { | |||
230 | __REQ_PM_SUSPEND, /* suspend request */ | 231 | __REQ_PM_SUSPEND, /* suspend request */ |
231 | __REQ_PM_RESUME, /* resume request */ | 232 | __REQ_PM_RESUME, /* resume request */ |
232 | __REQ_PM_SHUTDOWN, /* shutdown request */ | 233 | __REQ_PM_SHUTDOWN, /* shutdown request */ |
233 | __REQ_BAR_PREFLUSH, /* barrier pre-flush done */ | 234 | __REQ_ORDERED_COLOR, /* is before or after barrier */ |
234 | __REQ_BAR_POSTFLUSH, /* barrier post-flush */ | ||
235 | __REQ_BAR_FLUSH, /* rq is the flush request */ | ||
236 | __REQ_NR_BITS, /* stops here */ | 235 | __REQ_NR_BITS, /* stops here */ |
237 | }; | 236 | }; |
238 | 237 | ||
@@ -241,6 +240,7 @@ enum rq_flag_bits { | |||
241 | #define REQ_SORTED (1 << __REQ_SORTED) | 240 | #define REQ_SORTED (1 << __REQ_SORTED) |
242 | #define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER) | 241 | #define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER) |
243 | #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER) | 242 | #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER) |
243 | #define REQ_FUA (1 << __REQ_FUA) | ||
244 | #define REQ_CMD (1 << __REQ_CMD) | 244 | #define REQ_CMD (1 << __REQ_CMD) |
245 | #define REQ_NOMERGE (1 << __REQ_NOMERGE) | 245 | #define REQ_NOMERGE (1 << __REQ_NOMERGE) |
246 | #define REQ_STARTED (1 << __REQ_STARTED) | 246 | #define REQ_STARTED (1 << __REQ_STARTED) |
@@ -260,9 +260,7 @@ enum rq_flag_bits { | |||
260 | #define REQ_PM_SUSPEND (1 << __REQ_PM_SUSPEND) | 260 | #define REQ_PM_SUSPEND (1 << __REQ_PM_SUSPEND) |
261 | #define REQ_PM_RESUME (1 << __REQ_PM_RESUME) | 261 | #define REQ_PM_RESUME (1 << __REQ_PM_RESUME) |
262 | #define REQ_PM_SHUTDOWN (1 << __REQ_PM_SHUTDOWN) | 262 | #define REQ_PM_SHUTDOWN (1 << __REQ_PM_SHUTDOWN) |
263 | #define REQ_BAR_PREFLUSH (1 << __REQ_BAR_PREFLUSH) | 263 | #define REQ_ORDERED_COLOR (1 << __REQ_ORDERED_COLOR) |
264 | #define REQ_BAR_POSTFLUSH (1 << __REQ_BAR_POSTFLUSH) | ||
265 | #define REQ_BAR_FLUSH (1 << __REQ_BAR_FLUSH) | ||
266 | 264 | ||
267 | /* | 265 | /* |
268 | * State information carried for REQ_PM_SUSPEND and REQ_PM_RESUME | 266 | * State information carried for REQ_PM_SUSPEND and REQ_PM_RESUME |
@@ -292,8 +290,7 @@ struct bio_vec; | |||
292 | typedef int (merge_bvec_fn) (request_queue_t *, struct bio *, struct bio_vec *); | 290 | typedef int (merge_bvec_fn) (request_queue_t *, struct bio *, struct bio_vec *); |
293 | typedef void (activity_fn) (void *data, int rw); | 291 | typedef void (activity_fn) (void *data, int rw); |
294 | typedef int (issue_flush_fn) (request_queue_t *, struct gendisk *, sector_t *); | 292 | typedef int (issue_flush_fn) (request_queue_t *, struct gendisk *, sector_t *); |
295 | typedef int (prepare_flush_fn) (request_queue_t *, struct request *); | 293 | typedef void (prepare_flush_fn) (request_queue_t *, struct request *); |
296 | typedef void (end_flush_fn) (request_queue_t *, struct request *); | ||
297 | 294 | ||
298 | enum blk_queue_state { | 295 | enum blk_queue_state { |
299 | Queue_down, | 296 | Queue_down, |
@@ -335,7 +332,6 @@ struct request_queue | |||
335 | activity_fn *activity_fn; | 332 | activity_fn *activity_fn; |
336 | issue_flush_fn *issue_flush_fn; | 333 | issue_flush_fn *issue_flush_fn; |
337 | prepare_flush_fn *prepare_flush_fn; | 334 | prepare_flush_fn *prepare_flush_fn; |
338 | end_flush_fn *end_flush_fn; | ||
339 | 335 | ||
340 | /* | 336 | /* |
341 | * Dispatch queue sorting | 337 | * Dispatch queue sorting |
@@ -420,14 +416,11 @@ struct request_queue | |||
420 | /* | 416 | /* |
421 | * reserved for flush operations | 417 | * reserved for flush operations |
422 | */ | 418 | */ |
423 | struct request *flush_rq; | 419 | unsigned int ordered, next_ordered, ordseq; |
424 | unsigned char ordered; | 420 | int orderr, ordcolor; |
425 | }; | 421 | struct request pre_flush_rq, bar_rq, post_flush_rq; |
426 | 422 | struct request *orig_bar_rq; | |
427 | enum { | 423 | unsigned int bi_size; |
428 | QUEUE_ORDERED_NONE, | ||
429 | QUEUE_ORDERED_TAG, | ||
430 | QUEUE_ORDERED_FLUSH, | ||
431 | }; | 424 | }; |
432 | 425 | ||
433 | #define RQ_INACTIVE (-1) | 426 | #define RQ_INACTIVE (-1) |
@@ -445,12 +438,51 @@ enum { | |||
445 | #define QUEUE_FLAG_REENTER 6 /* Re-entrancy avoidance */ | 438 | #define QUEUE_FLAG_REENTER 6 /* Re-entrancy avoidance */ |
446 | #define QUEUE_FLAG_PLUGGED 7 /* queue is plugged */ | 439 | #define QUEUE_FLAG_PLUGGED 7 /* queue is plugged */ |
447 | #define QUEUE_FLAG_ELVSWITCH 8 /* don't use elevator, just do FIFO */ | 440 | #define QUEUE_FLAG_ELVSWITCH 8 /* don't use elevator, just do FIFO */ |
448 | #define QUEUE_FLAG_FLUSH 9 /* doing barrier flush sequence */ | 441 | |
442 | enum { | ||
443 | /* | ||
444 | * Hardbarrier is supported with one of the following methods. | ||
445 | * | ||
446 | * NONE : hardbarrier unsupported | ||
447 | * DRAIN : ordering by draining is enough | ||
448 | * DRAIN_FLUSH : ordering by draining w/ pre and post flushes | ||
449 | * DRAIN_FUA : ordering by draining w/ pre flush and FUA write | ||
450 | * TAG : ordering by tag is enough | ||
451 | * TAG_FLUSH : ordering by tag w/ pre and post flushes | ||
452 | * TAG_FUA : ordering by tag w/ pre flush and FUA write | ||
453 | */ | ||
454 | QUEUE_ORDERED_NONE = 0x00, | ||
455 | QUEUE_ORDERED_DRAIN = 0x01, | ||
456 | QUEUE_ORDERED_TAG = 0x02, | ||
457 | |||
458 | QUEUE_ORDERED_PREFLUSH = 0x10, | ||
459 | QUEUE_ORDERED_POSTFLUSH = 0x20, | ||
460 | QUEUE_ORDERED_FUA = 0x40, | ||
461 | |||
462 | QUEUE_ORDERED_DRAIN_FLUSH = QUEUE_ORDERED_DRAIN | | ||
463 | QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH, | ||
464 | QUEUE_ORDERED_DRAIN_FUA = QUEUE_ORDERED_DRAIN | | ||
465 | QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA, | ||
466 | QUEUE_ORDERED_TAG_FLUSH = QUEUE_ORDERED_TAG | | ||
467 | QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH, | ||
468 | QUEUE_ORDERED_TAG_FUA = QUEUE_ORDERED_TAG | | ||
469 | QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA, | ||
470 | |||
471 | /* | ||
472 | * Ordered operation sequence | ||
473 | */ | ||
474 | QUEUE_ORDSEQ_STARTED = 0x01, /* flushing in progress */ | ||
475 | QUEUE_ORDSEQ_DRAIN = 0x02, /* waiting for the queue to be drained */ | ||
476 | QUEUE_ORDSEQ_PREFLUSH = 0x04, /* pre-flushing in progress */ | ||
477 | QUEUE_ORDSEQ_BAR = 0x08, /* original barrier req in progress */ | ||
478 | QUEUE_ORDSEQ_POSTFLUSH = 0x10, /* post-flushing in progress */ | ||
479 | QUEUE_ORDSEQ_DONE = 0x20, | ||
480 | }; | ||
449 | 481 | ||
450 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) | 482 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) |
451 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) | 483 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) |
452 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) | 484 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) |
453 | #define blk_queue_flushing(q) test_bit(QUEUE_FLAG_FLUSH, &(q)->queue_flags) | 485 | #define blk_queue_flushing(q) ((q)->ordseq) |
454 | 486 | ||
455 | #define blk_fs_request(rq) ((rq)->flags & REQ_CMD) | 487 | #define blk_fs_request(rq) ((rq)->flags & REQ_CMD) |
456 | #define blk_pc_request(rq) ((rq)->flags & REQ_BLOCK_PC) | 488 | #define blk_pc_request(rq) ((rq)->flags & REQ_BLOCK_PC) |
@@ -466,8 +498,7 @@ enum { | |||
466 | 498 | ||
467 | #define blk_sorted_rq(rq) ((rq)->flags & REQ_SORTED) | 499 | #define blk_sorted_rq(rq) ((rq)->flags & REQ_SORTED) |
468 | #define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER) | 500 | #define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER) |
469 | #define blk_barrier_preflush(rq) ((rq)->flags & REQ_BAR_PREFLUSH) | 501 | #define blk_fua_rq(rq) ((rq)->flags & REQ_FUA) |
470 | #define blk_barrier_postflush(rq) ((rq)->flags & REQ_BAR_POSTFLUSH) | ||
471 | 502 | ||
472 | #define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist) | 503 | #define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist) |
473 | 504 | ||
@@ -560,7 +591,7 @@ extern void register_disk(struct gendisk *dev); | |||
560 | extern void generic_make_request(struct bio *bio); | 591 | extern void generic_make_request(struct bio *bio); |
561 | extern void blk_put_request(struct request *); | 592 | extern void blk_put_request(struct request *); |
562 | extern void __blk_put_request(request_queue_t *, struct request *); | 593 | extern void __blk_put_request(request_queue_t *, struct request *); |
563 | extern void blk_end_sync_rq(struct request *rq); | 594 | extern void blk_end_sync_rq(struct request *rq, int error); |
564 | extern void blk_attempt_remerge(request_queue_t *, struct request *); | 595 | extern void blk_attempt_remerge(request_queue_t *, struct request *); |
565 | extern struct request *blk_get_request(request_queue_t *, int, gfp_t); | 596 | extern struct request *blk_get_request(request_queue_t *, int, gfp_t); |
566 | extern void blk_insert_request(request_queue_t *, struct request *, int, void *); | 597 | extern void blk_insert_request(request_queue_t *, struct request *, int, void *); |
@@ -582,8 +613,7 @@ extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_io | |||
582 | extern int blk_execute_rq(request_queue_t *, struct gendisk *, | 613 | extern int blk_execute_rq(request_queue_t *, struct gendisk *, |
583 | struct request *, int); | 614 | struct request *, int); |
584 | extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *, | 615 | extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *, |
585 | struct request *, int, | 616 | struct request *, int, rq_end_io_fn *); |
586 | void (*done)(struct request *)); | ||
587 | 617 | ||
588 | static inline request_queue_t *bdev_get_queue(struct block_device *bdev) | 618 | static inline request_queue_t *bdev_get_queue(struct block_device *bdev) |
589 | { | 619 | { |
@@ -614,7 +644,7 @@ static inline void blk_run_address_space(struct address_space *mapping) | |||
614 | */ | 644 | */ |
615 | extern int end_that_request_first(struct request *, int, int); | 645 | extern int end_that_request_first(struct request *, int, int); |
616 | extern int end_that_request_chunk(struct request *, int, int); | 646 | extern int end_that_request_chunk(struct request *, int, int); |
617 | extern void end_that_request_last(struct request *); | 647 | extern void end_that_request_last(struct request *, int); |
618 | extern void end_request(struct request *req, int uptodate); | 648 | extern void end_request(struct request *req, int uptodate); |
619 | 649 | ||
620 | /* | 650 | /* |
@@ -665,11 +695,12 @@ extern void blk_queue_prep_rq(request_queue_t *, prep_rq_fn *pfn); | |||
665 | extern void blk_queue_merge_bvec(request_queue_t *, merge_bvec_fn *); | 695 | extern void blk_queue_merge_bvec(request_queue_t *, merge_bvec_fn *); |
666 | extern void blk_queue_dma_alignment(request_queue_t *, int); | 696 | extern void blk_queue_dma_alignment(request_queue_t *, int); |
667 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); | 697 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); |
668 | extern void blk_queue_ordered(request_queue_t *, int); | 698 | extern int blk_queue_ordered(request_queue_t *, unsigned, prepare_flush_fn *); |
669 | extern void blk_queue_issue_flush_fn(request_queue_t *, issue_flush_fn *); | 699 | extern void blk_queue_issue_flush_fn(request_queue_t *, issue_flush_fn *); |
670 | extern struct request *blk_start_pre_flush(request_queue_t *,struct request *); | 700 | extern int blk_do_ordered(request_queue_t *, struct request **); |
671 | extern int blk_complete_barrier_rq(request_queue_t *, struct request *, int); | 701 | extern unsigned blk_ordered_cur_seq(request_queue_t *); |
672 | extern int blk_complete_barrier_rq_locked(request_queue_t *, struct request *, int); | 702 | extern unsigned blk_ordered_req_seq(struct request *); |
703 | extern void blk_ordered_complete_seq(request_queue_t *, unsigned, int); | ||
673 | 704 | ||
674 | extern int blk_rq_map_sg(request_queue_t *, struct request *, struct scatterlist *); | 705 | extern int blk_rq_map_sg(request_queue_t *, struct request *, struct scatterlist *); |
675 | extern void blk_dump_rq_flags(struct request *, char *); | 706 | extern void blk_dump_rq_flags(struct request *, char *); |
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 3b03b0b868dd..993da8cc9706 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
@@ -43,50 +43,38 @@ typedef struct bootmem_data { | |||
43 | extern unsigned long __init bootmem_bootmap_pages (unsigned long); | 43 | extern unsigned long __init bootmem_bootmap_pages (unsigned long); |
44 | extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); | 44 | extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); |
45 | extern void __init free_bootmem (unsigned long addr, unsigned long size); | 45 | extern void __init free_bootmem (unsigned long addr, unsigned long size); |
46 | extern void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal, unsigned long limit); | 46 | extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal); |
47 | extern void * __init __alloc_bootmem_low(unsigned long size, | ||
48 | unsigned long align, | ||
49 | unsigned long goal); | ||
50 | extern void * __init __alloc_bootmem_low_node(pg_data_t *pgdat, | ||
51 | unsigned long size, | ||
52 | unsigned long align, | ||
53 | unsigned long goal); | ||
47 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE | 54 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE |
48 | extern void __init reserve_bootmem (unsigned long addr, unsigned long size); | 55 | extern void __init reserve_bootmem (unsigned long addr, unsigned long size); |
49 | #define alloc_bootmem(x) \ | 56 | #define alloc_bootmem(x) \ |
50 | __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 57 | __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) |
51 | #define alloc_bootmem_low(x) \ | 58 | #define alloc_bootmem_low(x) \ |
52 | __alloc_bootmem((x), SMP_CACHE_BYTES, 0) | 59 | __alloc_bootmem_low((x), SMP_CACHE_BYTES, 0) |
53 | #define alloc_bootmem_pages(x) \ | 60 | #define alloc_bootmem_pages(x) \ |
54 | __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 61 | __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) |
55 | #define alloc_bootmem_low_pages(x) \ | 62 | #define alloc_bootmem_low_pages(x) \ |
56 | __alloc_bootmem((x), PAGE_SIZE, 0) | 63 | __alloc_bootmem_low((x), PAGE_SIZE, 0) |
57 | |||
58 | #define alloc_bootmem_limit(x, limit) \ | ||
59 | __alloc_bootmem_limit((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit)) | ||
60 | #define alloc_bootmem_low_limit(x, limit) \ | ||
61 | __alloc_bootmem_limit((x), SMP_CACHE_BYTES, 0, (limit)) | ||
62 | #define alloc_bootmem_pages_limit(x, limit) \ | ||
63 | __alloc_bootmem_limit((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit)) | ||
64 | #define alloc_bootmem_low_pages_limit(x, limit) \ | ||
65 | __alloc_bootmem_limit((x), PAGE_SIZE, 0, (limit)) | ||
66 | |||
67 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ | 64 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ |
68 | extern unsigned long __init free_all_bootmem (void); | 65 | extern unsigned long __init free_all_bootmem (void); |
69 | 66 | extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal); | |
70 | extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn); | 67 | extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn); |
71 | extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size); | 68 | extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size); |
72 | extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size); | 69 | extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size); |
73 | extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat); | 70 | extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat); |
74 | extern void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal, unsigned long limit); | ||
75 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE | 71 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE |
76 | #define alloc_bootmem_node(pgdat, x) \ | 72 | #define alloc_bootmem_node(pgdat, x) \ |
77 | __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 73 | __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) |
78 | #define alloc_bootmem_pages_node(pgdat, x) \ | 74 | #define alloc_bootmem_pages_node(pgdat, x) \ |
79 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 75 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) |
80 | #define alloc_bootmem_low_pages_node(pgdat, x) \ | 76 | #define alloc_bootmem_low_pages_node(pgdat, x) \ |
81 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0) | 77 | __alloc_bootmem_low_node((pgdat), (x), PAGE_SIZE, 0) |
82 | |||
83 | #define alloc_bootmem_node_limit(pgdat, x, limit) \ | ||
84 | __alloc_bootmem_node_limit((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit)) | ||
85 | #define alloc_bootmem_pages_node_limit(pgdat, x, limit) \ | ||
86 | __alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit)) | ||
87 | #define alloc_bootmem_low_pages_node_limit(pgdat, x, limit) \ | ||
88 | __alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, 0, (limit)) | ||
89 | |||
90 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ | 78 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ |
91 | 79 | ||
92 | #ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP | 80 | #ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP |
@@ -123,15 +111,5 @@ extern void *__init alloc_large_system_hash(const char *tablename, | |||
123 | #endif | 111 | #endif |
124 | extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */ | 112 | extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */ |
125 | 113 | ||
126 | static inline void *__alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal) | ||
127 | { | ||
128 | return __alloc_bootmem_limit(size, align, goal, 0); | ||
129 | } | ||
130 | |||
131 | static inline void *__alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, | ||
132 | unsigned long goal) | ||
133 | { | ||
134 | return __alloc_bootmem_node_limit(pgdat, size, align, goal, 0); | ||
135 | } | ||
136 | 114 | ||
137 | #endif /* _LINUX_BOOTMEM_H */ | 115 | #endif /* _LINUX_BOOTMEM_H */ |
diff --git a/include/linux/dm-ioctl.h b/include/linux/dm-ioctl.h index f5eb6b6cd109..fa75ba0d635e 100644 --- a/include/linux/dm-ioctl.h +++ b/include/linux/dm-ioctl.h | |||
@@ -272,9 +272,9 @@ typedef char ioctl_struct[308]; | |||
272 | #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl) | 272 | #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl) |
273 | 273 | ||
274 | #define DM_VERSION_MAJOR 4 | 274 | #define DM_VERSION_MAJOR 4 |
275 | #define DM_VERSION_MINOR 4 | 275 | #define DM_VERSION_MINOR 5 |
276 | #define DM_VERSION_PATCHLEVEL 0 | 276 | #define DM_VERSION_PATCHLEVEL 0 |
277 | #define DM_VERSION_EXTRA "-ioctl (2005-01-12)" | 277 | #define DM_VERSION_EXTRA "-ioctl (2005-10-04)" |
278 | 278 | ||
279 | /* Status bits */ | 279 | /* Status bits */ |
280 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ | 280 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ |
@@ -301,8 +301,13 @@ typedef char ioctl_struct[308]; | |||
301 | #define DM_BUFFER_FULL_FLAG (1 << 8) /* Out */ | 301 | #define DM_BUFFER_FULL_FLAG (1 << 8) /* Out */ |
302 | 302 | ||
303 | /* | 303 | /* |
304 | * Set this to improve performance when you aren't going to use open_count | 304 | * Set this to improve performance when you aren't going to use open_count. |
305 | */ | 305 | */ |
306 | #define DM_SKIP_BDGET_FLAG (1 << 9) /* In */ | 306 | #define DM_SKIP_BDGET_FLAG (1 << 9) /* In */ |
307 | 307 | ||
308 | /* | ||
309 | * Set this to avoid attempting to freeze any filesystem when suspending. | ||
310 | */ | ||
311 | #define DM_SKIP_LOCKFS_FLAG (1 << 10) /* In */ | ||
312 | |||
308 | #endif /* _LINUX_DM_IOCTL_H */ | 313 | #endif /* _LINUX_DM_IOCTL_H */ |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index a74c27e460ba..fb80fa44c4dd 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -130,6 +130,7 @@ extern int elv_try_last_merge(request_queue_t *, struct bio *); | |||
130 | #define ELEVATOR_INSERT_FRONT 1 | 130 | #define ELEVATOR_INSERT_FRONT 1 |
131 | #define ELEVATOR_INSERT_BACK 2 | 131 | #define ELEVATOR_INSERT_BACK 2 |
132 | #define ELEVATOR_INSERT_SORT 3 | 132 | #define ELEVATOR_INSERT_SORT 3 |
133 | #define ELEVATOR_INSERT_REQUEUE 4 | ||
133 | 134 | ||
134 | /* | 135 | /* |
135 | * return values from elevator_may_queue_fn | 136 | * return values from elevator_may_queue_fn |
diff --git a/include/linux/fs.h b/include/linux/fs.h index ed9a41a71e8b..2c9c48d65630 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -760,7 +760,7 @@ extern struct file_lock *posix_test_lock(struct file *, struct file_lock *); | |||
760 | extern int posix_lock_file(struct file *, struct file_lock *); | 760 | extern int posix_lock_file(struct file *, struct file_lock *); |
761 | extern int posix_lock_file_wait(struct file *, struct file_lock *); | 761 | extern int posix_lock_file_wait(struct file *, struct file_lock *); |
762 | extern void posix_block_lock(struct file_lock *, struct file_lock *); | 762 | extern void posix_block_lock(struct file_lock *, struct file_lock *); |
763 | extern void posix_unblock_lock(struct file *, struct file_lock *); | 763 | extern int posix_unblock_lock(struct file *, struct file_lock *); |
764 | extern int posix_locks_deadlock(struct file_lock *, struct file_lock *); | 764 | extern int posix_locks_deadlock(struct file_lock *, struct file_lock *); |
765 | extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl); | 765 | extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl); |
766 | extern int __break_lease(struct inode *inode, unsigned int flags); | 766 | extern int __break_lease(struct inode *inode, unsigned int flags); |
@@ -1050,6 +1050,7 @@ struct inode_operations { | |||
1050 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); | 1050 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); |
1051 | ssize_t (*listxattr) (struct dentry *, char *, size_t); | 1051 | ssize_t (*listxattr) (struct dentry *, char *, size_t); |
1052 | int (*removexattr) (struct dentry *, const char *); | 1052 | int (*removexattr) (struct dentry *, const char *); |
1053 | void (*truncate_range)(struct inode *, loff_t, loff_t); | ||
1053 | }; | 1054 | }; |
1054 | 1055 | ||
1055 | struct seq_file; | 1056 | struct seq_file; |
diff --git a/include/linux/fuse.h b/include/linux/fuse.h index b76b558b03d4..528959c52f1b 100644 --- a/include/linux/fuse.h +++ b/include/linux/fuse.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #define FUSE_KERNEL_VERSION 7 | 14 | #define FUSE_KERNEL_VERSION 7 |
15 | 15 | ||
16 | /** Minor version number of this interface */ | 16 | /** Minor version number of this interface */ |
17 | #define FUSE_KERNEL_MINOR_VERSION 3 | 17 | #define FUSE_KERNEL_MINOR_VERSION 5 |
18 | 18 | ||
19 | /** The node ID of the root inode */ | 19 | /** The node ID of the root inode */ |
20 | #define FUSE_ROOT_ID 1 | 20 | #define FUSE_ROOT_ID 1 |
@@ -53,6 +53,9 @@ struct fuse_kstatfs { | |||
53 | __u64 ffree; | 53 | __u64 ffree; |
54 | __u32 bsize; | 54 | __u32 bsize; |
55 | __u32 namelen; | 55 | __u32 namelen; |
56 | __u32 frsize; | ||
57 | __u32 padding; | ||
58 | __u32 spare[6]; | ||
56 | }; | 59 | }; |
57 | 60 | ||
58 | #define FATTR_MODE (1 << 0) | 61 | #define FATTR_MODE (1 << 0) |
@@ -105,12 +108,8 @@ enum fuse_opcode { | |||
105 | FUSE_CREATE = 35 | 108 | FUSE_CREATE = 35 |
106 | }; | 109 | }; |
107 | 110 | ||
108 | /* Conservative buffer size for the client */ | 111 | /* The read buffer is required to be at least 8k, but may be much larger */ |
109 | #define FUSE_MAX_IN 8192 | 112 | #define FUSE_MIN_READ_BUFFER 8192 |
110 | |||
111 | #define FUSE_NAME_MAX 1024 | ||
112 | #define FUSE_SYMLINK_MAX 4096 | ||
113 | #define FUSE_XATTR_SIZE_MAX 4096 | ||
114 | 113 | ||
115 | struct fuse_entry_out { | 114 | struct fuse_entry_out { |
116 | __u64 nodeid; /* Inode ID */ | 115 | __u64 nodeid; /* Inode ID */ |
@@ -213,6 +212,8 @@ struct fuse_write_out { | |||
213 | __u32 padding; | 212 | __u32 padding; |
214 | }; | 213 | }; |
215 | 214 | ||
215 | #define FUSE_COMPAT_STATFS_SIZE 48 | ||
216 | |||
216 | struct fuse_statfs_out { | 217 | struct fuse_statfs_out { |
217 | struct fuse_kstatfs st; | 218 | struct fuse_kstatfs st; |
218 | }; | 219 | }; |
@@ -243,9 +244,16 @@ struct fuse_access_in { | |||
243 | __u32 padding; | 244 | __u32 padding; |
244 | }; | 245 | }; |
245 | 246 | ||
246 | struct fuse_init_in_out { | 247 | struct fuse_init_in { |
248 | __u32 major; | ||
249 | __u32 minor; | ||
250 | }; | ||
251 | |||
252 | struct fuse_init_out { | ||
247 | __u32 major; | 253 | __u32 major; |
248 | __u32 minor; | 254 | __u32 minor; |
255 | __u32 unused[3]; | ||
256 | __u32 max_write; | ||
249 | }; | 257 | }; |
250 | 258 | ||
251 | struct fuse_in_header { | 259 | struct fuse_in_header { |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 1056717ee501..68d82ad6b17c 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -22,7 +22,7 @@ int hugetlb_report_meminfo(char *); | |||
22 | int hugetlb_report_node_meminfo(int, char *); | 22 | int hugetlb_report_node_meminfo(int, char *); |
23 | int is_hugepage_mem_enough(size_t); | 23 | int is_hugepage_mem_enough(size_t); |
24 | unsigned long hugetlb_total_pages(void); | 24 | unsigned long hugetlb_total_pages(void); |
25 | struct page *alloc_huge_page(void); | 25 | struct page *alloc_huge_page(struct vm_area_struct *, unsigned long); |
26 | void free_huge_page(struct page *); | 26 | void free_huge_page(struct page *); |
27 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 27 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
28 | unsigned long address, int write_access); | 28 | unsigned long address, int write_access); |
@@ -97,7 +97,7 @@ static inline unsigned long hugetlb_total_pages(void) | |||
97 | #define is_hugepage_only_range(mm, addr, len) 0 | 97 | #define is_hugepage_only_range(mm, addr, len) 0 |
98 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ | 98 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ |
99 | do { } while (0) | 99 | do { } while (0) |
100 | #define alloc_huge_page() ({ NULL; }) | 100 | #define alloc_huge_page(vma, addr) ({ NULL; }) |
101 | #define free_huge_page(p) ({ (void)(p); BUG(); }) | 101 | #define free_huge_page(p) ({ (void)(p); BUG(); }) |
102 | #define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; }) | 102 | #define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; }) |
103 | 103 | ||
diff --git a/include/linux/i2o.h b/include/linux/i2o.h index d79c8a4bc4f8..9ba806796667 100644 --- a/include/linux/i2o.h +++ b/include/linux/i2o.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/string.h> | 30 | #include <linux/string.h> |
31 | #include <linux/slab.h> | 31 | #include <linux/slab.h> |
32 | #include <linux/workqueue.h> /* work_struct */ | 32 | #include <linux/workqueue.h> /* work_struct */ |
33 | #include <linux/mempool.h> | ||
33 | 34 | ||
34 | #include <asm/io.h> | 35 | #include <asm/io.h> |
35 | #include <asm/semaphore.h> /* Needed for MUTEX init macros */ | 36 | #include <asm/semaphore.h> /* Needed for MUTEX init macros */ |
@@ -38,6 +39,355 @@ | |||
38 | #define I2O_QUEUE_EMPTY 0xffffffff | 39 | #define I2O_QUEUE_EMPTY 0xffffffff |
39 | 40 | ||
40 | /* | 41 | /* |
42 | * Cache strategies | ||
43 | */ | ||
44 | |||
45 | /* The NULL strategy leaves everything up to the controller. This tends to be a | ||
46 | * pessimal but functional choice. | ||
47 | */ | ||
48 | #define CACHE_NULL 0 | ||
49 | /* Prefetch data when reading. We continually attempt to load the next 32 sectors | ||
50 | * into the controller cache. | ||
51 | */ | ||
52 | #define CACHE_PREFETCH 1 | ||
53 | /* Prefetch data when reading. We sometimes attempt to load the next 32 sectors | ||
54 | * into the controller cache. When an I/O is less <= 8K we assume its probably | ||
55 | * not sequential and don't prefetch (default) | ||
56 | */ | ||
57 | #define CACHE_SMARTFETCH 2 | ||
58 | /* Data is written to the cache and then out on to the disk. The I/O must be | ||
59 | * physically on the medium before the write is acknowledged (default without | ||
60 | * NVRAM) | ||
61 | */ | ||
62 | #define CACHE_WRITETHROUGH 17 | ||
63 | /* Data is written to the cache and then out on to the disk. The controller | ||
64 | * is permitted to write back the cache any way it wants. (default if battery | ||
65 | * backed NVRAM is present). It can be useful to set this for swap regardless of | ||
66 | * battery state. | ||
67 | */ | ||
68 | #define CACHE_WRITEBACK 18 | ||
69 | /* Optimise for under powered controllers, especially on RAID1 and RAID0. We | ||
70 | * write large I/O's directly to disk bypassing the cache to avoid the extra | ||
71 | * memory copy hits. Small writes are writeback cached | ||
72 | */ | ||
73 | #define CACHE_SMARTBACK 19 | ||
74 | /* Optimise for under powered controllers, especially on RAID1 and RAID0. We | ||
75 | * write large I/O's directly to disk bypassing the cache to avoid the extra | ||
76 | * memory copy hits. Small writes are writethrough cached. Suitable for devices | ||
77 | * lacking battery backup | ||
78 | */ | ||
79 | #define CACHE_SMARTTHROUGH 20 | ||
80 | |||
81 | /* | ||
82 | * Ioctl structures | ||
83 | */ | ||
84 | |||
85 | #define BLKI2OGRSTRAT _IOR('2', 1, int) | ||
86 | #define BLKI2OGWSTRAT _IOR('2', 2, int) | ||
87 | #define BLKI2OSRSTRAT _IOW('2', 3, int) | ||
88 | #define BLKI2OSWSTRAT _IOW('2', 4, int) | ||
89 | |||
90 | /* | ||
91 | * I2O Function codes | ||
92 | */ | ||
93 | |||
94 | /* | ||
95 | * Executive Class | ||
96 | */ | ||
97 | #define I2O_CMD_ADAPTER_ASSIGN 0xB3 | ||
98 | #define I2O_CMD_ADAPTER_READ 0xB2 | ||
99 | #define I2O_CMD_ADAPTER_RELEASE 0xB5 | ||
100 | #define I2O_CMD_BIOS_INFO_SET 0xA5 | ||
101 | #define I2O_CMD_BOOT_DEVICE_SET 0xA7 | ||
102 | #define I2O_CMD_CONFIG_VALIDATE 0xBB | ||
103 | #define I2O_CMD_CONN_SETUP 0xCA | ||
104 | #define I2O_CMD_DDM_DESTROY 0xB1 | ||
105 | #define I2O_CMD_DDM_ENABLE 0xD5 | ||
106 | #define I2O_CMD_DDM_QUIESCE 0xC7 | ||
107 | #define I2O_CMD_DDM_RESET 0xD9 | ||
108 | #define I2O_CMD_DDM_SUSPEND 0xAF | ||
109 | #define I2O_CMD_DEVICE_ASSIGN 0xB7 | ||
110 | #define I2O_CMD_DEVICE_RELEASE 0xB9 | ||
111 | #define I2O_CMD_HRT_GET 0xA8 | ||
112 | #define I2O_CMD_ADAPTER_CLEAR 0xBE | ||
113 | #define I2O_CMD_ADAPTER_CONNECT 0xC9 | ||
114 | #define I2O_CMD_ADAPTER_RESET 0xBD | ||
115 | #define I2O_CMD_LCT_NOTIFY 0xA2 | ||
116 | #define I2O_CMD_OUTBOUND_INIT 0xA1 | ||
117 | #define I2O_CMD_PATH_ENABLE 0xD3 | ||
118 | #define I2O_CMD_PATH_QUIESCE 0xC5 | ||
119 | #define I2O_CMD_PATH_RESET 0xD7 | ||
120 | #define I2O_CMD_STATIC_MF_CREATE 0xDD | ||
121 | #define I2O_CMD_STATIC_MF_RELEASE 0xDF | ||
122 | #define I2O_CMD_STATUS_GET 0xA0 | ||
123 | #define I2O_CMD_SW_DOWNLOAD 0xA9 | ||
124 | #define I2O_CMD_SW_UPLOAD 0xAB | ||
125 | #define I2O_CMD_SW_REMOVE 0xAD | ||
126 | #define I2O_CMD_SYS_ENABLE 0xD1 | ||
127 | #define I2O_CMD_SYS_MODIFY 0xC1 | ||
128 | #define I2O_CMD_SYS_QUIESCE 0xC3 | ||
129 | #define I2O_CMD_SYS_TAB_SET 0xA3 | ||
130 | |||
131 | /* | ||
132 | * Utility Class | ||
133 | */ | ||
134 | #define I2O_CMD_UTIL_NOP 0x00 | ||
135 | #define I2O_CMD_UTIL_ABORT 0x01 | ||
136 | #define I2O_CMD_UTIL_CLAIM 0x09 | ||
137 | #define I2O_CMD_UTIL_RELEASE 0x0B | ||
138 | #define I2O_CMD_UTIL_PARAMS_GET 0x06 | ||
139 | #define I2O_CMD_UTIL_PARAMS_SET 0x05 | ||
140 | #define I2O_CMD_UTIL_EVT_REGISTER 0x13 | ||
141 | #define I2O_CMD_UTIL_EVT_ACK 0x14 | ||
142 | #define I2O_CMD_UTIL_CONFIG_DIALOG 0x10 | ||
143 | #define I2O_CMD_UTIL_DEVICE_RESERVE 0x0D | ||
144 | #define I2O_CMD_UTIL_DEVICE_RELEASE 0x0F | ||
145 | #define I2O_CMD_UTIL_LOCK 0x17 | ||
146 | #define I2O_CMD_UTIL_LOCK_RELEASE 0x19 | ||
147 | #define I2O_CMD_UTIL_REPLY_FAULT_NOTIFY 0x15 | ||
148 | |||
149 | /* | ||
150 | * SCSI Host Bus Adapter Class | ||
151 | */ | ||
152 | #define I2O_CMD_SCSI_EXEC 0x81 | ||
153 | #define I2O_CMD_SCSI_ABORT 0x83 | ||
154 | #define I2O_CMD_SCSI_BUSRESET 0x27 | ||
155 | |||
156 | /* | ||
157 | * Bus Adapter Class | ||
158 | */ | ||
159 | #define I2O_CMD_BUS_ADAPTER_RESET 0x85 | ||
160 | #define I2O_CMD_BUS_RESET 0x87 | ||
161 | #define I2O_CMD_BUS_SCAN 0x89 | ||
162 | #define I2O_CMD_BUS_QUIESCE 0x8b | ||
163 | |||
164 | /* | ||
165 | * Random Block Storage Class | ||
166 | */ | ||
167 | #define I2O_CMD_BLOCK_READ 0x30 | ||
168 | #define I2O_CMD_BLOCK_WRITE 0x31 | ||
169 | #define I2O_CMD_BLOCK_CFLUSH 0x37 | ||
170 | #define I2O_CMD_BLOCK_MLOCK 0x49 | ||
171 | #define I2O_CMD_BLOCK_MUNLOCK 0x4B | ||
172 | #define I2O_CMD_BLOCK_MMOUNT 0x41 | ||
173 | #define I2O_CMD_BLOCK_MEJECT 0x43 | ||
174 | #define I2O_CMD_BLOCK_POWER 0x70 | ||
175 | |||
176 | #define I2O_CMD_PRIVATE 0xFF | ||
177 | |||
178 | /* Command status values */ | ||
179 | |||
180 | #define I2O_CMD_IN_PROGRESS 0x01 | ||
181 | #define I2O_CMD_REJECTED 0x02 | ||
182 | #define I2O_CMD_FAILED 0x03 | ||
183 | #define I2O_CMD_COMPLETED 0x04 | ||
184 | |||
185 | /* I2O API function return values */ | ||
186 | |||
187 | #define I2O_RTN_NO_ERROR 0 | ||
188 | #define I2O_RTN_NOT_INIT 1 | ||
189 | #define I2O_RTN_FREE_Q_EMPTY 2 | ||
190 | #define I2O_RTN_TCB_ERROR 3 | ||
191 | #define I2O_RTN_TRANSACTION_ERROR 4 | ||
192 | #define I2O_RTN_ADAPTER_ALREADY_INIT 5 | ||
193 | #define I2O_RTN_MALLOC_ERROR 6 | ||
194 | #define I2O_RTN_ADPTR_NOT_REGISTERED 7 | ||
195 | #define I2O_RTN_MSG_REPLY_TIMEOUT 8 | ||
196 | #define I2O_RTN_NO_STATUS 9 | ||
197 | #define I2O_RTN_NO_FIRM_VER 10 | ||
198 | #define I2O_RTN_NO_LINK_SPEED 11 | ||
199 | |||
200 | /* Reply message status defines for all messages */ | ||
201 | |||
202 | #define I2O_REPLY_STATUS_SUCCESS 0x00 | ||
203 | #define I2O_REPLY_STATUS_ABORT_DIRTY 0x01 | ||
204 | #define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER 0x02 | ||
205 | #define I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER 0x03 | ||
206 | #define I2O_REPLY_STATUS_ERROR_DIRTY 0x04 | ||
207 | #define I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER 0x05 | ||
208 | #define I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER 0x06 | ||
209 | #define I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY 0x08 | ||
210 | #define I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER 0x09 | ||
211 | #define I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER 0x0A | ||
212 | #define I2O_REPLY_STATUS_TRANSACTION_ERROR 0x0B | ||
213 | #define I2O_REPLY_STATUS_PROGRESS_REPORT 0x80 | ||
214 | |||
215 | /* Status codes and Error Information for Parameter functions */ | ||
216 | |||
217 | #define I2O_PARAMS_STATUS_SUCCESS 0x00 | ||
218 | #define I2O_PARAMS_STATUS_BAD_KEY_ABORT 0x01 | ||
219 | #define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE 0x02 | ||
220 | #define I2O_PARAMS_STATUS_BUFFER_FULL 0x03 | ||
221 | #define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL 0x04 | ||
222 | #define I2O_PARAMS_STATUS_FIELD_UNREADABLE 0x05 | ||
223 | #define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE 0x06 | ||
224 | #define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS 0x07 | ||
225 | #define I2O_PARAMS_STATUS_INVALID_GROUP_ID 0x08 | ||
226 | #define I2O_PARAMS_STATUS_INVALID_OPERATION 0x09 | ||
227 | #define I2O_PARAMS_STATUS_NO_KEY_FIELD 0x0A | ||
228 | #define I2O_PARAMS_STATUS_NO_SUCH_FIELD 0x0B | ||
229 | #define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP 0x0C | ||
230 | #define I2O_PARAMS_STATUS_OPERATION_ERROR 0x0D | ||
231 | #define I2O_PARAMS_STATUS_SCALAR_ERROR 0x0E | ||
232 | #define I2O_PARAMS_STATUS_TABLE_ERROR 0x0F | ||
233 | #define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE 0x10 | ||
234 | |||
235 | /* DetailedStatusCode defines for Executive, DDM, Util and Transaction error | ||
236 | * messages: Table 3-2 Detailed Status Codes.*/ | ||
237 | |||
238 | #define I2O_DSC_SUCCESS 0x0000 | ||
239 | #define I2O_DSC_BAD_KEY 0x0002 | ||
240 | #define I2O_DSC_TCL_ERROR 0x0003 | ||
241 | #define I2O_DSC_REPLY_BUFFER_FULL 0x0004 | ||
242 | #define I2O_DSC_NO_SUCH_PAGE 0x0005 | ||
243 | #define I2O_DSC_INSUFFICIENT_RESOURCE_SOFT 0x0006 | ||
244 | #define I2O_DSC_INSUFFICIENT_RESOURCE_HARD 0x0007 | ||
245 | #define I2O_DSC_CHAIN_BUFFER_TOO_LARGE 0x0009 | ||
246 | #define I2O_DSC_UNSUPPORTED_FUNCTION 0x000A | ||
247 | #define I2O_DSC_DEVICE_LOCKED 0x000B | ||
248 | #define I2O_DSC_DEVICE_RESET 0x000C | ||
249 | #define I2O_DSC_INAPPROPRIATE_FUNCTION 0x000D | ||
250 | #define I2O_DSC_INVALID_INITIATOR_ADDRESS 0x000E | ||
251 | #define I2O_DSC_INVALID_MESSAGE_FLAGS 0x000F | ||
252 | #define I2O_DSC_INVALID_OFFSET 0x0010 | ||
253 | #define I2O_DSC_INVALID_PARAMETER 0x0011 | ||
254 | #define I2O_DSC_INVALID_REQUEST 0x0012 | ||
255 | #define I2O_DSC_INVALID_TARGET_ADDRESS 0x0013 | ||
256 | #define I2O_DSC_MESSAGE_TOO_LARGE 0x0014 | ||
257 | #define I2O_DSC_MESSAGE_TOO_SMALL 0x0015 | ||
258 | #define I2O_DSC_MISSING_PARAMETER 0x0016 | ||
259 | #define I2O_DSC_TIMEOUT 0x0017 | ||
260 | #define I2O_DSC_UNKNOWN_ERROR 0x0018 | ||
261 | #define I2O_DSC_UNKNOWN_FUNCTION 0x0019 | ||
262 | #define I2O_DSC_UNSUPPORTED_VERSION 0x001A | ||
263 | #define I2O_DSC_DEVICE_BUSY 0x001B | ||
264 | #define I2O_DSC_DEVICE_NOT_AVAILABLE 0x001C | ||
265 | |||
266 | /* DetailedStatusCode defines for Block Storage Operation: Table 6-7 Detailed | ||
267 | Status Codes.*/ | ||
268 | |||
269 | #define I2O_BSA_DSC_SUCCESS 0x0000 | ||
270 | #define I2O_BSA_DSC_MEDIA_ERROR 0x0001 | ||
271 | #define I2O_BSA_DSC_ACCESS_ERROR 0x0002 | ||
272 | #define I2O_BSA_DSC_DEVICE_FAILURE 0x0003 | ||
273 | #define I2O_BSA_DSC_DEVICE_NOT_READY 0x0004 | ||
274 | #define I2O_BSA_DSC_MEDIA_NOT_PRESENT 0x0005 | ||
275 | #define I2O_BSA_DSC_MEDIA_LOCKED 0x0006 | ||
276 | #define I2O_BSA_DSC_MEDIA_FAILURE 0x0007 | ||
277 | #define I2O_BSA_DSC_PROTOCOL_FAILURE 0x0008 | ||
278 | #define I2O_BSA_DSC_BUS_FAILURE 0x0009 | ||
279 | #define I2O_BSA_DSC_ACCESS_VIOLATION 0x000A | ||
280 | #define I2O_BSA_DSC_WRITE_PROTECTED 0x000B | ||
281 | #define I2O_BSA_DSC_DEVICE_RESET 0x000C | ||
282 | #define I2O_BSA_DSC_VOLUME_CHANGED 0x000D | ||
283 | #define I2O_BSA_DSC_TIMEOUT 0x000E | ||
284 | |||
285 | /* FailureStatusCodes, Table 3-3 Message Failure Codes */ | ||
286 | |||
287 | #define I2O_FSC_TRANSPORT_SERVICE_SUSPENDED 0x81 | ||
288 | #define I2O_FSC_TRANSPORT_SERVICE_TERMINATED 0x82 | ||
289 | #define I2O_FSC_TRANSPORT_CONGESTION 0x83 | ||
290 | #define I2O_FSC_TRANSPORT_FAILURE 0x84 | ||
291 | #define I2O_FSC_TRANSPORT_STATE_ERROR 0x85 | ||
292 | #define I2O_FSC_TRANSPORT_TIME_OUT 0x86 | ||
293 | #define I2O_FSC_TRANSPORT_ROUTING_FAILURE 0x87 | ||
294 | #define I2O_FSC_TRANSPORT_INVALID_VERSION 0x88 | ||
295 | #define I2O_FSC_TRANSPORT_INVALID_OFFSET 0x89 | ||
296 | #define I2O_FSC_TRANSPORT_INVALID_MSG_FLAGS 0x8A | ||
297 | #define I2O_FSC_TRANSPORT_FRAME_TOO_SMALL 0x8B | ||
298 | #define I2O_FSC_TRANSPORT_FRAME_TOO_LARGE 0x8C | ||
299 | #define I2O_FSC_TRANSPORT_INVALID_TARGET_ID 0x8D | ||
300 | #define I2O_FSC_TRANSPORT_INVALID_INITIATOR_ID 0x8E | ||
301 | #define I2O_FSC_TRANSPORT_INVALID_INITIATOR_CONTEXT 0x8F | ||
302 | #define I2O_FSC_TRANSPORT_UNKNOWN_FAILURE 0xFF | ||
303 | |||
304 | /* Device Claim Types */ | ||
305 | #define I2O_CLAIM_PRIMARY 0x01000000 | ||
306 | #define I2O_CLAIM_MANAGEMENT 0x02000000 | ||
307 | #define I2O_CLAIM_AUTHORIZED 0x03000000 | ||
308 | #define I2O_CLAIM_SECONDARY 0x04000000 | ||
309 | |||
310 | /* Message header defines for VersionOffset */ | ||
311 | #define I2OVER15 0x0001 | ||
312 | #define I2OVER20 0x0002 | ||
313 | |||
314 | /* Default is 1.5 */ | ||
315 | #define I2OVERSION I2OVER15 | ||
316 | |||
317 | #define SGL_OFFSET_0 I2OVERSION | ||
318 | #define SGL_OFFSET_4 (0x0040 | I2OVERSION) | ||
319 | #define SGL_OFFSET_5 (0x0050 | I2OVERSION) | ||
320 | #define SGL_OFFSET_6 (0x0060 | I2OVERSION) | ||
321 | #define SGL_OFFSET_7 (0x0070 | I2OVERSION) | ||
322 | #define SGL_OFFSET_8 (0x0080 | I2OVERSION) | ||
323 | #define SGL_OFFSET_9 (0x0090 | I2OVERSION) | ||
324 | #define SGL_OFFSET_10 (0x00A0 | I2OVERSION) | ||
325 | #define SGL_OFFSET_11 (0x00B0 | I2OVERSION) | ||
326 | #define SGL_OFFSET_12 (0x00C0 | I2OVERSION) | ||
327 | #define SGL_OFFSET(x) (((x)<<4) | I2OVERSION) | ||
328 | |||
329 | /* Transaction Reply Lists (TRL) Control Word structure */ | ||
330 | #define TRL_SINGLE_FIXED_LENGTH 0x00 | ||
331 | #define TRL_SINGLE_VARIABLE_LENGTH 0x40 | ||
332 | #define TRL_MULTIPLE_FIXED_LENGTH 0x80 | ||
333 | |||
334 | /* msg header defines for MsgFlags */ | ||
335 | #define MSG_STATIC 0x0100 | ||
336 | #define MSG_64BIT_CNTXT 0x0200 | ||
337 | #define MSG_MULTI_TRANS 0x1000 | ||
338 | #define MSG_FAIL 0x2000 | ||
339 | #define MSG_FINAL 0x4000 | ||
340 | #define MSG_REPLY 0x8000 | ||
341 | |||
342 | /* minimum size msg */ | ||
343 | #define THREE_WORD_MSG_SIZE 0x00030000 | ||
344 | #define FOUR_WORD_MSG_SIZE 0x00040000 | ||
345 | #define FIVE_WORD_MSG_SIZE 0x00050000 | ||
346 | #define SIX_WORD_MSG_SIZE 0x00060000 | ||
347 | #define SEVEN_WORD_MSG_SIZE 0x00070000 | ||
348 | #define EIGHT_WORD_MSG_SIZE 0x00080000 | ||
349 | #define NINE_WORD_MSG_SIZE 0x00090000 | ||
350 | #define TEN_WORD_MSG_SIZE 0x000A0000 | ||
351 | #define ELEVEN_WORD_MSG_SIZE 0x000B0000 | ||
352 | #define I2O_MESSAGE_SIZE(x) ((x)<<16) | ||
353 | |||
354 | /* special TID assignments */ | ||
355 | #define ADAPTER_TID 0 | ||
356 | #define HOST_TID 1 | ||
357 | |||
358 | /* outbound queue defines */ | ||
359 | #define I2O_MAX_OUTBOUND_MSG_FRAMES 128 | ||
360 | #define I2O_OUTBOUND_MSG_FRAME_SIZE 128 /* in 32-bit words */ | ||
361 | |||
362 | /* inbound queue definitions */ | ||
363 | #define I2O_MSG_INPOOL_MIN 32 | ||
364 | #define I2O_INBOUND_MSG_FRAME_SIZE 128 /* in 32-bit words */ | ||
365 | |||
366 | #define I2O_POST_WAIT_OK 0 | ||
367 | #define I2O_POST_WAIT_TIMEOUT -ETIMEDOUT | ||
368 | |||
369 | #define I2O_CONTEXT_LIST_MIN_LENGTH 15 | ||
370 | #define I2O_CONTEXT_LIST_USED 0x01 | ||
371 | #define I2O_CONTEXT_LIST_DELETED 0x02 | ||
372 | |||
373 | /* timeouts */ | ||
374 | #define I2O_TIMEOUT_INIT_OUTBOUND_QUEUE 15 | ||
375 | #define I2O_TIMEOUT_MESSAGE_GET 5 | ||
376 | #define I2O_TIMEOUT_RESET 30 | ||
377 | #define I2O_TIMEOUT_STATUS_GET 5 | ||
378 | #define I2O_TIMEOUT_LCT_GET 360 | ||
379 | #define I2O_TIMEOUT_SCSI_SCB_ABORT 240 | ||
380 | |||
381 | /* retries */ | ||
382 | #define I2O_HRT_GET_TRIES 3 | ||
383 | #define I2O_LCT_GET_TRIES 3 | ||
384 | |||
385 | /* defines for max_sectors and max_phys_segments */ | ||
386 | #define I2O_MAX_SECTORS 1024 | ||
387 | #define I2O_MAX_SECTORS_LIMITED 128 | ||
388 | #define I2O_MAX_PHYS_SEGMENTS MAX_PHYS_SEGMENTS | ||
389 | |||
390 | /* | ||
41 | * Message structures | 391 | * Message structures |
42 | */ | 392 | */ |
43 | struct i2o_message { | 393 | struct i2o_message { |
@@ -58,6 +408,12 @@ struct i2o_message { | |||
58 | u32 body[0]; | 408 | u32 body[0]; |
59 | }; | 409 | }; |
60 | 410 | ||
411 | /* MFA and I2O message used by mempool */ | ||
412 | struct i2o_msg_mfa { | ||
413 | u32 mfa; /* MFA returned by the controller */ | ||
414 | struct i2o_message msg; /* I2O message */ | ||
415 | }; | ||
416 | |||
61 | /* | 417 | /* |
62 | * Each I2O device entity has one of these. There is one per device. | 418 | * Each I2O device entity has one of these. There is one per device. |
63 | */ | 419 | */ |
@@ -130,6 +486,15 @@ struct i2o_dma { | |||
130 | }; | 486 | }; |
131 | 487 | ||
132 | /* | 488 | /* |
489 | * Contains slab cache and mempool information | ||
490 | */ | ||
491 | struct i2o_pool { | ||
492 | char *name; | ||
493 | kmem_cache_t *slab; | ||
494 | mempool_t *mempool; | ||
495 | }; | ||
496 | |||
497 | /* | ||
133 | * Contains IO mapped address information | 498 | * Contains IO mapped address information |
134 | */ | 499 | */ |
135 | struct i2o_io { | 500 | struct i2o_io { |
@@ -174,8 +539,6 @@ struct i2o_controller { | |||
174 | void __iomem *irq_status; /* Interrupt status register address */ | 539 | void __iomem *irq_status; /* Interrupt status register address */ |
175 | void __iomem *irq_mask; /* Interrupt mask register address */ | 540 | void __iomem *irq_mask; /* Interrupt mask register address */ |
176 | 541 | ||
177 | /* Dynamic LCT related data */ | ||
178 | |||
179 | struct i2o_dma status; /* IOP status block */ | 542 | struct i2o_dma status; /* IOP status block */ |
180 | 543 | ||
181 | struct i2o_dma hrt; /* HW Resource Table */ | 544 | struct i2o_dma hrt; /* HW Resource Table */ |
@@ -188,6 +551,8 @@ struct i2o_controller { | |||
188 | struct i2o_io in_queue; /* inbound message queue Host->IOP */ | 551 | struct i2o_io in_queue; /* inbound message queue Host->IOP */ |
189 | struct i2o_dma out_queue; /* outbound message queue IOP->Host */ | 552 | struct i2o_dma out_queue; /* outbound message queue IOP->Host */ |
190 | 553 | ||
554 | struct i2o_pool in_msg; /* mempool for inbound messages */ | ||
555 | |||
191 | unsigned int battery:1; /* Has a battery backup */ | 556 | unsigned int battery:1; /* Has a battery backup */ |
192 | unsigned int io_alloc:1; /* An I/O resource was allocated */ | 557 | unsigned int io_alloc:1; /* An I/O resource was allocated */ |
193 | unsigned int mem_alloc:1; /* A memory resource was allocated */ | 558 | unsigned int mem_alloc:1; /* A memory resource was allocated */ |
@@ -196,7 +561,6 @@ struct i2o_controller { | |||
196 | struct resource mem_resource; /* Mem resource allocated to the IOP */ | 561 | struct resource mem_resource; /* Mem resource allocated to the IOP */ |
197 | 562 | ||
198 | struct device device; | 563 | struct device device; |
199 | struct class_device *classdev; /* I2O controller class device */ | ||
200 | struct i2o_device *exec; /* Executive */ | 564 | struct i2o_device *exec; /* Executive */ |
201 | #if BITS_PER_LONG == 64 | 565 | #if BITS_PER_LONG == 64 |
202 | spinlock_t context_list_lock; /* lock for context_list */ | 566 | spinlock_t context_list_lock; /* lock for context_list */ |
@@ -247,16 +611,13 @@ struct i2o_sys_tbl { | |||
247 | extern struct list_head i2o_controllers; | 611 | extern struct list_head i2o_controllers; |
248 | 612 | ||
249 | /* Message functions */ | 613 | /* Message functions */ |
250 | static inline u32 i2o_msg_get(struct i2o_controller *, | 614 | static inline struct i2o_message *i2o_msg_get(struct i2o_controller *); |
251 | struct i2o_message __iomem **); | 615 | extern struct i2o_message *i2o_msg_get_wait(struct i2o_controller *, int); |
252 | extern u32 i2o_msg_get_wait(struct i2o_controller *, | 616 | static inline void i2o_msg_post(struct i2o_controller *, struct i2o_message *); |
253 | struct i2o_message __iomem **, int); | 617 | static inline int i2o_msg_post_wait(struct i2o_controller *, |
254 | static inline void i2o_msg_post(struct i2o_controller *, u32); | 618 | struct i2o_message *, unsigned long); |
255 | static inline int i2o_msg_post_wait(struct i2o_controller *, u32, | 619 | extern int i2o_msg_post_wait_mem(struct i2o_controller *, struct i2o_message *, |
256 | unsigned long); | 620 | unsigned long, struct i2o_dma *); |
257 | extern int i2o_msg_post_wait_mem(struct i2o_controller *, u32, unsigned long, | ||
258 | struct i2o_dma *); | ||
259 | extern void i2o_msg_nop(struct i2o_controller *, u32); | ||
260 | static inline void i2o_flush_reply(struct i2o_controller *, u32); | 621 | static inline void i2o_flush_reply(struct i2o_controller *, u32); |
261 | 622 | ||
262 | /* IOP functions */ | 623 | /* IOP functions */ |
@@ -384,10 +745,10 @@ static inline u16 i2o_sg_tablesize(struct i2o_controller *c, u16 body_size) | |||
384 | static inline dma_addr_t i2o_dma_map_single(struct i2o_controller *c, void *ptr, | 745 | static inline dma_addr_t i2o_dma_map_single(struct i2o_controller *c, void *ptr, |
385 | size_t size, | 746 | size_t size, |
386 | enum dma_data_direction direction, | 747 | enum dma_data_direction direction, |
387 | u32 __iomem ** sg_ptr) | 748 | u32 ** sg_ptr) |
388 | { | 749 | { |
389 | u32 sg_flags; | 750 | u32 sg_flags; |
390 | u32 __iomem *mptr = *sg_ptr; | 751 | u32 *mptr = *sg_ptr; |
391 | dma_addr_t dma_addr; | 752 | dma_addr_t dma_addr; |
392 | 753 | ||
393 | switch (direction) { | 754 | switch (direction) { |
@@ -405,16 +766,16 @@ static inline dma_addr_t i2o_dma_map_single(struct i2o_controller *c, void *ptr, | |||
405 | if (!dma_mapping_error(dma_addr)) { | 766 | if (!dma_mapping_error(dma_addr)) { |
406 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 | 767 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 |
407 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) { | 768 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) { |
408 | writel(0x7C020002, mptr++); | 769 | *mptr++ = cpu_to_le32(0x7C020002); |
409 | writel(PAGE_SIZE, mptr++); | 770 | *mptr++ = cpu_to_le32(PAGE_SIZE); |
410 | } | 771 | } |
411 | #endif | 772 | #endif |
412 | 773 | ||
413 | writel(sg_flags | size, mptr++); | 774 | *mptr++ = cpu_to_le32(sg_flags | size); |
414 | writel(i2o_dma_low(dma_addr), mptr++); | 775 | *mptr++ = cpu_to_le32(i2o_dma_low(dma_addr)); |
415 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 | 776 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 |
416 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) | 777 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) |
417 | writel(i2o_dma_high(dma_addr), mptr++); | 778 | *mptr++ = cpu_to_le32(i2o_dma_high(dma_addr)); |
418 | #endif | 779 | #endif |
419 | *sg_ptr = mptr; | 780 | *sg_ptr = mptr; |
420 | } | 781 | } |
@@ -439,10 +800,10 @@ static inline dma_addr_t i2o_dma_map_single(struct i2o_controller *c, void *ptr, | |||
439 | static inline int i2o_dma_map_sg(struct i2o_controller *c, | 800 | static inline int i2o_dma_map_sg(struct i2o_controller *c, |
440 | struct scatterlist *sg, int sg_count, | 801 | struct scatterlist *sg, int sg_count, |
441 | enum dma_data_direction direction, | 802 | enum dma_data_direction direction, |
442 | u32 __iomem ** sg_ptr) | 803 | u32 ** sg_ptr) |
443 | { | 804 | { |
444 | u32 sg_flags; | 805 | u32 sg_flags; |
445 | u32 __iomem *mptr = *sg_ptr; | 806 | u32 *mptr = *sg_ptr; |
446 | 807 | ||
447 | switch (direction) { | 808 | switch (direction) { |
448 | case DMA_TO_DEVICE: | 809 | case DMA_TO_DEVICE: |
@@ -461,19 +822,19 @@ static inline int i2o_dma_map_sg(struct i2o_controller *c, | |||
461 | 822 | ||
462 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 | 823 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 |
463 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) { | 824 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) { |
464 | writel(0x7C020002, mptr++); | 825 | *mptr++ = cpu_to_le32(0x7C020002); |
465 | writel(PAGE_SIZE, mptr++); | 826 | *mptr++ = cpu_to_le32(PAGE_SIZE); |
466 | } | 827 | } |
467 | #endif | 828 | #endif |
468 | 829 | ||
469 | while (sg_count-- > 0) { | 830 | while (sg_count-- > 0) { |
470 | if (!sg_count) | 831 | if (!sg_count) |
471 | sg_flags |= 0xC0000000; | 832 | sg_flags |= 0xC0000000; |
472 | writel(sg_flags | sg_dma_len(sg), mptr++); | 833 | *mptr++ = cpu_to_le32(sg_flags | sg_dma_len(sg)); |
473 | writel(i2o_dma_low(sg_dma_address(sg)), mptr++); | 834 | *mptr++ = cpu_to_le32(i2o_dma_low(sg_dma_address(sg))); |
474 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 | 835 | #ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64 |
475 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) | 836 | if ((sizeof(dma_addr_t) > 4) && c->pae_support) |
476 | writel(i2o_dma_high(sg_dma_address(sg)), mptr++); | 837 | *mptr++ = cpu_to_le32(i2o_dma_high(sg_dma_address(sg))); |
477 | #endif | 838 | #endif |
478 | sg++; | 839 | sg++; |
479 | } | 840 | } |
@@ -563,6 +924,64 @@ static inline int i2o_dma_realloc(struct device *dev, struct i2o_dma *addr, | |||
563 | return 0; | 924 | return 0; |
564 | }; | 925 | }; |
565 | 926 | ||
927 | /* | ||
928 | * i2o_pool_alloc - Allocate an slab cache and mempool | ||
929 | * @mempool: pointer to struct i2o_pool to write data into. | ||
930 | * @name: name which is used to identify cache | ||
931 | * @size: size of each object | ||
932 | * @min_nr: minimum number of objects | ||
933 | * | ||
934 | * First allocates a slab cache with name and size. Then allocates a | ||
935 | * mempool which uses the slab cache for allocation and freeing. | ||
936 | * | ||
937 | * Returns 0 on success or negative error code on failure. | ||
938 | */ | ||
939 | static inline int i2o_pool_alloc(struct i2o_pool *pool, const char *name, | ||
940 | size_t size, int min_nr) | ||
941 | { | ||
942 | pool->name = kmalloc(strlen(name) + 1, GFP_KERNEL); | ||
943 | if (!pool->name) | ||
944 | goto exit; | ||
945 | strcpy(pool->name, name); | ||
946 | |||
947 | pool->slab = | ||
948 | kmem_cache_create(pool->name, size, 0, SLAB_HWCACHE_ALIGN, NULL, | ||
949 | NULL); | ||
950 | if (!pool->slab) | ||
951 | goto free_name; | ||
952 | |||
953 | pool->mempool = | ||
954 | mempool_create(min_nr, mempool_alloc_slab, mempool_free_slab, | ||
955 | pool->slab); | ||
956 | if (!pool->mempool) | ||
957 | goto free_slab; | ||
958 | |||
959 | return 0; | ||
960 | |||
961 | free_slab: | ||
962 | kmem_cache_destroy(pool->slab); | ||
963 | |||
964 | free_name: | ||
965 | kfree(pool->name); | ||
966 | |||
967 | exit: | ||
968 | return -ENOMEM; | ||
969 | }; | ||
970 | |||
971 | /* | ||
972 | * i2o_pool_free - Free slab cache and mempool again | ||
973 | * @mempool: pointer to struct i2o_pool which should be freed | ||
974 | * | ||
975 | * Note that you have to return all objects to the mempool again before | ||
976 | * calling i2o_pool_free(). | ||
977 | */ | ||
978 | static inline void i2o_pool_free(struct i2o_pool *pool) | ||
979 | { | ||
980 | mempool_destroy(pool->mempool); | ||
981 | kmem_cache_destroy(pool->slab); | ||
982 | kfree(pool->name); | ||
983 | }; | ||
984 | |||
566 | /* I2O driver (OSM) functions */ | 985 | /* I2O driver (OSM) functions */ |
567 | extern int i2o_driver_register(struct i2o_driver *); | 986 | extern int i2o_driver_register(struct i2o_driver *); |
568 | extern void i2o_driver_unregister(struct i2o_driver *); | 987 | extern void i2o_driver_unregister(struct i2o_driver *); |
@@ -638,39 +1057,89 @@ extern int i2o_exec_lct_get(struct i2o_controller *); | |||
638 | #define kobj_to_i2o_device(kobj) to_i2o_device(container_of(kobj, struct device, kobj)) | 1057 | #define kobj_to_i2o_device(kobj) to_i2o_device(container_of(kobj, struct device, kobj)) |
639 | 1058 | ||
640 | /** | 1059 | /** |
1060 | * i2o_out_to_virt - Turn an I2O message to a virtual address | ||
1061 | * @c: controller | ||
1062 | * @m: message engine value | ||
1063 | * | ||
1064 | * Turn a receive message from an I2O controller bus address into | ||
1065 | * a Linux virtual address. The shared page frame is a linear block | ||
1066 | * so we simply have to shift the offset. This function does not | ||
1067 | * work for sender side messages as they are ioremap objects | ||
1068 | * provided by the I2O controller. | ||
1069 | */ | ||
1070 | static inline struct i2o_message *i2o_msg_out_to_virt(struct i2o_controller *c, | ||
1071 | u32 m) | ||
1072 | { | ||
1073 | BUG_ON(m < c->out_queue.phys | ||
1074 | || m >= c->out_queue.phys + c->out_queue.len); | ||
1075 | |||
1076 | return c->out_queue.virt + (m - c->out_queue.phys); | ||
1077 | }; | ||
1078 | |||
1079 | /** | ||
1080 | * i2o_msg_in_to_virt - Turn an I2O message to a virtual address | ||
1081 | * @c: controller | ||
1082 | * @m: message engine value | ||
1083 | * | ||
1084 | * Turn a send message from an I2O controller bus address into | ||
1085 | * a Linux virtual address. The shared page frame is a linear block | ||
1086 | * so we simply have to shift the offset. This function does not | ||
1087 | * work for receive side messages as they are kmalloc objects | ||
1088 | * in a different pool. | ||
1089 | */ | ||
1090 | static inline struct i2o_message __iomem *i2o_msg_in_to_virt(struct | ||
1091 | i2o_controller *c, | ||
1092 | u32 m) | ||
1093 | { | ||
1094 | return c->in_queue.virt + m; | ||
1095 | }; | ||
1096 | |||
1097 | /** | ||
641 | * i2o_msg_get - obtain an I2O message from the IOP | 1098 | * i2o_msg_get - obtain an I2O message from the IOP |
642 | * @c: I2O controller | 1099 | * @c: I2O controller |
643 | * @msg: pointer to a I2O message pointer | ||
644 | * | 1100 | * |
645 | * This function tries to get a message slot. If no message slot is | 1101 | * This function tries to get a message frame. If no message frame is |
646 | * available do not wait until one is availabe (see also i2o_msg_get_wait). | 1102 | * available do not wait until one is availabe (see also i2o_msg_get_wait). |
1103 | * The returned pointer to the message frame is not in I/O memory, it is | ||
1104 | * allocated from a mempool. But because a MFA is allocated from the | ||
1105 | * controller too it is guaranteed that i2o_msg_post() will never fail. | ||
647 | * | 1106 | * |
648 | * On a success the message is returned and the pointer to the message is | 1107 | * On a success a pointer to the message frame is returned. If the message |
649 | * set in msg. The returned message is the physical page frame offset | 1108 | * queue is empty -EBUSY is returned and if no memory is available -ENOMEM |
650 | * address from the read port (see the i2o spec). If no message is | 1109 | * is returned. |
651 | * available returns I2O_QUEUE_EMPTY and msg is leaved untouched. | ||
652 | */ | 1110 | */ |
653 | static inline u32 i2o_msg_get(struct i2o_controller *c, | 1111 | static inline struct i2o_message *i2o_msg_get(struct i2o_controller *c) |
654 | struct i2o_message __iomem ** msg) | ||
655 | { | 1112 | { |
656 | u32 m = readl(c->in_port); | 1113 | struct i2o_msg_mfa *mmsg = mempool_alloc(c->in_msg.mempool, GFP_ATOMIC); |
657 | 1114 | if (!mmsg) | |
658 | if (m != I2O_QUEUE_EMPTY) | 1115 | return ERR_PTR(-ENOMEM); |
659 | *msg = c->in_queue.virt + m; | 1116 | |
1117 | mmsg->mfa = readl(c->in_port); | ||
1118 | if (mmsg->mfa == I2O_QUEUE_EMPTY) { | ||
1119 | mempool_free(mmsg, c->in_msg.mempool); | ||
1120 | return ERR_PTR(-EBUSY); | ||
1121 | } | ||
660 | 1122 | ||
661 | return m; | 1123 | return &mmsg->msg; |
662 | }; | 1124 | }; |
663 | 1125 | ||
664 | /** | 1126 | /** |
665 | * i2o_msg_post - Post I2O message to I2O controller | 1127 | * i2o_msg_post - Post I2O message to I2O controller |
666 | * @c: I2O controller to which the message should be send | 1128 | * @c: I2O controller to which the message should be send |
667 | * @m: the message identifier | 1129 | * @msg: message returned by i2o_msg_get() |
668 | * | 1130 | * |
669 | * Post the message to the I2O controller. | 1131 | * Post the message to the I2O controller and return immediately. |
670 | */ | 1132 | */ |
671 | static inline void i2o_msg_post(struct i2o_controller *c, u32 m) | 1133 | static inline void i2o_msg_post(struct i2o_controller *c, |
1134 | struct i2o_message *msg) | ||
672 | { | 1135 | { |
673 | writel(m, c->in_port); | 1136 | struct i2o_msg_mfa *mmsg; |
1137 | |||
1138 | mmsg = container_of(msg, struct i2o_msg_mfa, msg); | ||
1139 | memcpy_toio(i2o_msg_in_to_virt(c, mmsg->mfa), msg, | ||
1140 | (le32_to_cpu(msg->u.head[0]) >> 16) << 2); | ||
1141 | writel(mmsg->mfa, c->in_port); | ||
1142 | mempool_free(mmsg, c->in_msg.mempool); | ||
674 | }; | 1143 | }; |
675 | 1144 | ||
676 | /** | 1145 | /** |
@@ -685,62 +1154,66 @@ static inline void i2o_msg_post(struct i2o_controller *c, u32 m) | |||
685 | * | 1154 | * |
686 | * Returns 0 on success or negative error code on failure. | 1155 | * Returns 0 on success or negative error code on failure. |
687 | */ | 1156 | */ |
688 | static inline int i2o_msg_post_wait(struct i2o_controller *c, u32 m, | 1157 | static inline int i2o_msg_post_wait(struct i2o_controller *c, |
1158 | struct i2o_message *msg, | ||
689 | unsigned long timeout) | 1159 | unsigned long timeout) |
690 | { | 1160 | { |
691 | return i2o_msg_post_wait_mem(c, m, timeout, NULL); | 1161 | return i2o_msg_post_wait_mem(c, msg, timeout, NULL); |
692 | }; | 1162 | }; |
693 | 1163 | ||
694 | /** | 1164 | /** |
695 | * i2o_flush_reply - Flush reply from I2O controller | 1165 | * i2o_msg_nop_mfa - Returns a fetched MFA back to the controller |
696 | * @c: I2O controller | 1166 | * @c: I2O controller from which the MFA was fetched |
697 | * @m: the message identifier | 1167 | * @mfa: MFA which should be returned |
698 | * | 1168 | * |
699 | * The I2O controller must be informed that the reply message is not needed | 1169 | * This function must be used for preserved messages, because i2o_msg_nop() |
700 | * anymore. If you forget to flush the reply, the message frame can't be | 1170 | * also returns the allocated memory back to the msg_pool mempool. |
701 | * used by the controller anymore and is therefore lost. | ||
702 | */ | 1171 | */ |
703 | static inline void i2o_flush_reply(struct i2o_controller *c, u32 m) | 1172 | static inline void i2o_msg_nop_mfa(struct i2o_controller *c, u32 mfa) |
704 | { | 1173 | { |
705 | writel(m, c->out_port); | 1174 | struct i2o_message __iomem *msg; |
1175 | u32 nop[3] = { | ||
1176 | THREE_WORD_MSG_SIZE | SGL_OFFSET_0, | ||
1177 | I2O_CMD_UTIL_NOP << 24 | HOST_TID << 12 | ADAPTER_TID, | ||
1178 | 0x00000000 | ||
1179 | }; | ||
1180 | |||
1181 | msg = i2o_msg_in_to_virt(c, mfa); | ||
1182 | memcpy_toio(msg, nop, sizeof(nop)); | ||
1183 | writel(mfa, c->in_port); | ||
706 | }; | 1184 | }; |
707 | 1185 | ||
708 | /** | 1186 | /** |
709 | * i2o_out_to_virt - Turn an I2O message to a virtual address | 1187 | * i2o_msg_nop - Returns a message which is not used |
710 | * @c: controller | 1188 | * @c: I2O controller from which the message was created |
711 | * @m: message engine value | 1189 | * @msg: message which should be returned |
712 | * | 1190 | * |
713 | * Turn a receive message from an I2O controller bus address into | 1191 | * If you fetch a message via i2o_msg_get, and can't use it, you must |
714 | * a Linux virtual address. The shared page frame is a linear block | 1192 | * return the message with this function. Otherwise the MFA is lost as well |
715 | * so we simply have to shift the offset. This function does not | 1193 | * as the allocated memory from the mempool. |
716 | * work for sender side messages as they are ioremap objects | ||
717 | * provided by the I2O controller. | ||
718 | */ | 1194 | */ |
719 | static inline struct i2o_message *i2o_msg_out_to_virt(struct i2o_controller *c, | 1195 | static inline void i2o_msg_nop(struct i2o_controller *c, |
720 | u32 m) | 1196 | struct i2o_message *msg) |
721 | { | 1197 | { |
722 | BUG_ON(m < c->out_queue.phys | 1198 | struct i2o_msg_mfa *mmsg; |
723 | || m >= c->out_queue.phys + c->out_queue.len); | 1199 | mmsg = container_of(msg, struct i2o_msg_mfa, msg); |
724 | 1200 | ||
725 | return c->out_queue.virt + (m - c->out_queue.phys); | 1201 | i2o_msg_nop_mfa(c, mmsg->mfa); |
1202 | mempool_free(mmsg, c->in_msg.mempool); | ||
726 | }; | 1203 | }; |
727 | 1204 | ||
728 | /** | 1205 | /** |
729 | * i2o_msg_in_to_virt - Turn an I2O message to a virtual address | 1206 | * i2o_flush_reply - Flush reply from I2O controller |
730 | * @c: controller | 1207 | * @c: I2O controller |
731 | * @m: message engine value | 1208 | * @m: the message identifier |
732 | * | 1209 | * |
733 | * Turn a send message from an I2O controller bus address into | 1210 | * The I2O controller must be informed that the reply message is not needed |
734 | * a Linux virtual address. The shared page frame is a linear block | 1211 | * anymore. If you forget to flush the reply, the message frame can't be |
735 | * so we simply have to shift the offset. This function does not | 1212 | * used by the controller anymore and is therefore lost. |
736 | * work for receive side messages as they are kmalloc objects | ||
737 | * in a different pool. | ||
738 | */ | 1213 | */ |
739 | static inline struct i2o_message __iomem *i2o_msg_in_to_virt(struct | 1214 | static inline void i2o_flush_reply(struct i2o_controller *c, u32 m) |
740 | i2o_controller *c, | ||
741 | u32 m) | ||
742 | { | 1215 | { |
743 | return c->in_queue.virt + m; | 1216 | writel(m, c->out_port); |
744 | }; | 1217 | }; |
745 | 1218 | ||
746 | /* | 1219 | /* |
@@ -779,350 +1252,5 @@ extern void i2o_dump_message(struct i2o_message *); | |||
779 | extern void i2o_dump_hrt(struct i2o_controller *c); | 1252 | extern void i2o_dump_hrt(struct i2o_controller *c); |
780 | extern void i2o_debug_state(struct i2o_controller *c); | 1253 | extern void i2o_debug_state(struct i2o_controller *c); |
781 | 1254 | ||
782 | /* | ||
783 | * Cache strategies | ||
784 | */ | ||
785 | |||
786 | /* The NULL strategy leaves everything up to the controller. This tends to be a | ||
787 | * pessimal but functional choice. | ||
788 | */ | ||
789 | #define CACHE_NULL 0 | ||
790 | /* Prefetch data when reading. We continually attempt to load the next 32 sectors | ||
791 | * into the controller cache. | ||
792 | */ | ||
793 | #define CACHE_PREFETCH 1 | ||
794 | /* Prefetch data when reading. We sometimes attempt to load the next 32 sectors | ||
795 | * into the controller cache. When an I/O is less <= 8K we assume its probably | ||
796 | * not sequential and don't prefetch (default) | ||
797 | */ | ||
798 | #define CACHE_SMARTFETCH 2 | ||
799 | /* Data is written to the cache and then out on to the disk. The I/O must be | ||
800 | * physically on the medium before the write is acknowledged (default without | ||
801 | * NVRAM) | ||
802 | */ | ||
803 | #define CACHE_WRITETHROUGH 17 | ||
804 | /* Data is written to the cache and then out on to the disk. The controller | ||
805 | * is permitted to write back the cache any way it wants. (default if battery | ||
806 | * backed NVRAM is present). It can be useful to set this for swap regardless of | ||
807 | * battery state. | ||
808 | */ | ||
809 | #define CACHE_WRITEBACK 18 | ||
810 | /* Optimise for under powered controllers, especially on RAID1 and RAID0. We | ||
811 | * write large I/O's directly to disk bypassing the cache to avoid the extra | ||
812 | * memory copy hits. Small writes are writeback cached | ||
813 | */ | ||
814 | #define CACHE_SMARTBACK 19 | ||
815 | /* Optimise for under powered controllers, especially on RAID1 and RAID0. We | ||
816 | * write large I/O's directly to disk bypassing the cache to avoid the extra | ||
817 | * memory copy hits. Small writes are writethrough cached. Suitable for devices | ||
818 | * lacking battery backup | ||
819 | */ | ||
820 | #define CACHE_SMARTTHROUGH 20 | ||
821 | |||
822 | /* | ||
823 | * Ioctl structures | ||
824 | */ | ||
825 | |||
826 | #define BLKI2OGRSTRAT _IOR('2', 1, int) | ||
827 | #define BLKI2OGWSTRAT _IOR('2', 2, int) | ||
828 | #define BLKI2OSRSTRAT _IOW('2', 3, int) | ||
829 | #define BLKI2OSWSTRAT _IOW('2', 4, int) | ||
830 | |||
831 | /* | ||
832 | * I2O Function codes | ||
833 | */ | ||
834 | |||
835 | /* | ||
836 | * Executive Class | ||
837 | */ | ||
838 | #define I2O_CMD_ADAPTER_ASSIGN 0xB3 | ||
839 | #define I2O_CMD_ADAPTER_READ 0xB2 | ||
840 | #define I2O_CMD_ADAPTER_RELEASE 0xB5 | ||
841 | #define I2O_CMD_BIOS_INFO_SET 0xA5 | ||
842 | #define I2O_CMD_BOOT_DEVICE_SET 0xA7 | ||
843 | #define I2O_CMD_CONFIG_VALIDATE 0xBB | ||
844 | #define I2O_CMD_CONN_SETUP 0xCA | ||
845 | #define I2O_CMD_DDM_DESTROY 0xB1 | ||
846 | #define I2O_CMD_DDM_ENABLE 0xD5 | ||
847 | #define I2O_CMD_DDM_QUIESCE 0xC7 | ||
848 | #define I2O_CMD_DDM_RESET 0xD9 | ||
849 | #define I2O_CMD_DDM_SUSPEND 0xAF | ||
850 | #define I2O_CMD_DEVICE_ASSIGN 0xB7 | ||
851 | #define I2O_CMD_DEVICE_RELEASE 0xB9 | ||
852 | #define I2O_CMD_HRT_GET 0xA8 | ||
853 | #define I2O_CMD_ADAPTER_CLEAR 0xBE | ||
854 | #define I2O_CMD_ADAPTER_CONNECT 0xC9 | ||
855 | #define I2O_CMD_ADAPTER_RESET 0xBD | ||
856 | #define I2O_CMD_LCT_NOTIFY 0xA2 | ||
857 | #define I2O_CMD_OUTBOUND_INIT 0xA1 | ||
858 | #define I2O_CMD_PATH_ENABLE 0xD3 | ||
859 | #define I2O_CMD_PATH_QUIESCE 0xC5 | ||
860 | #define I2O_CMD_PATH_RESET 0xD7 | ||
861 | #define I2O_CMD_STATIC_MF_CREATE 0xDD | ||
862 | #define I2O_CMD_STATIC_MF_RELEASE 0xDF | ||
863 | #define I2O_CMD_STATUS_GET 0xA0 | ||
864 | #define I2O_CMD_SW_DOWNLOAD 0xA9 | ||
865 | #define I2O_CMD_SW_UPLOAD 0xAB | ||
866 | #define I2O_CMD_SW_REMOVE 0xAD | ||
867 | #define I2O_CMD_SYS_ENABLE 0xD1 | ||
868 | #define I2O_CMD_SYS_MODIFY 0xC1 | ||
869 | #define I2O_CMD_SYS_QUIESCE 0xC3 | ||
870 | #define I2O_CMD_SYS_TAB_SET 0xA3 | ||
871 | |||
872 | /* | ||
873 | * Utility Class | ||
874 | */ | ||
875 | #define I2O_CMD_UTIL_NOP 0x00 | ||
876 | #define I2O_CMD_UTIL_ABORT 0x01 | ||
877 | #define I2O_CMD_UTIL_CLAIM 0x09 | ||
878 | #define I2O_CMD_UTIL_RELEASE 0x0B | ||
879 | #define I2O_CMD_UTIL_PARAMS_GET 0x06 | ||
880 | #define I2O_CMD_UTIL_PARAMS_SET 0x05 | ||
881 | #define I2O_CMD_UTIL_EVT_REGISTER 0x13 | ||
882 | #define I2O_CMD_UTIL_EVT_ACK 0x14 | ||
883 | #define I2O_CMD_UTIL_CONFIG_DIALOG 0x10 | ||
884 | #define I2O_CMD_UTIL_DEVICE_RESERVE 0x0D | ||
885 | #define I2O_CMD_UTIL_DEVICE_RELEASE 0x0F | ||
886 | #define I2O_CMD_UTIL_LOCK 0x17 | ||
887 | #define I2O_CMD_UTIL_LOCK_RELEASE 0x19 | ||
888 | #define I2O_CMD_UTIL_REPLY_FAULT_NOTIFY 0x15 | ||
889 | |||
890 | /* | ||
891 | * SCSI Host Bus Adapter Class | ||
892 | */ | ||
893 | #define I2O_CMD_SCSI_EXEC 0x81 | ||
894 | #define I2O_CMD_SCSI_ABORT 0x83 | ||
895 | #define I2O_CMD_SCSI_BUSRESET 0x27 | ||
896 | |||
897 | /* | ||
898 | * Bus Adapter Class | ||
899 | */ | ||
900 | #define I2O_CMD_BUS_ADAPTER_RESET 0x85 | ||
901 | #define I2O_CMD_BUS_RESET 0x87 | ||
902 | #define I2O_CMD_BUS_SCAN 0x89 | ||
903 | #define I2O_CMD_BUS_QUIESCE 0x8b | ||
904 | |||
905 | /* | ||
906 | * Random Block Storage Class | ||
907 | */ | ||
908 | #define I2O_CMD_BLOCK_READ 0x30 | ||
909 | #define I2O_CMD_BLOCK_WRITE 0x31 | ||
910 | #define I2O_CMD_BLOCK_CFLUSH 0x37 | ||
911 | #define I2O_CMD_BLOCK_MLOCK 0x49 | ||
912 | #define I2O_CMD_BLOCK_MUNLOCK 0x4B | ||
913 | #define I2O_CMD_BLOCK_MMOUNT 0x41 | ||
914 | #define I2O_CMD_BLOCK_MEJECT 0x43 | ||
915 | #define I2O_CMD_BLOCK_POWER 0x70 | ||
916 | |||
917 | #define I2O_CMD_PRIVATE 0xFF | ||
918 | |||
919 | /* Command status values */ | ||
920 | |||
921 | #define I2O_CMD_IN_PROGRESS 0x01 | ||
922 | #define I2O_CMD_REJECTED 0x02 | ||
923 | #define I2O_CMD_FAILED 0x03 | ||
924 | #define I2O_CMD_COMPLETED 0x04 | ||
925 | |||
926 | /* I2O API function return values */ | ||
927 | |||
928 | #define I2O_RTN_NO_ERROR 0 | ||
929 | #define I2O_RTN_NOT_INIT 1 | ||
930 | #define I2O_RTN_FREE_Q_EMPTY 2 | ||
931 | #define I2O_RTN_TCB_ERROR 3 | ||
932 | #define I2O_RTN_TRANSACTION_ERROR 4 | ||
933 | #define I2O_RTN_ADAPTER_ALREADY_INIT 5 | ||
934 | #define I2O_RTN_MALLOC_ERROR 6 | ||
935 | #define I2O_RTN_ADPTR_NOT_REGISTERED 7 | ||
936 | #define I2O_RTN_MSG_REPLY_TIMEOUT 8 | ||
937 | #define I2O_RTN_NO_STATUS 9 | ||
938 | #define I2O_RTN_NO_FIRM_VER 10 | ||
939 | #define I2O_RTN_NO_LINK_SPEED 11 | ||
940 | |||
941 | /* Reply message status defines for all messages */ | ||
942 | |||
943 | #define I2O_REPLY_STATUS_SUCCESS 0x00 | ||
944 | #define I2O_REPLY_STATUS_ABORT_DIRTY 0x01 | ||
945 | #define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER 0x02 | ||
946 | #define I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER 0x03 | ||
947 | #define I2O_REPLY_STATUS_ERROR_DIRTY 0x04 | ||
948 | #define I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER 0x05 | ||
949 | #define I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER 0x06 | ||
950 | #define I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY 0x08 | ||
951 | #define I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER 0x09 | ||
952 | #define I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER 0x0A | ||
953 | #define I2O_REPLY_STATUS_TRANSACTION_ERROR 0x0B | ||
954 | #define I2O_REPLY_STATUS_PROGRESS_REPORT 0x80 | ||
955 | |||
956 | /* Status codes and Error Information for Parameter functions */ | ||
957 | |||
958 | #define I2O_PARAMS_STATUS_SUCCESS 0x00 | ||
959 | #define I2O_PARAMS_STATUS_BAD_KEY_ABORT 0x01 | ||
960 | #define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE 0x02 | ||
961 | #define I2O_PARAMS_STATUS_BUFFER_FULL 0x03 | ||
962 | #define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL 0x04 | ||
963 | #define I2O_PARAMS_STATUS_FIELD_UNREADABLE 0x05 | ||
964 | #define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE 0x06 | ||
965 | #define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS 0x07 | ||
966 | #define I2O_PARAMS_STATUS_INVALID_GROUP_ID 0x08 | ||
967 | #define I2O_PARAMS_STATUS_INVALID_OPERATION 0x09 | ||
968 | #define I2O_PARAMS_STATUS_NO_KEY_FIELD 0x0A | ||
969 | #define I2O_PARAMS_STATUS_NO_SUCH_FIELD 0x0B | ||
970 | #define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP 0x0C | ||
971 | #define I2O_PARAMS_STATUS_OPERATION_ERROR 0x0D | ||
972 | #define I2O_PARAMS_STATUS_SCALAR_ERROR 0x0E | ||
973 | #define I2O_PARAMS_STATUS_TABLE_ERROR 0x0F | ||
974 | #define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE 0x10 | ||
975 | |||
976 | /* DetailedStatusCode defines for Executive, DDM, Util and Transaction error | ||
977 | * messages: Table 3-2 Detailed Status Codes.*/ | ||
978 | |||
979 | #define I2O_DSC_SUCCESS 0x0000 | ||
980 | #define I2O_DSC_BAD_KEY 0x0002 | ||
981 | #define I2O_DSC_TCL_ERROR 0x0003 | ||
982 | #define I2O_DSC_REPLY_BUFFER_FULL 0x0004 | ||
983 | #define I2O_DSC_NO_SUCH_PAGE 0x0005 | ||
984 | #define I2O_DSC_INSUFFICIENT_RESOURCE_SOFT 0x0006 | ||
985 | #define I2O_DSC_INSUFFICIENT_RESOURCE_HARD 0x0007 | ||
986 | #define I2O_DSC_CHAIN_BUFFER_TOO_LARGE 0x0009 | ||
987 | #define I2O_DSC_UNSUPPORTED_FUNCTION 0x000A | ||
988 | #define I2O_DSC_DEVICE_LOCKED 0x000B | ||
989 | #define I2O_DSC_DEVICE_RESET 0x000C | ||
990 | #define I2O_DSC_INAPPROPRIATE_FUNCTION 0x000D | ||
991 | #define I2O_DSC_INVALID_INITIATOR_ADDRESS 0x000E | ||
992 | #define I2O_DSC_INVALID_MESSAGE_FLAGS 0x000F | ||
993 | #define I2O_DSC_INVALID_OFFSET 0x0010 | ||
994 | #define I2O_DSC_INVALID_PARAMETER 0x0011 | ||
995 | #define I2O_DSC_INVALID_REQUEST 0x0012 | ||
996 | #define I2O_DSC_INVALID_TARGET_ADDRESS 0x0013 | ||
997 | #define I2O_DSC_MESSAGE_TOO_LARGE 0x0014 | ||
998 | #define I2O_DSC_MESSAGE_TOO_SMALL 0x0015 | ||
999 | #define I2O_DSC_MISSING_PARAMETER 0x0016 | ||
1000 | #define I2O_DSC_TIMEOUT 0x0017 | ||
1001 | #define I2O_DSC_UNKNOWN_ERROR 0x0018 | ||
1002 | #define I2O_DSC_UNKNOWN_FUNCTION 0x0019 | ||
1003 | #define I2O_DSC_UNSUPPORTED_VERSION 0x001A | ||
1004 | #define I2O_DSC_DEVICE_BUSY 0x001B | ||
1005 | #define I2O_DSC_DEVICE_NOT_AVAILABLE 0x001C | ||
1006 | |||
1007 | /* DetailedStatusCode defines for Block Storage Operation: Table 6-7 Detailed | ||
1008 | Status Codes.*/ | ||
1009 | |||
1010 | #define I2O_BSA_DSC_SUCCESS 0x0000 | ||
1011 | #define I2O_BSA_DSC_MEDIA_ERROR 0x0001 | ||
1012 | #define I2O_BSA_DSC_ACCESS_ERROR 0x0002 | ||
1013 | #define I2O_BSA_DSC_DEVICE_FAILURE 0x0003 | ||
1014 | #define I2O_BSA_DSC_DEVICE_NOT_READY 0x0004 | ||
1015 | #define I2O_BSA_DSC_MEDIA_NOT_PRESENT 0x0005 | ||
1016 | #define I2O_BSA_DSC_MEDIA_LOCKED 0x0006 | ||
1017 | #define I2O_BSA_DSC_MEDIA_FAILURE 0x0007 | ||
1018 | #define I2O_BSA_DSC_PROTOCOL_FAILURE 0x0008 | ||
1019 | #define I2O_BSA_DSC_BUS_FAILURE 0x0009 | ||
1020 | #define I2O_BSA_DSC_ACCESS_VIOLATION 0x000A | ||
1021 | #define I2O_BSA_DSC_WRITE_PROTECTED 0x000B | ||
1022 | #define I2O_BSA_DSC_DEVICE_RESET 0x000C | ||
1023 | #define I2O_BSA_DSC_VOLUME_CHANGED 0x000D | ||
1024 | #define I2O_BSA_DSC_TIMEOUT 0x000E | ||
1025 | |||
1026 | /* FailureStatusCodes, Table 3-3 Message Failure Codes */ | ||
1027 | |||
1028 | #define I2O_FSC_TRANSPORT_SERVICE_SUSPENDED 0x81 | ||
1029 | #define I2O_FSC_TRANSPORT_SERVICE_TERMINATED 0x82 | ||
1030 | #define I2O_FSC_TRANSPORT_CONGESTION 0x83 | ||
1031 | #define I2O_FSC_TRANSPORT_FAILURE 0x84 | ||
1032 | #define I2O_FSC_TRANSPORT_STATE_ERROR 0x85 | ||
1033 | #define I2O_FSC_TRANSPORT_TIME_OUT 0x86 | ||
1034 | #define I2O_FSC_TRANSPORT_ROUTING_FAILURE 0x87 | ||
1035 | #define I2O_FSC_TRANSPORT_INVALID_VERSION 0x88 | ||
1036 | #define I2O_FSC_TRANSPORT_INVALID_OFFSET 0x89 | ||
1037 | #define I2O_FSC_TRANSPORT_INVALID_MSG_FLAGS 0x8A | ||
1038 | #define I2O_FSC_TRANSPORT_FRAME_TOO_SMALL 0x8B | ||
1039 | #define I2O_FSC_TRANSPORT_FRAME_TOO_LARGE 0x8C | ||
1040 | #define I2O_FSC_TRANSPORT_INVALID_TARGET_ID 0x8D | ||
1041 | #define I2O_FSC_TRANSPORT_INVALID_INITIATOR_ID 0x8E | ||
1042 | #define I2O_FSC_TRANSPORT_INVALID_INITIATOR_CONTEXT 0x8F | ||
1043 | #define I2O_FSC_TRANSPORT_UNKNOWN_FAILURE 0xFF | ||
1044 | |||
1045 | /* Device Claim Types */ | ||
1046 | #define I2O_CLAIM_PRIMARY 0x01000000 | ||
1047 | #define I2O_CLAIM_MANAGEMENT 0x02000000 | ||
1048 | #define I2O_CLAIM_AUTHORIZED 0x03000000 | ||
1049 | #define I2O_CLAIM_SECONDARY 0x04000000 | ||
1050 | |||
1051 | /* Message header defines for VersionOffset */ | ||
1052 | #define I2OVER15 0x0001 | ||
1053 | #define I2OVER20 0x0002 | ||
1054 | |||
1055 | /* Default is 1.5 */ | ||
1056 | #define I2OVERSION I2OVER15 | ||
1057 | |||
1058 | #define SGL_OFFSET_0 I2OVERSION | ||
1059 | #define SGL_OFFSET_4 (0x0040 | I2OVERSION) | ||
1060 | #define SGL_OFFSET_5 (0x0050 | I2OVERSION) | ||
1061 | #define SGL_OFFSET_6 (0x0060 | I2OVERSION) | ||
1062 | #define SGL_OFFSET_7 (0x0070 | I2OVERSION) | ||
1063 | #define SGL_OFFSET_8 (0x0080 | I2OVERSION) | ||
1064 | #define SGL_OFFSET_9 (0x0090 | I2OVERSION) | ||
1065 | #define SGL_OFFSET_10 (0x00A0 | I2OVERSION) | ||
1066 | #define SGL_OFFSET_11 (0x00B0 | I2OVERSION) | ||
1067 | #define SGL_OFFSET_12 (0x00C0 | I2OVERSION) | ||
1068 | #define SGL_OFFSET(x) (((x)<<4) | I2OVERSION) | ||
1069 | |||
1070 | /* Transaction Reply Lists (TRL) Control Word structure */ | ||
1071 | #define TRL_SINGLE_FIXED_LENGTH 0x00 | ||
1072 | #define TRL_SINGLE_VARIABLE_LENGTH 0x40 | ||
1073 | #define TRL_MULTIPLE_FIXED_LENGTH 0x80 | ||
1074 | |||
1075 | /* msg header defines for MsgFlags */ | ||
1076 | #define MSG_STATIC 0x0100 | ||
1077 | #define MSG_64BIT_CNTXT 0x0200 | ||
1078 | #define MSG_MULTI_TRANS 0x1000 | ||
1079 | #define MSG_FAIL 0x2000 | ||
1080 | #define MSG_FINAL 0x4000 | ||
1081 | #define MSG_REPLY 0x8000 | ||
1082 | |||
1083 | /* minimum size msg */ | ||
1084 | #define THREE_WORD_MSG_SIZE 0x00030000 | ||
1085 | #define FOUR_WORD_MSG_SIZE 0x00040000 | ||
1086 | #define FIVE_WORD_MSG_SIZE 0x00050000 | ||
1087 | #define SIX_WORD_MSG_SIZE 0x00060000 | ||
1088 | #define SEVEN_WORD_MSG_SIZE 0x00070000 | ||
1089 | #define EIGHT_WORD_MSG_SIZE 0x00080000 | ||
1090 | #define NINE_WORD_MSG_SIZE 0x00090000 | ||
1091 | #define TEN_WORD_MSG_SIZE 0x000A0000 | ||
1092 | #define ELEVEN_WORD_MSG_SIZE 0x000B0000 | ||
1093 | #define I2O_MESSAGE_SIZE(x) ((x)<<16) | ||
1094 | |||
1095 | /* special TID assignments */ | ||
1096 | #define ADAPTER_TID 0 | ||
1097 | #define HOST_TID 1 | ||
1098 | |||
1099 | /* outbound queue defines */ | ||
1100 | #define I2O_MAX_OUTBOUND_MSG_FRAMES 128 | ||
1101 | #define I2O_OUTBOUND_MSG_FRAME_SIZE 128 /* in 32-bit words */ | ||
1102 | |||
1103 | #define I2O_POST_WAIT_OK 0 | ||
1104 | #define I2O_POST_WAIT_TIMEOUT -ETIMEDOUT | ||
1105 | |||
1106 | #define I2O_CONTEXT_LIST_MIN_LENGTH 15 | ||
1107 | #define I2O_CONTEXT_LIST_USED 0x01 | ||
1108 | #define I2O_CONTEXT_LIST_DELETED 0x02 | ||
1109 | |||
1110 | /* timeouts */ | ||
1111 | #define I2O_TIMEOUT_INIT_OUTBOUND_QUEUE 15 | ||
1112 | #define I2O_TIMEOUT_MESSAGE_GET 5 | ||
1113 | #define I2O_TIMEOUT_RESET 30 | ||
1114 | #define I2O_TIMEOUT_STATUS_GET 5 | ||
1115 | #define I2O_TIMEOUT_LCT_GET 360 | ||
1116 | #define I2O_TIMEOUT_SCSI_SCB_ABORT 240 | ||
1117 | |||
1118 | /* retries */ | ||
1119 | #define I2O_HRT_GET_TRIES 3 | ||
1120 | #define I2O_LCT_GET_TRIES 3 | ||
1121 | |||
1122 | /* defines for max_sectors and max_phys_segments */ | ||
1123 | #define I2O_MAX_SECTORS 1024 | ||
1124 | #define I2O_MAX_SECTORS_LIMITED 256 | ||
1125 | #define I2O_MAX_PHYS_SEGMENTS MAX_PHYS_SEGMENTS | ||
1126 | |||
1127 | #endif /* __KERNEL__ */ | 1255 | #endif /* __KERNEL__ */ |
1128 | #endif /* _I2O_H */ | 1256 | #endif /* _I2O_H */ |
diff --git a/include/linux/irq.h b/include/linux/irq.h index f04ba20712a2..6c5d4c898ccb 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <linux/config.h> | 12 | #include <linux/config.h> |
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | 14 | ||
15 | #if !defined(CONFIG_ARCH_S390) | 15 | #if !defined(CONFIG_S390) |
16 | 16 | ||
17 | #include <linux/linkage.h> | 17 | #include <linux/linkage.h> |
18 | #include <linux/cache.h> | 18 | #include <linux/cache.h> |
@@ -221,6 +221,17 @@ extern void note_interrupt(unsigned int irq, irq_desc_t *desc, | |||
221 | extern int can_request_irq(unsigned int irq, unsigned long irqflags); | 221 | extern int can_request_irq(unsigned int irq, unsigned long irqflags); |
222 | 222 | ||
223 | extern void init_irq_proc(void); | 223 | extern void init_irq_proc(void); |
224 | |||
225 | #ifdef CONFIG_AUTO_IRQ_AFFINITY | ||
226 | extern int select_smp_affinity(unsigned int irq); | ||
227 | #else | ||
228 | static inline int | ||
229 | select_smp_affinity(unsigned int irq) | ||
230 | { | ||
231 | return 1; | ||
232 | } | ||
233 | #endif | ||
234 | |||
224 | #endif | 235 | #endif |
225 | 236 | ||
226 | extern hw_irq_controller no_irq_type; /* needed in every arch ? */ | 237 | extern hw_irq_controller no_irq_type; /* needed in every arch ? */ |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index dcde7adfdce5..558cb4c26ec9 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -498,6 +498,12 @@ struct transaction_s | |||
498 | struct journal_head *t_checkpoint_list; | 498 | struct journal_head *t_checkpoint_list; |
499 | 499 | ||
500 | /* | 500 | /* |
501 | * Doubly-linked circular list of all buffers submitted for IO while | ||
502 | * checkpointing. [j_list_lock] | ||
503 | */ | ||
504 | struct journal_head *t_checkpoint_io_list; | ||
505 | |||
506 | /* | ||
501 | * Doubly-linked circular list of temporary buffers currently undergoing | 507 | * Doubly-linked circular list of temporary buffers currently undergoing |
502 | * IO in the log [j_list_lock] | 508 | * IO in the log [j_list_lock] |
503 | */ | 509 | */ |
@@ -843,7 +849,7 @@ extern void journal_commit_transaction(journal_t *); | |||
843 | 849 | ||
844 | /* Checkpoint list management */ | 850 | /* Checkpoint list management */ |
845 | int __journal_clean_checkpoint_list(journal_t *journal); | 851 | int __journal_clean_checkpoint_list(journal_t *journal); |
846 | void __journal_remove_checkpoint(struct journal_head *); | 852 | int __journal_remove_checkpoint(struct journal_head *); |
847 | void __journal_insert_checkpoint(struct journal_head *, transaction_t *); | 853 | void __journal_insert_checkpoint(struct journal_head *, transaction_t *); |
848 | 854 | ||
849 | /* Buffer IO */ | 855 | /* Buffer IO */ |
diff --git a/include/linux/key.h b/include/linux/key.h index 53513a3be53b..4d189e51bc6c 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -193,14 +193,6 @@ struct key_type { | |||
193 | */ | 193 | */ |
194 | int (*instantiate)(struct key *key, const void *data, size_t datalen); | 194 | int (*instantiate)(struct key *key, const void *data, size_t datalen); |
195 | 195 | ||
196 | /* duplicate a key of this type (optional) | ||
197 | * - the source key will be locked against change | ||
198 | * - the new description will be attached | ||
199 | * - the quota will have been adjusted automatically from | ||
200 | * source->quotalen | ||
201 | */ | ||
202 | int (*duplicate)(struct key *key, const struct key *source); | ||
203 | |||
204 | /* update a key of this type (optional) | 196 | /* update a key of this type (optional) |
205 | * - this method should call key_payload_reserve() to recalculate the | 197 | * - this method should call key_payload_reserve() to recalculate the |
206 | * quota consumption | 198 | * quota consumption |
diff --git a/include/linux/libata.h b/include/linux/libata.h index e828e172ccbf..a43c95f8f968 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -124,6 +124,8 @@ enum { | |||
124 | ATA_FLAG_DEBUGMSG = (1 << 10), | 124 | ATA_FLAG_DEBUGMSG = (1 << 10), |
125 | ATA_FLAG_NO_ATAPI = (1 << 11), /* No ATAPI support */ | 125 | ATA_FLAG_NO_ATAPI = (1 << 11), /* No ATAPI support */ |
126 | 126 | ||
127 | ATA_FLAG_SUSPENDED = (1 << 12), /* port is suspended */ | ||
128 | |||
127 | ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */ | 129 | ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */ |
128 | ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */ | 130 | ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */ |
129 | ATA_QCFLAG_SINGLE = (1 << 4), /* no s/g, just a single buffer */ | 131 | ATA_QCFLAG_SINGLE = (1 << 4), /* no s/g, just a single buffer */ |
@@ -436,6 +438,8 @@ extern void ata_std_ports(struct ata_ioports *ioaddr); | |||
436 | extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info, | 438 | extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info, |
437 | unsigned int n_ports); | 439 | unsigned int n_ports); |
438 | extern void ata_pci_remove_one (struct pci_dev *pdev); | 440 | extern void ata_pci_remove_one (struct pci_dev *pdev); |
441 | extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state); | ||
442 | extern int ata_pci_device_resume(struct pci_dev *pdev); | ||
439 | #endif /* CONFIG_PCI */ | 443 | #endif /* CONFIG_PCI */ |
440 | extern int ata_device_add(const struct ata_probe_ent *ent); | 444 | extern int ata_device_add(const struct ata_probe_ent *ent); |
441 | extern void ata_host_set_remove(struct ata_host_set *host_set); | 445 | extern void ata_host_set_remove(struct ata_host_set *host_set); |
@@ -445,6 +449,10 @@ extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmn | |||
445 | extern int ata_scsi_error(struct Scsi_Host *host); | 449 | extern int ata_scsi_error(struct Scsi_Host *host); |
446 | extern int ata_scsi_release(struct Scsi_Host *host); | 450 | extern int ata_scsi_release(struct Scsi_Host *host); |
447 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); | 451 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); |
452 | extern int ata_scsi_device_resume(struct scsi_device *); | ||
453 | extern int ata_scsi_device_suspend(struct scsi_device *); | ||
454 | extern int ata_device_resume(struct ata_port *, struct ata_device *); | ||
455 | extern int ata_device_suspend(struct ata_port *, struct ata_device *); | ||
448 | extern int ata_ratelimit(void); | 456 | extern int ata_ratelimit(void); |
449 | 457 | ||
450 | /* | 458 | /* |
@@ -480,7 +488,8 @@ extern u8 ata_bmdma_status(struct ata_port *ap); | |||
480 | extern void ata_bmdma_irq_clear(struct ata_port *ap); | 488 | extern void ata_bmdma_irq_clear(struct ata_port *ap); |
481 | extern void ata_qc_complete(struct ata_queued_cmd *qc); | 489 | extern void ata_qc_complete(struct ata_queued_cmd *qc); |
482 | extern void ata_eng_timeout(struct ata_port *ap); | 490 | extern void ata_eng_timeout(struct ata_port *ap); |
483 | extern void ata_scsi_simulate(u16 *id, struct scsi_cmnd *cmd, | 491 | extern void ata_scsi_simulate(struct ata_port *ap, struct ata_device *dev, |
492 | struct scsi_cmnd *cmd, | ||
484 | void (*done)(struct scsi_cmnd *)); | 493 | void (*done)(struct scsi_cmnd *)); |
485 | extern int ata_std_bios_param(struct scsi_device *sdev, | 494 | extern int ata_std_bios_param(struct scsi_device *sdev, |
486 | struct block_device *bdev, | 495 | struct block_device *bdev, |
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index 16d4e5a08e1d..95c8fea293ba 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h | |||
@@ -172,7 +172,7 @@ extern struct nlm_host *nlm_find_client(void); | |||
172 | /* | 172 | /* |
173 | * Server-side lock handling | 173 | * Server-side lock handling |
174 | */ | 174 | */ |
175 | int nlmsvc_async_call(struct nlm_rqst *, u32, rpc_action); | 175 | int nlmsvc_async_call(struct nlm_rqst *, u32, const struct rpc_call_ops *); |
176 | u32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *, | 176 | u32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *, |
177 | struct nlm_lock *, int, struct nlm_cookie *); | 177 | struct nlm_lock *, int, struct nlm_cookie *); |
178 | u32 nlmsvc_unlock(struct nlm_file *, struct nlm_lock *); | 178 | u32 nlmsvc_unlock(struct nlm_file *, struct nlm_lock *); |
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 8b67cf837ca9..ed00b278cb93 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
@@ -110,14 +110,6 @@ static inline int mpol_equal(struct mempolicy *a, struct mempolicy *b) | |||
110 | #define mpol_set_vma_default(vma) ((vma)->vm_policy = NULL) | 110 | #define mpol_set_vma_default(vma) ((vma)->vm_policy = NULL) |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Hugetlb policy. i386 hugetlb so far works with node numbers | ||
114 | * instead of zone lists, so give it special interfaces for now. | ||
115 | */ | ||
116 | extern int mpol_first_node(struct vm_area_struct *vma, unsigned long addr); | ||
117 | extern int mpol_node_valid(int nid, struct vm_area_struct *vma, | ||
118 | unsigned long addr); | ||
119 | |||
120 | /* | ||
121 | * Tree of shared policies for a shared memory region. | 113 | * Tree of shared policies for a shared memory region. |
122 | * Maintain the policies in a pseudo mm that contains vmas. The vmas | 114 | * Maintain the policies in a pseudo mm that contains vmas. The vmas |
123 | * carry the policy. As a special twist the pseudo mm is indexed in pages, not | 115 | * carry the policy. As a special twist the pseudo mm is indexed in pages, not |
@@ -156,6 +148,16 @@ extern void numa_default_policy(void); | |||
156 | extern void numa_policy_init(void); | 148 | extern void numa_policy_init(void); |
157 | extern void numa_policy_rebind(const nodemask_t *old, const nodemask_t *new); | 149 | extern void numa_policy_rebind(const nodemask_t *old, const nodemask_t *new); |
158 | extern struct mempolicy default_policy; | 150 | extern struct mempolicy default_policy; |
151 | extern struct zonelist *huge_zonelist(struct vm_area_struct *vma, | ||
152 | unsigned long addr); | ||
153 | |||
154 | extern int policy_zone; | ||
155 | |||
156 | static inline void check_highest_zone(int k) | ||
157 | { | ||
158 | if (k > policy_zone) | ||
159 | policy_zone = k; | ||
160 | } | ||
159 | 161 | ||
160 | #else | 162 | #else |
161 | 163 | ||
@@ -182,17 +184,6 @@ static inline struct mempolicy *mpol_copy(struct mempolicy *old) | |||
182 | return NULL; | 184 | return NULL; |
183 | } | 185 | } |
184 | 186 | ||
185 | static inline int mpol_first_node(struct vm_area_struct *vma, unsigned long a) | ||
186 | { | ||
187 | return numa_node_id(); | ||
188 | } | ||
189 | |||
190 | static inline int | ||
191 | mpol_node_valid(int nid, struct vm_area_struct *vma, unsigned long a) | ||
192 | { | ||
193 | return 1; | ||
194 | } | ||
195 | |||
196 | struct shared_policy {}; | 187 | struct shared_policy {}; |
197 | 188 | ||
198 | static inline int mpol_set_shared_policy(struct shared_policy *info, | 189 | static inline int mpol_set_shared_policy(struct shared_policy *info, |
@@ -232,6 +223,15 @@ static inline void numa_policy_rebind(const nodemask_t *old, | |||
232 | { | 223 | { |
233 | } | 224 | } |
234 | 225 | ||
226 | static inline struct zonelist *huge_zonelist(struct vm_area_struct *vma, | ||
227 | unsigned long addr) | ||
228 | { | ||
229 | return NODE_DATA(0)->node_zonelists + gfp_zone(GFP_HIGHUSER); | ||
230 | } | ||
231 | |||
232 | static inline void check_highest_zone(int k) | ||
233 | { | ||
234 | } | ||
235 | #endif /* CONFIG_NUMA */ | 235 | #endif /* CONFIG_NUMA */ |
236 | #endif /* __KERNEL__ */ | 236 | #endif /* __KERNEL__ */ |
237 | 237 | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index a06a84d347fb..bc01fff3aa01 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -634,14 +634,38 @@ struct mempolicy *shmem_get_policy(struct vm_area_struct *vma, | |||
634 | int shmem_lock(struct file *file, int lock, struct user_struct *user); | 634 | int shmem_lock(struct file *file, int lock, struct user_struct *user); |
635 | #else | 635 | #else |
636 | #define shmem_nopage filemap_nopage | 636 | #define shmem_nopage filemap_nopage |
637 | #define shmem_lock(a, b, c) ({0;}) /* always in memory, no need to lock */ | 637 | |
638 | #define shmem_set_policy(a, b) (0) | 638 | static inline int shmem_lock(struct file *file, int lock, |
639 | #define shmem_get_policy(a, b) (NULL) | 639 | struct user_struct *user) |
640 | { | ||
641 | return 0; | ||
642 | } | ||
643 | |||
644 | static inline int shmem_set_policy(struct vm_area_struct *vma, | ||
645 | struct mempolicy *new) | ||
646 | { | ||
647 | return 0; | ||
648 | } | ||
649 | |||
650 | static inline struct mempolicy *shmem_get_policy(struct vm_area_struct *vma, | ||
651 | unsigned long addr) | ||
652 | { | ||
653 | return NULL; | ||
654 | } | ||
640 | #endif | 655 | #endif |
641 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags); | 656 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags); |
657 | extern int shmem_mmap(struct file *file, struct vm_area_struct *vma); | ||
642 | 658 | ||
643 | int shmem_zero_setup(struct vm_area_struct *); | 659 | int shmem_zero_setup(struct vm_area_struct *); |
644 | 660 | ||
661 | #ifndef CONFIG_MMU | ||
662 | extern unsigned long shmem_get_unmapped_area(struct file *file, | ||
663 | unsigned long addr, | ||
664 | unsigned long len, | ||
665 | unsigned long pgoff, | ||
666 | unsigned long flags); | ||
667 | #endif | ||
668 | |||
645 | static inline int can_do_mlock(void) | 669 | static inline int can_do_mlock(void) |
646 | { | 670 | { |
647 | if (capable(CAP_IPC_LOCK)) | 671 | if (capable(CAP_IPC_LOCK)) |
@@ -690,14 +714,31 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, | |||
690 | } | 714 | } |
691 | 715 | ||
692 | extern int vmtruncate(struct inode * inode, loff_t offset); | 716 | extern int vmtruncate(struct inode * inode, loff_t offset); |
717 | extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end); | ||
693 | extern int install_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, struct page *page, pgprot_t prot); | 718 | extern int install_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, struct page *page, pgprot_t prot); |
694 | extern int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, unsigned long pgoff, pgprot_t prot); | 719 | extern int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, unsigned long pgoff, pgprot_t prot); |
695 | extern int __handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, unsigned long address, int write_access); | ||
696 | 720 | ||
697 | static inline int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, int write_access) | 721 | #ifdef CONFIG_MMU |
722 | extern int __handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, | ||
723 | unsigned long address, int write_access); | ||
724 | |||
725 | static inline int handle_mm_fault(struct mm_struct *mm, | ||
726 | struct vm_area_struct *vma, unsigned long address, | ||
727 | int write_access) | ||
698 | { | 728 | { |
699 | return __handle_mm_fault(mm, vma, address, write_access) & (~VM_FAULT_WRITE); | 729 | return __handle_mm_fault(mm, vma, address, write_access) & |
730 | (~VM_FAULT_WRITE); | ||
700 | } | 731 | } |
732 | #else | ||
733 | static inline int handle_mm_fault(struct mm_struct *mm, | ||
734 | struct vm_area_struct *vma, unsigned long address, | ||
735 | int write_access) | ||
736 | { | ||
737 | /* should never happen if there's no MMU */ | ||
738 | BUG(); | ||
739 | return VM_FAULT_SIGBUS; | ||
740 | } | ||
741 | #endif | ||
701 | 742 | ||
702 | extern int make_pages_present(unsigned long addr, unsigned long end); | 743 | extern int make_pages_present(unsigned long addr, unsigned long end); |
703 | extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); | 744 | extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); |
@@ -896,6 +937,8 @@ extern unsigned long do_brk(unsigned long, unsigned long); | |||
896 | /* filemap.c */ | 937 | /* filemap.c */ |
897 | extern unsigned long page_unuse(struct page *); | 938 | extern unsigned long page_unuse(struct page *); |
898 | extern void truncate_inode_pages(struct address_space *, loff_t); | 939 | extern void truncate_inode_pages(struct address_space *, loff_t); |
940 | extern void truncate_inode_pages_range(struct address_space *, | ||
941 | loff_t lstart, loff_t lend); | ||
899 | 942 | ||
900 | /* generic vm_area_ops exported for stackable file systems */ | 943 | /* generic vm_area_ops exported for stackable file systems */ |
901 | extern struct page *filemap_nopage(struct vm_area_struct *, unsigned long, int *); | 944 | extern struct page *filemap_nopage(struct vm_area_struct *, unsigned long, int *); |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 9f22090df7dd..c34f4a2c62f8 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -46,7 +46,6 @@ struct zone_padding { | |||
46 | 46 | ||
47 | struct per_cpu_pages { | 47 | struct per_cpu_pages { |
48 | int count; /* number of pages in the list */ | 48 | int count; /* number of pages in the list */ |
49 | int low; /* low watermark, refill needed */ | ||
50 | int high; /* high watermark, emptying needed */ | 49 | int high; /* high watermark, emptying needed */ |
51 | int batch; /* chunk size for buddy add/remove */ | 50 | int batch; /* chunk size for buddy add/remove */ |
52 | struct list_head list; /* the list of pages */ | 51 | struct list_head list; /* the list of pages */ |
@@ -389,6 +388,11 @@ static inline struct zone *next_zone(struct zone *zone) | |||
389 | #define for_each_zone(zone) \ | 388 | #define for_each_zone(zone) \ |
390 | for (zone = pgdat_list->node_zones; zone; zone = next_zone(zone)) | 389 | for (zone = pgdat_list->node_zones; zone; zone = next_zone(zone)) |
391 | 390 | ||
391 | static inline int populated_zone(struct zone *zone) | ||
392 | { | ||
393 | return (!!zone->present_pages); | ||
394 | } | ||
395 | |||
392 | static inline int is_highmem_idx(int idx) | 396 | static inline int is_highmem_idx(int idx) |
393 | { | 397 | { |
394 | return (idx == ZONE_HIGHMEM); | 398 | return (idx == ZONE_HIGHMEM); |
@@ -398,6 +402,7 @@ static inline int is_normal_idx(int idx) | |||
398 | { | 402 | { |
399 | return (idx == ZONE_NORMAL); | 403 | return (idx == ZONE_NORMAL); |
400 | } | 404 | } |
405 | |||
401 | /** | 406 | /** |
402 | * is_highmem - helper function to quickly check if a struct zone is a | 407 | * is_highmem - helper function to quickly check if a struct zone is a |
403 | * highmem zone or not. This is an attempt to keep references | 408 | * highmem zone or not. This is an attempt to keep references |
@@ -414,6 +419,16 @@ static inline int is_normal(struct zone *zone) | |||
414 | return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; | 419 | return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; |
415 | } | 420 | } |
416 | 421 | ||
422 | static inline int is_dma32(struct zone *zone) | ||
423 | { | ||
424 | return zone == zone->zone_pgdat->node_zones + ZONE_DMA32; | ||
425 | } | ||
426 | |||
427 | static inline int is_dma(struct zone *zone) | ||
428 | { | ||
429 | return zone == zone->zone_pgdat->node_zones + ZONE_DMA; | ||
430 | } | ||
431 | |||
417 | /* These two functions are used to setup the per zone pages min values */ | 432 | /* These two functions are used to setup the per zone pages min values */ |
418 | struct ctl_table; | 433 | struct ctl_table; |
419 | struct file; | 434 | struct file; |
@@ -435,7 +450,6 @@ extern struct pglist_data contig_page_data; | |||
435 | #define NODE_DATA(nid) (&contig_page_data) | 450 | #define NODE_DATA(nid) (&contig_page_data) |
436 | #define NODE_MEM_MAP(nid) mem_map | 451 | #define NODE_MEM_MAP(nid) mem_map |
437 | #define MAX_NODES_SHIFT 1 | 452 | #define MAX_NODES_SHIFT 1 |
438 | #define pfn_to_nid(pfn) (0) | ||
439 | 453 | ||
440 | #else /* CONFIG_NEED_MULTIPLE_NODES */ | 454 | #else /* CONFIG_NEED_MULTIPLE_NODES */ |
441 | 455 | ||
@@ -470,6 +484,10 @@ extern struct pglist_data contig_page_data; | |||
470 | #define early_pfn_to_nid(nid) (0UL) | 484 | #define early_pfn_to_nid(nid) (0UL) |
471 | #endif | 485 | #endif |
472 | 486 | ||
487 | #ifdef CONFIG_FLATMEM | ||
488 | #define pfn_to_nid(pfn) (0) | ||
489 | #endif | ||
490 | |||
473 | #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT) | 491 | #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT) |
474 | #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT) | 492 | #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT) |
475 | 493 | ||
@@ -564,11 +582,6 @@ static inline int valid_section_nr(unsigned long nr) | |||
564 | return valid_section(__nr_to_section(nr)); | 582 | return valid_section(__nr_to_section(nr)); |
565 | } | 583 | } |
566 | 584 | ||
567 | /* | ||
568 | * Given a kernel address, find the home node of the underlying memory. | ||
569 | */ | ||
570 | #define kvaddr_to_nid(kaddr) pfn_to_nid(__pa(kaddr) >> PAGE_SHIFT) | ||
571 | |||
572 | static inline struct mem_section *__pfn_to_section(unsigned long pfn) | 585 | static inline struct mem_section *__pfn_to_section(unsigned long pfn) |
573 | { | 586 | { |
574 | return __nr_to_section(pfn_to_section_nr(pfn)); | 587 | return __nr_to_section(pfn_to_section_nr(pfn)); |
@@ -598,13 +611,14 @@ static inline int pfn_valid(unsigned long pfn) | |||
598 | * this restriction. | 611 | * this restriction. |
599 | */ | 612 | */ |
600 | #ifdef CONFIG_NUMA | 613 | #ifdef CONFIG_NUMA |
601 | #define pfn_to_nid early_pfn_to_nid | 614 | #define pfn_to_nid(pfn) \ |
602 | #endif | ||
603 | |||
604 | #define pfn_to_pgdat(pfn) \ | ||
605 | ({ \ | 615 | ({ \ |
606 | NODE_DATA(pfn_to_nid(pfn)); \ | 616 | unsigned long __pfn_to_nid_pfn = (pfn); \ |
617 | page_to_nid(pfn_to_page(__pfn_to_nid_pfn)); \ | ||
607 | }) | 618 | }) |
619 | #else | ||
620 | #define pfn_to_nid(pfn) (0) | ||
621 | #endif | ||
608 | 622 | ||
609 | #define early_pfn_valid(pfn) pfn_valid(pfn) | 623 | #define early_pfn_valid(pfn) pfn_valid(pfn) |
610 | void sparse_init(void); | 624 | void sparse_init(void); |
@@ -613,12 +627,6 @@ void sparse_init(void); | |||
613 | #define sparse_index_init(_sec, _nid) do {} while (0) | 627 | #define sparse_index_init(_sec, _nid) do {} while (0) |
614 | #endif /* CONFIG_SPARSEMEM */ | 628 | #endif /* CONFIG_SPARSEMEM */ |
615 | 629 | ||
616 | #ifdef CONFIG_NODES_SPAN_OTHER_NODES | ||
617 | #define early_pfn_in_nid(pfn, nid) (early_pfn_to_nid(pfn) == (nid)) | ||
618 | #else | ||
619 | #define early_pfn_in_nid(pfn, nid) (1) | ||
620 | #endif | ||
621 | |||
622 | #ifndef early_pfn_valid | 630 | #ifndef early_pfn_valid |
623 | #define early_pfn_valid(pfn) (1) | 631 | #define early_pfn_valid(pfn) (1) |
624 | #endif | 632 | #endif |
diff --git a/include/linux/nbd.h b/include/linux/nbd.h index 090e210e98f0..f95d51fae733 100644 --- a/include/linux/nbd.h +++ b/include/linux/nbd.h | |||
@@ -37,18 +37,26 @@ enum { | |||
37 | /* userspace doesn't need the nbd_device structure */ | 37 | /* userspace doesn't need the nbd_device structure */ |
38 | #ifdef __KERNEL__ | 38 | #ifdef __KERNEL__ |
39 | 39 | ||
40 | #include <linux/wait.h> | ||
41 | |||
40 | /* values for flags field */ | 42 | /* values for flags field */ |
41 | #define NBD_READ_ONLY 0x0001 | 43 | #define NBD_READ_ONLY 0x0001 |
42 | #define NBD_WRITE_NOCHK 0x0002 | 44 | #define NBD_WRITE_NOCHK 0x0002 |
43 | 45 | ||
46 | struct request; | ||
47 | |||
44 | struct nbd_device { | 48 | struct nbd_device { |
45 | int flags; | 49 | int flags; |
46 | int harderror; /* Code of hard error */ | 50 | int harderror; /* Code of hard error */ |
47 | struct socket * sock; | 51 | struct socket * sock; |
48 | struct file * file; /* If == NULL, device is not ready, yet */ | 52 | struct file * file; /* If == NULL, device is not ready, yet */ |
49 | int magic; | 53 | int magic; |
54 | |||
50 | spinlock_t queue_lock; | 55 | spinlock_t queue_lock; |
51 | struct list_head queue_head;/* Requests are added here... */ | 56 | struct list_head queue_head;/* Requests are added here... */ |
57 | struct request *active_req; | ||
58 | wait_queue_head_t active_wq; | ||
59 | |||
52 | struct semaphore tx_lock; | 60 | struct semaphore tx_lock; |
53 | struct gendisk *disk; | 61 | struct gendisk *disk; |
54 | int blksize; | 62 | int blksize; |
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 2516adeccecf..547d649b274e 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -38,9 +38,6 @@ | |||
38 | # define NFS_DEBUG | 38 | # define NFS_DEBUG |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | #define NFS_MAX_FILE_IO_BUFFER_SIZE 32768 | ||
42 | #define NFS_DEF_FILE_IO_BUFFER_SIZE 4096 | ||
43 | |||
44 | /* Default timeout values */ | 41 | /* Default timeout values */ |
45 | #define NFS_MAX_UDP_TIMEOUT (60*HZ) | 42 | #define NFS_MAX_UDP_TIMEOUT (60*HZ) |
46 | #define NFS_MAX_TCP_TIMEOUT (600*HZ) | 43 | #define NFS_MAX_TCP_TIMEOUT (600*HZ) |
@@ -65,6 +62,7 @@ | |||
65 | #define FLUSH_STABLE 4 /* commit to stable storage */ | 62 | #define FLUSH_STABLE 4 /* commit to stable storage */ |
66 | #define FLUSH_LOWPRI 8 /* low priority background flush */ | 63 | #define FLUSH_LOWPRI 8 /* low priority background flush */ |
67 | #define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */ | 64 | #define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */ |
65 | #define FLUSH_NOCOMMIT 32 /* Don't send the NFSv3/v4 COMMIT */ | ||
68 | 66 | ||
69 | #ifdef __KERNEL__ | 67 | #ifdef __KERNEL__ |
70 | 68 | ||
@@ -394,6 +392,17 @@ extern int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fh, struct nfs_ | |||
394 | extern struct inode_operations nfs_symlink_inode_operations; | 392 | extern struct inode_operations nfs_symlink_inode_operations; |
395 | 393 | ||
396 | /* | 394 | /* |
395 | * linux/fs/nfs/sysctl.c | ||
396 | */ | ||
397 | #ifdef CONFIG_SYSCTL | ||
398 | extern int nfs_register_sysctl(void); | ||
399 | extern void nfs_unregister_sysctl(void); | ||
400 | #else | ||
401 | #define nfs_register_sysctl() do { } while(0) | ||
402 | #define nfs_unregister_sysctl() do { } while(0) | ||
403 | #endif | ||
404 | |||
405 | /* | ||
397 | * linux/fs/nfs/unlink.c | 406 | * linux/fs/nfs/unlink.c |
398 | */ | 407 | */ |
399 | extern int nfs_async_unlink(struct dentry *); | 408 | extern int nfs_async_unlink(struct dentry *); |
@@ -406,10 +415,12 @@ extern int nfs_writepage(struct page *page, struct writeback_control *wbc); | |||
406 | extern int nfs_writepages(struct address_space *, struct writeback_control *); | 415 | extern int nfs_writepages(struct address_space *, struct writeback_control *); |
407 | extern int nfs_flush_incompatible(struct file *file, struct page *page); | 416 | extern int nfs_flush_incompatible(struct file *file, struct page *page); |
408 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); | 417 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); |
409 | extern void nfs_writeback_done(struct rpc_task *task); | 418 | extern void nfs_writeback_done(struct rpc_task *task, void *data); |
419 | extern void nfs_writedata_release(void *data); | ||
410 | 420 | ||
411 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) | 421 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) |
412 | extern void nfs_commit_done(struct rpc_task *); | 422 | extern void nfs_commit_done(struct rpc_task *, void *data); |
423 | extern void nfs_commit_release(void *data); | ||
413 | #endif | 424 | #endif |
414 | 425 | ||
415 | /* | 426 | /* |
@@ -460,18 +471,33 @@ static inline int nfs_wb_page(struct inode *inode, struct page* page) | |||
460 | */ | 471 | */ |
461 | extern mempool_t *nfs_wdata_mempool; | 472 | extern mempool_t *nfs_wdata_mempool; |
462 | 473 | ||
463 | static inline struct nfs_write_data *nfs_writedata_alloc(void) | 474 | static inline struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount) |
464 | { | 475 | { |
465 | struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, SLAB_NOFS); | 476 | struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, SLAB_NOFS); |
477 | |||
466 | if (p) { | 478 | if (p) { |
467 | memset(p, 0, sizeof(*p)); | 479 | memset(p, 0, sizeof(*p)); |
468 | INIT_LIST_HEAD(&p->pages); | 480 | INIT_LIST_HEAD(&p->pages); |
481 | if (pagecount < NFS_PAGEVEC_SIZE) | ||
482 | p->pagevec = &p->page_array[0]; | ||
483 | else { | ||
484 | size_t size = ++pagecount * sizeof(struct page *); | ||
485 | p->pagevec = kmalloc(size, GFP_NOFS); | ||
486 | if (p->pagevec) { | ||
487 | memset(p->pagevec, 0, size); | ||
488 | } else { | ||
489 | mempool_free(p, nfs_wdata_mempool); | ||
490 | p = NULL; | ||
491 | } | ||
492 | } | ||
469 | } | 493 | } |
470 | return p; | 494 | return p; |
471 | } | 495 | } |
472 | 496 | ||
473 | static inline void nfs_writedata_free(struct nfs_write_data *p) | 497 | static inline void nfs_writedata_free(struct nfs_write_data *p) |
474 | { | 498 | { |
499 | if (p && (p->pagevec != &p->page_array[0])) | ||
500 | kfree(p->pagevec); | ||
475 | mempool_free(p, nfs_wdata_mempool); | 501 | mempool_free(p, nfs_wdata_mempool); |
476 | } | 502 | } |
477 | 503 | ||
@@ -481,28 +507,45 @@ static inline void nfs_writedata_free(struct nfs_write_data *p) | |||
481 | extern int nfs_readpage(struct file *, struct page *); | 507 | extern int nfs_readpage(struct file *, struct page *); |
482 | extern int nfs_readpages(struct file *, struct address_space *, | 508 | extern int nfs_readpages(struct file *, struct address_space *, |
483 | struct list_head *, unsigned); | 509 | struct list_head *, unsigned); |
484 | extern void nfs_readpage_result(struct rpc_task *); | 510 | extern void nfs_readpage_result(struct rpc_task *, void *); |
511 | extern void nfs_readdata_release(void *data); | ||
512 | |||
485 | 513 | ||
486 | /* | 514 | /* |
487 | * Allocate and free nfs_read_data structures | 515 | * Allocate and free nfs_read_data structures |
488 | */ | 516 | */ |
489 | extern mempool_t *nfs_rdata_mempool; | 517 | extern mempool_t *nfs_rdata_mempool; |
490 | 518 | ||
491 | static inline struct nfs_read_data *nfs_readdata_alloc(void) | 519 | static inline struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount) |
492 | { | 520 | { |
493 | struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, SLAB_NOFS); | 521 | struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, SLAB_NOFS); |
494 | if (p) | 522 | |
523 | if (p) { | ||
495 | memset(p, 0, sizeof(*p)); | 524 | memset(p, 0, sizeof(*p)); |
525 | INIT_LIST_HEAD(&p->pages); | ||
526 | if (pagecount < NFS_PAGEVEC_SIZE) | ||
527 | p->pagevec = &p->page_array[0]; | ||
528 | else { | ||
529 | size_t size = ++pagecount * sizeof(struct page *); | ||
530 | p->pagevec = kmalloc(size, GFP_NOFS); | ||
531 | if (p->pagevec) { | ||
532 | memset(p->pagevec, 0, size); | ||
533 | } else { | ||
534 | mempool_free(p, nfs_rdata_mempool); | ||
535 | p = NULL; | ||
536 | } | ||
537 | } | ||
538 | } | ||
496 | return p; | 539 | return p; |
497 | } | 540 | } |
498 | 541 | ||
499 | static inline void nfs_readdata_free(struct nfs_read_data *p) | 542 | static inline void nfs_readdata_free(struct nfs_read_data *p) |
500 | { | 543 | { |
544 | if (p && (p->pagevec != &p->page_array[0])) | ||
545 | kfree(p->pagevec); | ||
501 | mempool_free(p, nfs_rdata_mempool); | 546 | mempool_free(p, nfs_rdata_mempool); |
502 | } | 547 | } |
503 | 548 | ||
504 | extern void nfs_readdata_release(struct rpc_task *task); | ||
505 | |||
506 | /* | 549 | /* |
507 | * linux/fs/nfs3proc.c | 550 | * linux/fs/nfs3proc.c |
508 | */ | 551 | */ |
diff --git a/include/linux/nfs_idmap.h b/include/linux/nfs_idmap.h index a0f1f25e0ead..102e56094296 100644 --- a/include/linux/nfs_idmap.h +++ b/include/linux/nfs_idmap.h | |||
@@ -71,6 +71,8 @@ int nfs_map_name_to_uid(struct nfs4_client *, const char *, size_t, __u32 *); | |||
71 | int nfs_map_group_to_gid(struct nfs4_client *, const char *, size_t, __u32 *); | 71 | int nfs_map_group_to_gid(struct nfs4_client *, const char *, size_t, __u32 *); |
72 | int nfs_map_uid_to_name(struct nfs4_client *, __u32, char *); | 72 | int nfs_map_uid_to_name(struct nfs4_client *, __u32, char *); |
73 | int nfs_map_gid_to_group(struct nfs4_client *, __u32, char *); | 73 | int nfs_map_gid_to_group(struct nfs4_client *, __u32, char *); |
74 | |||
75 | extern unsigned int nfs_idmap_cache_timeout; | ||
74 | #endif /* __KERNEL__ */ | 76 | #endif /* __KERNEL__ */ |
75 | 77 | ||
76 | #endif /* NFS_IDMAP_H */ | 78 | #endif /* NFS_IDMAP_H */ |
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index da2e077b65e2..66e2ed658527 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
@@ -79,9 +79,7 @@ extern void nfs_clear_page_writeback(struct nfs_page *req); | |||
79 | static inline int | 79 | static inline int |
80 | nfs_lock_request_dontget(struct nfs_page *req) | 80 | nfs_lock_request_dontget(struct nfs_page *req) |
81 | { | 81 | { |
82 | if (test_and_set_bit(PG_BUSY, &req->wb_flags)) | 82 | return !test_and_set_bit(PG_BUSY, &req->wb_flags); |
83 | return 0; | ||
84 | return 1; | ||
85 | } | 83 | } |
86 | 84 | ||
87 | /* | 85 | /* |
@@ -125,9 +123,7 @@ nfs_list_remove_request(struct nfs_page *req) | |||
125 | static inline int | 123 | static inline int |
126 | nfs_defer_commit(struct nfs_page *req) | 124 | nfs_defer_commit(struct nfs_page *req) |
127 | { | 125 | { |
128 | if (test_and_set_bit(PG_NEED_COMMIT, &req->wb_flags)) | 126 | return !test_and_set_bit(PG_NEED_COMMIT, &req->wb_flags); |
129 | return 0; | ||
130 | return 1; | ||
131 | } | 127 | } |
132 | 128 | ||
133 | static inline void | 129 | static inline void |
@@ -141,9 +137,7 @@ nfs_clear_commit(struct nfs_page *req) | |||
141 | static inline int | 137 | static inline int |
142 | nfs_defer_reschedule(struct nfs_page *req) | 138 | nfs_defer_reschedule(struct nfs_page *req) |
143 | { | 139 | { |
144 | if (test_and_set_bit(PG_NEED_RESCHED, &req->wb_flags)) | 140 | return !test_and_set_bit(PG_NEED_RESCHED, &req->wb_flags); |
145 | return 0; | ||
146 | return 1; | ||
147 | } | 141 | } |
148 | 142 | ||
149 | static inline void | 143 | static inline void |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 40718669b9c8..6d6f69ec5675 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -4,6 +4,16 @@ | |||
4 | #include <linux/sunrpc/xprt.h> | 4 | #include <linux/sunrpc/xprt.h> |
5 | #include <linux/nfsacl.h> | 5 | #include <linux/nfsacl.h> |
6 | 6 | ||
7 | /* | ||
8 | * To change the maximum rsize and wsize supported by the NFS client, adjust | ||
9 | * NFS_MAX_FILE_IO_SIZE. 64KB is a typical maximum, but some servers can | ||
10 | * support a megabyte or more. The default is left at 4096 bytes, which is | ||
11 | * reasonable for NFS over UDP. | ||
12 | */ | ||
13 | #define NFS_MAX_FILE_IO_SIZE (1048576U) | ||
14 | #define NFS_DEF_FILE_IO_SIZE (4096U) | ||
15 | #define NFS_MIN_FILE_IO_SIZE (1024U) | ||
16 | |||
7 | struct nfs4_fsid { | 17 | struct nfs4_fsid { |
8 | __u64 major; | 18 | __u64 major; |
9 | __u64 minor; | 19 | __u64 minor; |
@@ -137,7 +147,7 @@ struct nfs_openres { | |||
137 | */ | 147 | */ |
138 | struct nfs_open_confirmargs { | 148 | struct nfs_open_confirmargs { |
139 | const struct nfs_fh * fh; | 149 | const struct nfs_fh * fh; |
140 | nfs4_stateid stateid; | 150 | nfs4_stateid * stateid; |
141 | struct nfs_seqid * seqid; | 151 | struct nfs_seqid * seqid; |
142 | }; | 152 | }; |
143 | 153 | ||
@@ -165,66 +175,62 @@ struct nfs_closeres { | |||
165 | * * Arguments to the lock,lockt, and locku call. | 175 | * * Arguments to the lock,lockt, and locku call. |
166 | * */ | 176 | * */ |
167 | struct nfs_lowner { | 177 | struct nfs_lowner { |
168 | __u64 clientid; | 178 | __u64 clientid; |
169 | u32 id; | 179 | u32 id; |
170 | }; | 180 | }; |
171 | 181 | ||
172 | struct nfs_lock_opargs { | 182 | struct nfs_lock_args { |
183 | struct nfs_fh * fh; | ||
184 | struct file_lock * fl; | ||
173 | struct nfs_seqid * lock_seqid; | 185 | struct nfs_seqid * lock_seqid; |
174 | nfs4_stateid * lock_stateid; | 186 | nfs4_stateid * lock_stateid; |
175 | struct nfs_seqid * open_seqid; | 187 | struct nfs_seqid * open_seqid; |
176 | nfs4_stateid * open_stateid; | 188 | nfs4_stateid * open_stateid; |
177 | struct nfs_lowner lock_owner; | 189 | struct nfs_lowner lock_owner; |
178 | __u32 reclaim; | 190 | unsigned char block : 1; |
179 | __u32 new_lock_owner; | 191 | unsigned char reclaim : 1; |
192 | unsigned char new_lock_owner : 1; | ||
180 | }; | 193 | }; |
181 | 194 | ||
182 | struct nfs_locku_opargs { | 195 | struct nfs_lock_res { |
196 | nfs4_stateid stateid; | ||
197 | }; | ||
198 | |||
199 | struct nfs_locku_args { | ||
200 | struct nfs_fh * fh; | ||
201 | struct file_lock * fl; | ||
183 | struct nfs_seqid * seqid; | 202 | struct nfs_seqid * seqid; |
184 | nfs4_stateid * stateid; | 203 | nfs4_stateid * stateid; |
185 | }; | 204 | }; |
186 | 205 | ||
187 | struct nfs_lockargs { | 206 | struct nfs_locku_res { |
188 | struct nfs_fh * fh; | 207 | nfs4_stateid stateid; |
189 | __u32 type; | ||
190 | __u64 offset; | ||
191 | __u64 length; | ||
192 | union { | ||
193 | struct nfs_lock_opargs *lock; /* LOCK */ | ||
194 | struct nfs_lowner *lockt; /* LOCKT */ | ||
195 | struct nfs_locku_opargs *locku; /* LOCKU */ | ||
196 | } u; | ||
197 | }; | 208 | }; |
198 | 209 | ||
199 | struct nfs_lock_denied { | 210 | struct nfs_lockt_args { |
200 | __u64 offset; | 211 | struct nfs_fh * fh; |
201 | __u64 length; | 212 | struct file_lock * fl; |
202 | __u32 type; | 213 | struct nfs_lowner lock_owner; |
203 | struct nfs_lowner owner; | ||
204 | }; | 214 | }; |
205 | 215 | ||
206 | struct nfs_lockres { | 216 | struct nfs_lockt_res { |
207 | union { | 217 | struct file_lock * denied; /* LOCK, LOCKT failed */ |
208 | nfs4_stateid stateid;/* LOCK success, LOCKU */ | ||
209 | struct nfs_lock_denied denied; /* LOCK failed, LOCKT success */ | ||
210 | } u; | ||
211 | const struct nfs_server * server; | ||
212 | }; | 218 | }; |
213 | 219 | ||
214 | struct nfs4_delegreturnargs { | 220 | struct nfs4_delegreturnargs { |
215 | const struct nfs_fh *fhandle; | 221 | const struct nfs_fh *fhandle; |
216 | const nfs4_stateid *stateid; | 222 | const nfs4_stateid *stateid; |
223 | const u32 * bitmask; | ||
224 | }; | ||
225 | |||
226 | struct nfs4_delegreturnres { | ||
227 | struct nfs_fattr * fattr; | ||
228 | const struct nfs_server *server; | ||
217 | }; | 229 | }; |
218 | 230 | ||
219 | /* | 231 | /* |
220 | * Arguments to the read call. | 232 | * Arguments to the read call. |
221 | */ | 233 | */ |
222 | |||
223 | #define NFS_READ_MAXIOV (9U) | ||
224 | #if (NFS_READ_MAXIOV > (MAX_IOVEC -2)) | ||
225 | #error "NFS_READ_MAXIOV is too large" | ||
226 | #endif | ||
227 | |||
228 | struct nfs_readargs { | 234 | struct nfs_readargs { |
229 | struct nfs_fh * fh; | 235 | struct nfs_fh * fh; |
230 | struct nfs_open_context *context; | 236 | struct nfs_open_context *context; |
@@ -243,11 +249,6 @@ struct nfs_readres { | |||
243 | /* | 249 | /* |
244 | * Arguments to the write call. | 250 | * Arguments to the write call. |
245 | */ | 251 | */ |
246 | #define NFS_WRITE_MAXIOV (9U) | ||
247 | #if (NFS_WRITE_MAXIOV > (MAX_IOVEC -2)) | ||
248 | #error "NFS_WRITE_MAXIOV is too large" | ||
249 | #endif | ||
250 | |||
251 | struct nfs_writeargs { | 252 | struct nfs_writeargs { |
252 | struct nfs_fh * fh; | 253 | struct nfs_fh * fh; |
253 | struct nfs_open_context *context; | 254 | struct nfs_open_context *context; |
@@ -678,6 +679,8 @@ struct nfs4_server_caps_res { | |||
678 | 679 | ||
679 | struct nfs_page; | 680 | struct nfs_page; |
680 | 681 | ||
682 | #define NFS_PAGEVEC_SIZE (8U) | ||
683 | |||
681 | struct nfs_read_data { | 684 | struct nfs_read_data { |
682 | int flags; | 685 | int flags; |
683 | struct rpc_task task; | 686 | struct rpc_task task; |
@@ -686,13 +689,14 @@ struct nfs_read_data { | |||
686 | struct nfs_fattr fattr; /* fattr storage */ | 689 | struct nfs_fattr fattr; /* fattr storage */ |
687 | struct list_head pages; /* Coalesced read requests */ | 690 | struct list_head pages; /* Coalesced read requests */ |
688 | struct nfs_page *req; /* multi ops per nfs_page */ | 691 | struct nfs_page *req; /* multi ops per nfs_page */ |
689 | struct page *pagevec[NFS_READ_MAXIOV]; | 692 | struct page **pagevec; |
690 | struct nfs_readargs args; | 693 | struct nfs_readargs args; |
691 | struct nfs_readres res; | 694 | struct nfs_readres res; |
692 | #ifdef CONFIG_NFS_V4 | 695 | #ifdef CONFIG_NFS_V4 |
693 | unsigned long timestamp; /* For lease renewal */ | 696 | unsigned long timestamp; /* For lease renewal */ |
694 | #endif | 697 | #endif |
695 | void (*complete) (struct nfs_read_data *, int); | 698 | void (*complete) (struct nfs_read_data *, int); |
699 | struct page *page_array[NFS_PAGEVEC_SIZE + 1]; | ||
696 | }; | 700 | }; |
697 | 701 | ||
698 | struct nfs_write_data { | 702 | struct nfs_write_data { |
@@ -704,13 +708,14 @@ struct nfs_write_data { | |||
704 | struct nfs_writeverf verf; | 708 | struct nfs_writeverf verf; |
705 | struct list_head pages; /* Coalesced requests we wish to flush */ | 709 | struct list_head pages; /* Coalesced requests we wish to flush */ |
706 | struct nfs_page *req; /* multi ops per nfs_page */ | 710 | struct nfs_page *req; /* multi ops per nfs_page */ |
707 | struct page *pagevec[NFS_WRITE_MAXIOV]; | 711 | struct page **pagevec; |
708 | struct nfs_writeargs args; /* argument struct */ | 712 | struct nfs_writeargs args; /* argument struct */ |
709 | struct nfs_writeres res; /* result struct */ | 713 | struct nfs_writeres res; /* result struct */ |
710 | #ifdef CONFIG_NFS_V4 | 714 | #ifdef CONFIG_NFS_V4 |
711 | unsigned long timestamp; /* For lease renewal */ | 715 | unsigned long timestamp; /* For lease renewal */ |
712 | #endif | 716 | #endif |
713 | void (*complete) (struct nfs_write_data *, int); | 717 | void (*complete) (struct nfs_write_data *, int); |
718 | struct page *page_array[NFS_PAGEVEC_SIZE + 1]; | ||
714 | }; | 719 | }; |
715 | 720 | ||
716 | struct nfs_access_entry; | 721 | struct nfs_access_entry; |
diff --git a/include/linux/nfsd/xdr.h b/include/linux/nfsd/xdr.h index 130d4f588a37..3f4f7142bbe3 100644 --- a/include/linux/nfsd/xdr.h +++ b/include/linux/nfsd/xdr.h | |||
@@ -88,10 +88,12 @@ struct nfsd_readdirargs { | |||
88 | 88 | ||
89 | struct nfsd_attrstat { | 89 | struct nfsd_attrstat { |
90 | struct svc_fh fh; | 90 | struct svc_fh fh; |
91 | struct kstat stat; | ||
91 | }; | 92 | }; |
92 | 93 | ||
93 | struct nfsd_diropres { | 94 | struct nfsd_diropres { |
94 | struct svc_fh fh; | 95 | struct svc_fh fh; |
96 | struct kstat stat; | ||
95 | }; | 97 | }; |
96 | 98 | ||
97 | struct nfsd_readlinkres { | 99 | struct nfsd_readlinkres { |
@@ -101,6 +103,7 @@ struct nfsd_readlinkres { | |||
101 | struct nfsd_readres { | 103 | struct nfsd_readres { |
102 | struct svc_fh fh; | 104 | struct svc_fh fh; |
103 | unsigned long count; | 105 | unsigned long count; |
106 | struct kstat stat; | ||
104 | }; | 107 | }; |
105 | 108 | ||
106 | struct nfsd_readdirres { | 109 | struct nfsd_readdirres { |
diff --git a/include/linux/nfsd/xdr3.h b/include/linux/nfsd/xdr3.h index 3c2a71b43bac..a4322741f8b9 100644 --- a/include/linux/nfsd/xdr3.h +++ b/include/linux/nfsd/xdr3.h | |||
@@ -126,6 +126,7 @@ struct nfsd3_setaclargs { | |||
126 | struct nfsd3_attrstat { | 126 | struct nfsd3_attrstat { |
127 | __u32 status; | 127 | __u32 status; |
128 | struct svc_fh fh; | 128 | struct svc_fh fh; |
129 | struct kstat stat; | ||
129 | }; | 130 | }; |
130 | 131 | ||
131 | /* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */ | 132 | /* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */ |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 343083fec258..d52999c43336 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -79,13 +79,23 @@ | |||
79 | /* | 79 | /* |
80 | * Global page accounting. One instance per CPU. Only unsigned longs are | 80 | * Global page accounting. One instance per CPU. Only unsigned longs are |
81 | * allowed. | 81 | * allowed. |
82 | * | ||
83 | * - Fields can be modified with xxx_page_state and xxx_page_state_zone at | ||
84 | * any time safely (which protects the instance from modification by | ||
85 | * interrupt. | ||
86 | * - The __xxx_page_state variants can be used safely when interrupts are | ||
87 | * disabled. | ||
88 | * - The __xxx_page_state variants can be used if the field is only | ||
89 | * modified from process context, or only modified from interrupt context. | ||
90 | * In this case, the field should be commented here. | ||
82 | */ | 91 | */ |
83 | struct page_state { | 92 | struct page_state { |
84 | unsigned long nr_dirty; /* Dirty writeable pages */ | 93 | unsigned long nr_dirty; /* Dirty writeable pages */ |
85 | unsigned long nr_writeback; /* Pages under writeback */ | 94 | unsigned long nr_writeback; /* Pages under writeback */ |
86 | unsigned long nr_unstable; /* NFS unstable pages */ | 95 | unsigned long nr_unstable; /* NFS unstable pages */ |
87 | unsigned long nr_page_table_pages;/* Pages used for pagetables */ | 96 | unsigned long nr_page_table_pages;/* Pages used for pagetables */ |
88 | unsigned long nr_mapped; /* mapped into pagetables */ | 97 | unsigned long nr_mapped; /* mapped into pagetables. |
98 | * only modified from process context */ | ||
89 | unsigned long nr_slab; /* In slab */ | 99 | unsigned long nr_slab; /* In slab */ |
90 | #define GET_PAGE_STATE_LAST nr_slab | 100 | #define GET_PAGE_STATE_LAST nr_slab |
91 | 101 | ||
@@ -97,32 +107,40 @@ struct page_state { | |||
97 | unsigned long pgpgout; /* Disk writes */ | 107 | unsigned long pgpgout; /* Disk writes */ |
98 | unsigned long pswpin; /* swap reads */ | 108 | unsigned long pswpin; /* swap reads */ |
99 | unsigned long pswpout; /* swap writes */ | 109 | unsigned long pswpout; /* swap writes */ |
100 | unsigned long pgalloc_high; /* page allocations */ | ||
101 | 110 | ||
111 | unsigned long pgalloc_high; /* page allocations */ | ||
102 | unsigned long pgalloc_normal; | 112 | unsigned long pgalloc_normal; |
113 | unsigned long pgalloc_dma32; | ||
103 | unsigned long pgalloc_dma; | 114 | unsigned long pgalloc_dma; |
115 | |||
104 | unsigned long pgfree; /* page freeings */ | 116 | unsigned long pgfree; /* page freeings */ |
105 | unsigned long pgactivate; /* pages moved inactive->active */ | 117 | unsigned long pgactivate; /* pages moved inactive->active */ |
106 | unsigned long pgdeactivate; /* pages moved active->inactive */ | 118 | unsigned long pgdeactivate; /* pages moved active->inactive */ |
107 | 119 | ||
108 | unsigned long pgfault; /* faults (major+minor) */ | 120 | unsigned long pgfault; /* faults (major+minor) */ |
109 | unsigned long pgmajfault; /* faults (major only) */ | 121 | unsigned long pgmajfault; /* faults (major only) */ |
122 | |||
110 | unsigned long pgrefill_high; /* inspected in refill_inactive_zone */ | 123 | unsigned long pgrefill_high; /* inspected in refill_inactive_zone */ |
111 | unsigned long pgrefill_normal; | 124 | unsigned long pgrefill_normal; |
125 | unsigned long pgrefill_dma32; | ||
112 | unsigned long pgrefill_dma; | 126 | unsigned long pgrefill_dma; |
113 | 127 | ||
114 | unsigned long pgsteal_high; /* total highmem pages reclaimed */ | 128 | unsigned long pgsteal_high; /* total highmem pages reclaimed */ |
115 | unsigned long pgsteal_normal; | 129 | unsigned long pgsteal_normal; |
130 | unsigned long pgsteal_dma32; | ||
116 | unsigned long pgsteal_dma; | 131 | unsigned long pgsteal_dma; |
132 | |||
117 | unsigned long pgscan_kswapd_high;/* total highmem pages scanned */ | 133 | unsigned long pgscan_kswapd_high;/* total highmem pages scanned */ |
118 | unsigned long pgscan_kswapd_normal; | 134 | unsigned long pgscan_kswapd_normal; |
119 | 135 | unsigned long pgscan_kswapd_dma32; | |
120 | unsigned long pgscan_kswapd_dma; | 136 | unsigned long pgscan_kswapd_dma; |
137 | |||
121 | unsigned long pgscan_direct_high;/* total highmem pages scanned */ | 138 | unsigned long pgscan_direct_high;/* total highmem pages scanned */ |
122 | unsigned long pgscan_direct_normal; | 139 | unsigned long pgscan_direct_normal; |
140 | unsigned long pgscan_direct_dma32; | ||
123 | unsigned long pgscan_direct_dma; | 141 | unsigned long pgscan_direct_dma; |
124 | unsigned long pginodesteal; /* pages reclaimed via inode freeing */ | ||
125 | 142 | ||
143 | unsigned long pginodesteal; /* pages reclaimed via inode freeing */ | ||
126 | unsigned long slabs_scanned; /* slab objects scanned */ | 144 | unsigned long slabs_scanned; /* slab objects scanned */ |
127 | unsigned long kswapd_steal; /* pages reclaimed by kswapd */ | 145 | unsigned long kswapd_steal; /* pages reclaimed by kswapd */ |
128 | unsigned long kswapd_inodesteal;/* reclaimed via kswapd inode freeing */ | 146 | unsigned long kswapd_inodesteal;/* reclaimed via kswapd inode freeing */ |
@@ -136,31 +154,54 @@ struct page_state { | |||
136 | extern void get_page_state(struct page_state *ret); | 154 | extern void get_page_state(struct page_state *ret); |
137 | extern void get_page_state_node(struct page_state *ret, int node); | 155 | extern void get_page_state_node(struct page_state *ret, int node); |
138 | extern void get_full_page_state(struct page_state *ret); | 156 | extern void get_full_page_state(struct page_state *ret); |
139 | extern unsigned long __read_page_state(unsigned long offset); | 157 | extern unsigned long read_page_state_offset(unsigned long offset); |
140 | extern void __mod_page_state(unsigned long offset, unsigned long delta); | 158 | extern void mod_page_state_offset(unsigned long offset, unsigned long delta); |
159 | extern void __mod_page_state_offset(unsigned long offset, unsigned long delta); | ||
141 | 160 | ||
142 | #define read_page_state(member) \ | 161 | #define read_page_state(member) \ |
143 | __read_page_state(offsetof(struct page_state, member)) | 162 | read_page_state_offset(offsetof(struct page_state, member)) |
144 | 163 | ||
145 | #define mod_page_state(member, delta) \ | 164 | #define mod_page_state(member, delta) \ |
146 | __mod_page_state(offsetof(struct page_state, member), (delta)) | 165 | mod_page_state_offset(offsetof(struct page_state, member), (delta)) |
147 | 166 | ||
148 | #define inc_page_state(member) mod_page_state(member, 1UL) | 167 | #define __mod_page_state(member, delta) \ |
149 | #define dec_page_state(member) mod_page_state(member, 0UL - 1) | 168 | __mod_page_state_offset(offsetof(struct page_state, member), (delta)) |
150 | #define add_page_state(member,delta) mod_page_state(member, (delta)) | 169 | |
151 | #define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta)) | 170 | #define inc_page_state(member) mod_page_state(member, 1UL) |
152 | 171 | #define dec_page_state(member) mod_page_state(member, 0UL - 1) | |
153 | #define mod_page_state_zone(zone, member, delta) \ | 172 | #define add_page_state(member,delta) mod_page_state(member, (delta)) |
154 | do { \ | 173 | #define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta)) |
155 | unsigned offset; \ | 174 | |
156 | if (is_highmem(zone)) \ | 175 | #define __inc_page_state(member) __mod_page_state(member, 1UL) |
157 | offset = offsetof(struct page_state, member##_high); \ | 176 | #define __dec_page_state(member) __mod_page_state(member, 0UL - 1) |
158 | else if (is_normal(zone)) \ | 177 | #define __add_page_state(member,delta) __mod_page_state(member, (delta)) |
159 | offset = offsetof(struct page_state, member##_normal); \ | 178 | #define __sub_page_state(member,delta) __mod_page_state(member, 0UL - (delta)) |
160 | else \ | 179 | |
161 | offset = offsetof(struct page_state, member##_dma); \ | 180 | #define page_state(member) (*__page_state(offsetof(struct page_state, member))) |
162 | __mod_page_state(offset, (delta)); \ | 181 | |
163 | } while (0) | 182 | #define state_zone_offset(zone, member) \ |
183 | ({ \ | ||
184 | unsigned offset; \ | ||
185 | if (is_highmem(zone)) \ | ||
186 | offset = offsetof(struct page_state, member##_high); \ | ||
187 | else if (is_normal(zone)) \ | ||
188 | offset = offsetof(struct page_state, member##_normal); \ | ||
189 | else if (is_dma32(zone)) \ | ||
190 | offset = offsetof(struct page_state, member##_dma32); \ | ||
191 | else \ | ||
192 | offset = offsetof(struct page_state, member##_dma); \ | ||
193 | offset; \ | ||
194 | }) | ||
195 | |||
196 | #define __mod_page_state_zone(zone, member, delta) \ | ||
197 | do { \ | ||
198 | __mod_page_state_offset(state_zone_offset(zone, member), (delta)); \ | ||
199 | } while (0) | ||
200 | |||
201 | #define mod_page_state_zone(zone, member, delta) \ | ||
202 | do { \ | ||
203 | mod_page_state_offset(state_zone_offset(zone, member), (delta)); \ | ||
204 | } while (0) | ||
164 | 205 | ||
165 | /* | 206 | /* |
166 | * Manipulation of page state flags | 207 | * Manipulation of page state flags |
diff --git a/include/linux/parport.h b/include/linux/parport.h index d2a4d9e1e6d1..f7ff0b0c4031 100644 --- a/include/linux/parport.h +++ b/include/linux/parport.h | |||
@@ -242,7 +242,6 @@ enum ieee1284_phase { | |||
242 | IEEE1284_PH_FWD_IDLE, | 242 | IEEE1284_PH_FWD_IDLE, |
243 | IEEE1284_PH_TERMINATE, | 243 | IEEE1284_PH_TERMINATE, |
244 | IEEE1284_PH_NEGOTIATION, | 244 | IEEE1284_PH_NEGOTIATION, |
245 | IEEE1284_PH_HBUSY_DNA, | ||
246 | IEEE1284_PH_REV_IDLE, | 245 | IEEE1284_PH_REV_IDLE, |
247 | IEEE1284_PH_HBUSY_DAVAIL, | 246 | IEEE1284_PH_HBUSY_DAVAIL, |
248 | IEEE1284_PH_REV_DATA, | 247 | IEEE1284_PH_REV_DATA, |
diff --git a/include/linux/parport_pc.h b/include/linux/parport_pc.h index c6f762470879..1cc0f6b1a49a 100644 --- a/include/linux/parport_pc.h +++ b/include/linux/parport_pc.h | |||
@@ -79,13 +79,13 @@ static __inline__ unsigned char parport_pc_read_data(struct parport *p) | |||
79 | } | 79 | } |
80 | 80 | ||
81 | #ifdef DEBUG_PARPORT | 81 | #ifdef DEBUG_PARPORT |
82 | extern __inline__ void dump_parport_state (char *str, struct parport *p) | 82 | static inline void dump_parport_state (char *str, struct parport *p) |
83 | { | 83 | { |
84 | /* here's hoping that reading these ports won't side-effect anything underneath */ | 84 | /* here's hoping that reading these ports won't side-effect anything underneath */ |
85 | unsigned char ecr = inb (ECONTROL (p)); | 85 | unsigned char ecr = inb (ECONTROL (p)); |
86 | unsigned char dcr = inb (CONTROL (p)); | 86 | unsigned char dcr = inb (CONTROL (p)); |
87 | unsigned char dsr = inb (STATUS (p)); | 87 | unsigned char dsr = inb (STATUS (p)); |
88 | static char *ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"}; | 88 | static const char *const ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"}; |
89 | const struct parport_pc_private *priv = p->physport->private_data; | 89 | const struct parport_pc_private *priv = p->physport->private_data; |
90 | int i; | 90 | int i; |
91 | 91 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 4f01710485cd..24db7248301a 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -394,6 +394,13 @@ | |||
394 | #define PCI_DEVICE_ID_NS_87410 0xd001 | 394 | #define PCI_DEVICE_ID_NS_87410 0xd001 |
395 | #define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d | 395 | #define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d |
396 | 396 | ||
397 | #define PCI_DEVICE_ID_NS_CS5535_HOST_BRIDGE 0x0028 | ||
398 | #define PCI_DEVICE_ID_NS_CS5535_ISA_BRIDGE 0x002b | ||
399 | #define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d | ||
400 | #define PCI_DEVICE_ID_NS_CS5535_AUDIO 0x002e | ||
401 | #define PCI_DEVICE_ID_NS_CS5535_USB 0x002f | ||
402 | #define PCI_DEVICE_ID_NS_CS5535_VIDEO 0x0030 | ||
403 | |||
397 | #define PCI_VENDOR_ID_TSENG 0x100c | 404 | #define PCI_VENDOR_ID_TSENG 0x100c |
398 | #define PCI_DEVICE_ID_TSENG_W32P_2 0x3202 | 405 | #define PCI_DEVICE_ID_TSENG_W32P_2 0x3202 |
399 | #define PCI_DEVICE_ID_TSENG_W32P_b 0x3205 | 406 | #define PCI_DEVICE_ID_TSENG_W32P_b 0x3205 |
@@ -496,6 +503,9 @@ | |||
496 | 503 | ||
497 | #define PCI_DEVICE_ID_AMD_CS5536_IDE 0x209A | 504 | #define PCI_DEVICE_ID_AMD_CS5536_IDE 0x209A |
498 | 505 | ||
506 | #define PCI_DEVICE_ID_AMD_LX_VIDEO 0x2081 | ||
507 | #define PCI_DEVICE_ID_AMD_LX_AES 0x2082 | ||
508 | |||
499 | #define PCI_VENDOR_ID_TRIDENT 0x1023 | 509 | #define PCI_VENDOR_ID_TRIDENT 0x1023 |
500 | #define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000 | 510 | #define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000 |
501 | #define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001 | 511 | #define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001 |
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index 13e7c4b62367..b6e0bcad84e1 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h | |||
@@ -71,8 +71,8 @@ | |||
71 | */ | 71 | */ |
72 | #define MD_PATCHLEVEL_VERSION 3 | 72 | #define MD_PATCHLEVEL_VERSION 3 |
73 | 73 | ||
74 | extern int register_md_personality (int p_num, mdk_personality_t *p); | 74 | extern int register_md_personality (struct mdk_personality *p); |
75 | extern int unregister_md_personality (int p_num); | 75 | extern int unregister_md_personality (struct mdk_personality *p); |
76 | extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), | 76 | extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), |
77 | mddev_t *mddev, const char *name); | 77 | mddev_t *mddev, const char *name); |
78 | extern void md_unregister_thread (mdk_thread_t *thread); | 78 | extern void md_unregister_thread (mdk_thread_t *thread); |
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index 46629a275ba9..617b9506c760 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h | |||
@@ -18,62 +18,19 @@ | |||
18 | /* and dm-bio-list.h is not under include/linux because.... ??? */ | 18 | /* and dm-bio-list.h is not under include/linux because.... ??? */ |
19 | #include "../../../drivers/md/dm-bio-list.h" | 19 | #include "../../../drivers/md/dm-bio-list.h" |
20 | 20 | ||
21 | #define MD_RESERVED 0UL | ||
22 | #define LINEAR 1UL | ||
23 | #define RAID0 2UL | ||
24 | #define RAID1 3UL | ||
25 | #define RAID5 4UL | ||
26 | #define TRANSLUCENT 5UL | ||
27 | #define HSM 6UL | ||
28 | #define MULTIPATH 7UL | ||
29 | #define RAID6 8UL | ||
30 | #define RAID10 9UL | ||
31 | #define FAULTY 10UL | ||
32 | #define MAX_PERSONALITY 11UL | ||
33 | |||
34 | #define LEVEL_MULTIPATH (-4) | 21 | #define LEVEL_MULTIPATH (-4) |
35 | #define LEVEL_LINEAR (-1) | 22 | #define LEVEL_LINEAR (-1) |
36 | #define LEVEL_FAULTY (-5) | 23 | #define LEVEL_FAULTY (-5) |
37 | 24 | ||
25 | /* we need a value for 'no level specified' and 0 | ||
26 | * means 'raid0', so we need something else. This is | ||
27 | * for internal use only | ||
28 | */ | ||
29 | #define LEVEL_NONE (-1000000) | ||
30 | |||
38 | #define MaxSector (~(sector_t)0) | 31 | #define MaxSector (~(sector_t)0) |
39 | #define MD_THREAD_NAME_MAX 14 | 32 | #define MD_THREAD_NAME_MAX 14 |
40 | 33 | ||
41 | static inline int pers_to_level (int pers) | ||
42 | { | ||
43 | switch (pers) { | ||
44 | case FAULTY: return LEVEL_FAULTY; | ||
45 | case MULTIPATH: return LEVEL_MULTIPATH; | ||
46 | case HSM: return -3; | ||
47 | case TRANSLUCENT: return -2; | ||
48 | case LINEAR: return LEVEL_LINEAR; | ||
49 | case RAID0: return 0; | ||
50 | case RAID1: return 1; | ||
51 | case RAID5: return 5; | ||
52 | case RAID6: return 6; | ||
53 | case RAID10: return 10; | ||
54 | } | ||
55 | BUG(); | ||
56 | return MD_RESERVED; | ||
57 | } | ||
58 | |||
59 | static inline int level_to_pers (int level) | ||
60 | { | ||
61 | switch (level) { | ||
62 | case LEVEL_FAULTY: return FAULTY; | ||
63 | case LEVEL_MULTIPATH: return MULTIPATH; | ||
64 | case -3: return HSM; | ||
65 | case -2: return TRANSLUCENT; | ||
66 | case LEVEL_LINEAR: return LINEAR; | ||
67 | case 0: return RAID0; | ||
68 | case 1: return RAID1; | ||
69 | case 4: | ||
70 | case 5: return RAID5; | ||
71 | case 6: return RAID6; | ||
72 | case 10: return RAID10; | ||
73 | } | ||
74 | return MD_RESERVED; | ||
75 | } | ||
76 | |||
77 | typedef struct mddev_s mddev_t; | 34 | typedef struct mddev_s mddev_t; |
78 | typedef struct mdk_rdev_s mdk_rdev_t; | 35 | typedef struct mdk_rdev_s mdk_rdev_t; |
79 | 36 | ||
@@ -138,14 +95,16 @@ struct mdk_rdev_s | |||
138 | atomic_t read_errors; /* number of consecutive read errors that | 95 | atomic_t read_errors; /* number of consecutive read errors that |
139 | * we have tried to ignore. | 96 | * we have tried to ignore. |
140 | */ | 97 | */ |
98 | atomic_t corrected_errors; /* number of corrected read errors, | ||
99 | * for reporting to userspace and storing | ||
100 | * in superblock. | ||
101 | */ | ||
141 | }; | 102 | }; |
142 | 103 | ||
143 | typedef struct mdk_personality_s mdk_personality_t; | ||
144 | |||
145 | struct mddev_s | 104 | struct mddev_s |
146 | { | 105 | { |
147 | void *private; | 106 | void *private; |
148 | mdk_personality_t *pers; | 107 | struct mdk_personality *pers; |
149 | dev_t unit; | 108 | dev_t unit; |
150 | int md_minor; | 109 | int md_minor; |
151 | struct list_head disks; | 110 | struct list_head disks; |
@@ -164,6 +123,7 @@ struct mddev_s | |||
164 | int chunk_size; | 123 | int chunk_size; |
165 | time_t ctime, utime; | 124 | time_t ctime, utime; |
166 | int level, layout; | 125 | int level, layout; |
126 | char clevel[16]; | ||
167 | int raid_disks; | 127 | int raid_disks; |
168 | int max_disks; | 128 | int max_disks; |
169 | sector_t size; /* used size of component devices */ | 129 | sector_t size; /* used size of component devices */ |
@@ -183,6 +143,11 @@ struct mddev_s | |||
183 | sector_t resync_mismatches; /* count of sectors where | 143 | sector_t resync_mismatches; /* count of sectors where |
184 | * parity/replica mismatch found | 144 | * parity/replica mismatch found |
185 | */ | 145 | */ |
146 | /* if zero, use the system-wide default */ | ||
147 | int sync_speed_min; | ||
148 | int sync_speed_max; | ||
149 | |||
150 | int ok_start_degraded; | ||
186 | /* recovery/resync flags | 151 | /* recovery/resync flags |
187 | * NEEDED: we might need to start a resync/recover | 152 | * NEEDED: we might need to start a resync/recover |
188 | * RUNNING: a thread is running, or about to be started | 153 | * RUNNING: a thread is running, or about to be started |
@@ -265,9 +230,11 @@ static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sect | |||
265 | atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io); | 230 | atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io); |
266 | } | 231 | } |
267 | 232 | ||
268 | struct mdk_personality_s | 233 | struct mdk_personality |
269 | { | 234 | { |
270 | char *name; | 235 | char *name; |
236 | int level; | ||
237 | struct list_head list; | ||
271 | struct module *owner; | 238 | struct module *owner; |
272 | int (*make_request)(request_queue_t *q, struct bio *bio); | 239 | int (*make_request)(request_queue_t *q, struct bio *bio); |
273 | int (*run)(mddev_t *mddev); | 240 | int (*run)(mddev_t *mddev); |
@@ -305,8 +272,6 @@ static inline char * mdname (mddev_t * mddev) | |||
305 | return mddev->gendisk ? mddev->gendisk->disk_name : "mdX"; | 272 | return mddev->gendisk ? mddev->gendisk->disk_name : "mdX"; |
306 | } | 273 | } |
307 | 274 | ||
308 | extern mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr); | ||
309 | |||
310 | /* | 275 | /* |
311 | * iterates through some rdev ringlist. It's safe to remove the | 276 | * iterates through some rdev ringlist. It's safe to remove the |
312 | * current 'rdev'. Dont touch 'tmp' though. | 277 | * current 'rdev'. Dont touch 'tmp' though. |
@@ -366,5 +331,10 @@ do { \ | |||
366 | __wait_event_lock_irq(wq, condition, lock, cmd); \ | 331 | __wait_event_lock_irq(wq, condition, lock, cmd); \ |
367 | } while (0) | 332 | } while (0) |
368 | 333 | ||
334 | static inline void safe_put_page(struct page *p) | ||
335 | { | ||
336 | if (p) put_page(p); | ||
337 | } | ||
338 | |||
369 | #endif | 339 | #endif |
370 | 340 | ||
diff --git a/include/linux/raid/raid1.h b/include/linux/raid/raid1.h index 292b98f2b408..9d5494aaac0f 100644 --- a/include/linux/raid/raid1.h +++ b/include/linux/raid/raid1.h | |||
@@ -45,6 +45,8 @@ struct r1_private_data_s { | |||
45 | 45 | ||
46 | spinlock_t resync_lock; | 46 | spinlock_t resync_lock; |
47 | int nr_pending; | 47 | int nr_pending; |
48 | int nr_waiting; | ||
49 | int nr_queued; | ||
48 | int barrier; | 50 | int barrier; |
49 | sector_t next_resync; | 51 | sector_t next_resync; |
50 | int fullsync; /* set to 1 if a full sync is needed, | 52 | int fullsync; /* set to 1 if a full sync is needed, |
@@ -52,11 +54,12 @@ struct r1_private_data_s { | |||
52 | * Cleared when a sync completes. | 54 | * Cleared when a sync completes. |
53 | */ | 55 | */ |
54 | 56 | ||
55 | wait_queue_head_t wait_idle; | 57 | wait_queue_head_t wait_barrier; |
56 | wait_queue_head_t wait_resume; | ||
57 | 58 | ||
58 | struct pool_info *poolinfo; | 59 | struct pool_info *poolinfo; |
59 | 60 | ||
61 | struct page *tmppage; | ||
62 | |||
60 | mempool_t *r1bio_pool; | 63 | mempool_t *r1bio_pool; |
61 | mempool_t *r1buf_pool; | 64 | mempool_t *r1buf_pool; |
62 | }; | 65 | }; |
@@ -106,6 +109,13 @@ struct r1bio_s { | |||
106 | /* DO NOT PUT ANY NEW FIELDS HERE - bios array is contiguously alloced*/ | 109 | /* DO NOT PUT ANY NEW FIELDS HERE - bios array is contiguously alloced*/ |
107 | }; | 110 | }; |
108 | 111 | ||
112 | /* when we get a read error on a read-only array, we redirect to another | ||
113 | * device without failing the first device, or trying to over-write to | ||
114 | * correct the read error. To keep track of bad blocks on a per-bio | ||
115 | * level, we store IO_BLOCKED in the appropriate 'bios' pointer | ||
116 | */ | ||
117 | #define IO_BLOCKED ((struct bio*)1) | ||
118 | |||
109 | /* bits for r1bio.state */ | 119 | /* bits for r1bio.state */ |
110 | #define R1BIO_Uptodate 0 | 120 | #define R1BIO_Uptodate 0 |
111 | #define R1BIO_IsSync 1 | 121 | #define R1BIO_IsSync 1 |
diff --git a/include/linux/raid/raid10.h b/include/linux/raid/raid10.h index 60708789c8f9..b1103298a8c2 100644 --- a/include/linux/raid/raid10.h +++ b/include/linux/raid/raid10.h | |||
@@ -35,18 +35,26 @@ struct r10_private_data_s { | |||
35 | sector_t chunk_mask; | 35 | sector_t chunk_mask; |
36 | 36 | ||
37 | struct list_head retry_list; | 37 | struct list_head retry_list; |
38 | /* for use when syncing mirrors: */ | 38 | /* queue pending writes and submit them on unplug */ |
39 | struct bio_list pending_bio_list; | ||
40 | |||
39 | 41 | ||
40 | spinlock_t resync_lock; | 42 | spinlock_t resync_lock; |
41 | int nr_pending; | 43 | int nr_pending; |
44 | int nr_waiting; | ||
45 | int nr_queued; | ||
42 | int barrier; | 46 | int barrier; |
43 | sector_t next_resync; | 47 | sector_t next_resync; |
48 | int fullsync; /* set to 1 if a full sync is needed, | ||
49 | * (fresh device added). | ||
50 | * Cleared when a sync completes. | ||
51 | */ | ||
44 | 52 | ||
45 | wait_queue_head_t wait_idle; | 53 | wait_queue_head_t wait_barrier; |
46 | wait_queue_head_t wait_resume; | ||
47 | 54 | ||
48 | mempool_t *r10bio_pool; | 55 | mempool_t *r10bio_pool; |
49 | mempool_t *r10buf_pool; | 56 | mempool_t *r10buf_pool; |
57 | struct page *tmppage; | ||
50 | }; | 58 | }; |
51 | 59 | ||
52 | typedef struct r10_private_data_s conf_t; | 60 | typedef struct r10_private_data_s conf_t; |
@@ -96,8 +104,16 @@ struct r10bio_s { | |||
96 | } devs[0]; | 104 | } devs[0]; |
97 | }; | 105 | }; |
98 | 106 | ||
107 | /* when we get a read error on a read-only array, we redirect to another | ||
108 | * device without failing the first device, or trying to over-write to | ||
109 | * correct the read error. To keep track of bad blocks on a per-bio | ||
110 | * level, we store IO_BLOCKED in the appropriate 'bios' pointer | ||
111 | */ | ||
112 | #define IO_BLOCKED ((struct bio*)1) | ||
113 | |||
99 | /* bits for r10bio.state */ | 114 | /* bits for r10bio.state */ |
100 | #define R10BIO_Uptodate 0 | 115 | #define R10BIO_Uptodate 0 |
101 | #define R10BIO_IsSync 1 | 116 | #define R10BIO_IsSync 1 |
102 | #define R10BIO_IsRecover 2 | 117 | #define R10BIO_IsRecover 2 |
118 | #define R10BIO_Degraded 3 | ||
103 | #endif | 119 | #endif |
diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h index f025ba6fb14c..394da8207b34 100644 --- a/include/linux/raid/raid5.h +++ b/include/linux/raid/raid5.h | |||
@@ -126,7 +126,7 @@ | |||
126 | */ | 126 | */ |
127 | 127 | ||
128 | struct stripe_head { | 128 | struct stripe_head { |
129 | struct stripe_head *hash_next, **hash_pprev; /* hash pointers */ | 129 | struct hlist_node hash; |
130 | struct list_head lru; /* inactive_list or handle_list */ | 130 | struct list_head lru; /* inactive_list or handle_list */ |
131 | struct raid5_private_data *raid_conf; | 131 | struct raid5_private_data *raid_conf; |
132 | sector_t sector; /* sector of this row */ | 132 | sector_t sector; /* sector of this row */ |
@@ -152,7 +152,6 @@ struct stripe_head { | |||
152 | #define R5_Insync 3 /* rdev && rdev->in_sync at start */ | 152 | #define R5_Insync 3 /* rdev && rdev->in_sync at start */ |
153 | #define R5_Wantread 4 /* want to schedule a read */ | 153 | #define R5_Wantread 4 /* want to schedule a read */ |
154 | #define R5_Wantwrite 5 | 154 | #define R5_Wantwrite 5 |
155 | #define R5_Syncio 6 /* this io need to be accounted as resync io */ | ||
156 | #define R5_Overlap 7 /* There is a pending overlapping request on this block */ | 155 | #define R5_Overlap 7 /* There is a pending overlapping request on this block */ |
157 | #define R5_ReadError 8 /* seen a read error here recently */ | 156 | #define R5_ReadError 8 /* seen a read error here recently */ |
158 | #define R5_ReWrite 9 /* have tried to over-write the readerror */ | 157 | #define R5_ReWrite 9 /* have tried to over-write the readerror */ |
@@ -205,7 +204,7 @@ struct disk_info { | |||
205 | }; | 204 | }; |
206 | 205 | ||
207 | struct raid5_private_data { | 206 | struct raid5_private_data { |
208 | struct stripe_head **stripe_hashtbl; | 207 | struct hlist_head *stripe_hashtbl; |
209 | mddev_t *mddev; | 208 | mddev_t *mddev; |
210 | struct disk_info *spare; | 209 | struct disk_info *spare; |
211 | int chunk_size, level, algorithm; | 210 | int chunk_size, level, algorithm; |
@@ -228,6 +227,8 @@ struct raid5_private_data { | |||
228 | * Cleared when a sync completes. | 227 | * Cleared when a sync completes. |
229 | */ | 228 | */ |
230 | 229 | ||
230 | struct page *spare_page; /* Used when checking P/Q in raid6 */ | ||
231 | |||
231 | /* | 232 | /* |
232 | * Free stripes pool | 233 | * Free stripes pool |
233 | */ | 234 | */ |
diff --git a/include/linux/ramfs.h b/include/linux/ramfs.h index e0a4faa9610c..953b6df5d037 100644 --- a/include/linux/ramfs.h +++ b/include/linux/ramfs.h | |||
@@ -5,6 +5,16 @@ struct inode *ramfs_get_inode(struct super_block *sb, int mode, dev_t dev); | |||
5 | struct super_block *ramfs_get_sb(struct file_system_type *fs_type, | 5 | struct super_block *ramfs_get_sb(struct file_system_type *fs_type, |
6 | int flags, const char *dev_name, void *data); | 6 | int flags, const char *dev_name, void *data); |
7 | 7 | ||
8 | #ifndef CONFIG_MMU | ||
9 | extern unsigned long ramfs_nommu_get_unmapped_area(struct file *file, | ||
10 | unsigned long addr, | ||
11 | unsigned long len, | ||
12 | unsigned long pgoff, | ||
13 | unsigned long flags); | ||
14 | |||
15 | extern int ramfs_nommu_mmap(struct file *file, struct vm_area_struct *vma); | ||
16 | #endif | ||
17 | |||
8 | extern struct file_operations ramfs_file_operations; | 18 | extern struct file_operations ramfs_file_operations; |
9 | extern struct vm_operations_struct generic_file_vm_ops; | 19 | extern struct vm_operations_struct generic_file_vm_ops; |
10 | 20 | ||
diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 33261f1d2239..9d6fbeef2104 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h | |||
@@ -71,6 +71,7 @@ void __anon_vma_link(struct vm_area_struct *); | |||
71 | * rmap interfaces called when adding or removing pte of page | 71 | * rmap interfaces called when adding or removing pte of page |
72 | */ | 72 | */ |
73 | void page_add_anon_rmap(struct page *, struct vm_area_struct *, unsigned long); | 73 | void page_add_anon_rmap(struct page *, struct vm_area_struct *, unsigned long); |
74 | void page_add_new_anon_rmap(struct page *, struct vm_area_struct *, unsigned long); | ||
74 | void page_add_file_rmap(struct page *); | 75 | void page_add_file_rmap(struct page *); |
75 | void page_remove_rmap(struct page *); | 76 | void page_remove_rmap(struct page *); |
76 | 77 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index b0ad6f30679e..7da33619d5d0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -254,25 +254,12 @@ extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); | |||
254 | * The mm counters are not protected by its page_table_lock, | 254 | * The mm counters are not protected by its page_table_lock, |
255 | * so must be incremented atomically. | 255 | * so must be incremented atomically. |
256 | */ | 256 | */ |
257 | #ifdef ATOMIC64_INIT | 257 | #define set_mm_counter(mm, member, value) atomic_long_set(&(mm)->_##member, value) |
258 | #define set_mm_counter(mm, member, value) atomic64_set(&(mm)->_##member, value) | 258 | #define get_mm_counter(mm, member) ((unsigned long)atomic_long_read(&(mm)->_##member)) |
259 | #define get_mm_counter(mm, member) ((unsigned long)atomic64_read(&(mm)->_##member)) | 259 | #define add_mm_counter(mm, member, value) atomic_long_add(value, &(mm)->_##member) |
260 | #define add_mm_counter(mm, member, value) atomic64_add(value, &(mm)->_##member) | 260 | #define inc_mm_counter(mm, member) atomic_long_inc(&(mm)->_##member) |
261 | #define inc_mm_counter(mm, member) atomic64_inc(&(mm)->_##member) | 261 | #define dec_mm_counter(mm, member) atomic_long_dec(&(mm)->_##member) |
262 | #define dec_mm_counter(mm, member) atomic64_dec(&(mm)->_##member) | 262 | typedef atomic_long_t mm_counter_t; |
263 | typedef atomic64_t mm_counter_t; | ||
264 | #else /* !ATOMIC64_INIT */ | ||
265 | /* | ||
266 | * The counters wrap back to 0 at 2^32 * PAGE_SIZE, | ||
267 | * that is, at 16TB if using 4kB page size. | ||
268 | */ | ||
269 | #define set_mm_counter(mm, member, value) atomic_set(&(mm)->_##member, value) | ||
270 | #define get_mm_counter(mm, member) ((unsigned long)atomic_read(&(mm)->_##member)) | ||
271 | #define add_mm_counter(mm, member, value) atomic_add(value, &(mm)->_##member) | ||
272 | #define inc_mm_counter(mm, member) atomic_inc(&(mm)->_##member) | ||
273 | #define dec_mm_counter(mm, member) atomic_dec(&(mm)->_##member) | ||
274 | typedef atomic_t mm_counter_t; | ||
275 | #endif /* !ATOMIC64_INIT */ | ||
276 | 263 | ||
277 | #else /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ | 264 | #else /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ |
278 | /* | 265 | /* |
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h index ab151bbb66df..f147e6b84332 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h | |||
@@ -49,7 +49,6 @@ struct rpc_clnt { | |||
49 | 49 | ||
50 | unsigned int cl_softrtry : 1,/* soft timeouts */ | 50 | unsigned int cl_softrtry : 1,/* soft timeouts */ |
51 | cl_intr : 1,/* interruptible */ | 51 | cl_intr : 1,/* interruptible */ |
52 | cl_chatty : 1,/* be verbose */ | ||
53 | cl_autobind : 1,/* use getport() */ | 52 | cl_autobind : 1,/* use getport() */ |
54 | cl_oneshot : 1,/* dispose after use */ | 53 | cl_oneshot : 1,/* dispose after use */ |
55 | cl_dead : 1;/* abandoned */ | 54 | cl_dead : 1;/* abandoned */ |
@@ -126,7 +125,8 @@ int rpc_register(u32, u32, int, unsigned short, int *); | |||
126 | void rpc_call_setup(struct rpc_task *, struct rpc_message *, int); | 125 | void rpc_call_setup(struct rpc_task *, struct rpc_message *, int); |
127 | 126 | ||
128 | int rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, | 127 | int rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg, |
129 | int flags, rpc_action callback, void *clntdata); | 128 | int flags, const struct rpc_call_ops *tk_ops, |
129 | void *calldata); | ||
130 | int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, | 130 | int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg, |
131 | int flags); | 131 | int flags); |
132 | void rpc_restart_call(struct rpc_task *); | 132 | void rpc_restart_call(struct rpc_task *); |
@@ -134,6 +134,7 @@ void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset); | |||
134 | void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset); | 134 | void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset); |
135 | void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int); | 135 | void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int); |
136 | size_t rpc_max_payload(struct rpc_clnt *); | 136 | size_t rpc_max_payload(struct rpc_clnt *); |
137 | void rpc_force_rebind(struct rpc_clnt *); | ||
137 | int rpc_ping(struct rpc_clnt *clnt, int flags); | 138 | int rpc_ping(struct rpc_clnt *clnt, int flags); |
138 | 139 | ||
139 | static __inline__ | 140 | static __inline__ |
diff --git a/include/linux/sunrpc/gss_spkm3.h b/include/linux/sunrpc/gss_spkm3.h index 0beb2cf00a84..336e218c2782 100644 --- a/include/linux/sunrpc/gss_spkm3.h +++ b/include/linux/sunrpc/gss_spkm3.h | |||
@@ -48,7 +48,7 @@ u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struc | |||
48 | #define CKSUMTYPE_RSA_MD5 0x0007 | 48 | #define CKSUMTYPE_RSA_MD5 0x0007 |
49 | 49 | ||
50 | s32 make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, | 50 | s32 make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, |
51 | struct xdr_netobj *cksum); | 51 | int body_offset, struct xdr_netobj *cksum); |
52 | void asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits); | 52 | void asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits); |
53 | int decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, | 53 | int decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, |
54 | int explen); | 54 | int explen); |
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index 4d77e90d0b30..8b25629accd8 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
@@ -27,6 +27,7 @@ struct rpc_message { | |||
27 | struct rpc_cred * rpc_cred; /* Credentials */ | 27 | struct rpc_cred * rpc_cred; /* Credentials */ |
28 | }; | 28 | }; |
29 | 29 | ||
30 | struct rpc_call_ops; | ||
30 | struct rpc_wait_queue; | 31 | struct rpc_wait_queue; |
31 | struct rpc_wait { | 32 | struct rpc_wait { |
32 | struct list_head list; /* wait queue links */ | 33 | struct list_head list; /* wait queue links */ |
@@ -41,6 +42,7 @@ struct rpc_task { | |||
41 | #ifdef RPC_DEBUG | 42 | #ifdef RPC_DEBUG |
42 | unsigned long tk_magic; /* 0xf00baa */ | 43 | unsigned long tk_magic; /* 0xf00baa */ |
43 | #endif | 44 | #endif |
45 | atomic_t tk_count; /* Reference count */ | ||
44 | struct list_head tk_task; /* global list of tasks */ | 46 | struct list_head tk_task; /* global list of tasks */ |
45 | struct rpc_clnt * tk_client; /* RPC client */ | 47 | struct rpc_clnt * tk_client; /* RPC client */ |
46 | struct rpc_rqst * tk_rqstp; /* RPC request */ | 48 | struct rpc_rqst * tk_rqstp; /* RPC request */ |
@@ -50,8 +52,6 @@ struct rpc_task { | |||
50 | * RPC call state | 52 | * RPC call state |
51 | */ | 53 | */ |
52 | struct rpc_message tk_msg; /* RPC call info */ | 54 | struct rpc_message tk_msg; /* RPC call info */ |
53 | __u32 * tk_buffer; /* XDR buffer */ | ||
54 | size_t tk_bufsize; | ||
55 | __u8 tk_garb_retry; | 55 | __u8 tk_garb_retry; |
56 | __u8 tk_cred_retry; | 56 | __u8 tk_cred_retry; |
57 | 57 | ||
@@ -61,13 +61,12 @@ struct rpc_task { | |||
61 | * timeout_fn to be executed by timer bottom half | 61 | * timeout_fn to be executed by timer bottom half |
62 | * callback to be executed after waking up | 62 | * callback to be executed after waking up |
63 | * action next procedure for async tasks | 63 | * action next procedure for async tasks |
64 | * exit exit async task and report to caller | 64 | * tk_ops caller callbacks |
65 | */ | 65 | */ |
66 | void (*tk_timeout_fn)(struct rpc_task *); | 66 | void (*tk_timeout_fn)(struct rpc_task *); |
67 | void (*tk_callback)(struct rpc_task *); | 67 | void (*tk_callback)(struct rpc_task *); |
68 | void (*tk_action)(struct rpc_task *); | 68 | void (*tk_action)(struct rpc_task *); |
69 | void (*tk_exit)(struct rpc_task *); | 69 | const struct rpc_call_ops *tk_ops; |
70 | void (*tk_release)(struct rpc_task *); | ||
71 | void * tk_calldata; | 70 | void * tk_calldata; |
72 | 71 | ||
73 | /* | 72 | /* |
@@ -78,7 +77,6 @@ struct rpc_task { | |||
78 | struct timer_list tk_timer; /* kernel timer */ | 77 | struct timer_list tk_timer; /* kernel timer */ |
79 | unsigned long tk_timeout; /* timeout for rpc_sleep() */ | 78 | unsigned long tk_timeout; /* timeout for rpc_sleep() */ |
80 | unsigned short tk_flags; /* misc flags */ | 79 | unsigned short tk_flags; /* misc flags */ |
81 | unsigned char tk_active : 1;/* Task has been activated */ | ||
82 | unsigned char tk_priority : 2;/* Task priority */ | 80 | unsigned char tk_priority : 2;/* Task priority */ |
83 | unsigned long tk_runstate; /* Task run status */ | 81 | unsigned long tk_runstate; /* Task run status */ |
84 | struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could | 82 | struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could |
@@ -111,6 +109,13 @@ struct rpc_task { | |||
111 | 109 | ||
112 | typedef void (*rpc_action)(struct rpc_task *); | 110 | typedef void (*rpc_action)(struct rpc_task *); |
113 | 111 | ||
112 | struct rpc_call_ops { | ||
113 | void (*rpc_call_prepare)(struct rpc_task *, void *); | ||
114 | void (*rpc_call_done)(struct rpc_task *, void *); | ||
115 | void (*rpc_release)(void *); | ||
116 | }; | ||
117 | |||
118 | |||
114 | /* | 119 | /* |
115 | * RPC task flags | 120 | * RPC task flags |
116 | */ | 121 | */ |
@@ -129,7 +134,6 @@ typedef void (*rpc_action)(struct rpc_task *); | |||
129 | #define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER) | 134 | #define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER) |
130 | #define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS) | 135 | #define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS) |
131 | #define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED) | 136 | #define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED) |
132 | #define RPC_IS_ACTIVATED(t) ((t)->tk_active) | ||
133 | #define RPC_DO_CALLBACK(t) ((t)->tk_callback != NULL) | 137 | #define RPC_DO_CALLBACK(t) ((t)->tk_callback != NULL) |
134 | #define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT) | 138 | #define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT) |
135 | #define RPC_TASK_UNINTERRUPTIBLE(t) ((t)->tk_flags & RPC_TASK_NOINTR) | 139 | #define RPC_TASK_UNINTERRUPTIBLE(t) ((t)->tk_flags & RPC_TASK_NOINTR) |
@@ -138,6 +142,7 @@ typedef void (*rpc_action)(struct rpc_task *); | |||
138 | #define RPC_TASK_QUEUED 1 | 142 | #define RPC_TASK_QUEUED 1 |
139 | #define RPC_TASK_WAKEUP 2 | 143 | #define RPC_TASK_WAKEUP 2 |
140 | #define RPC_TASK_HAS_TIMER 3 | 144 | #define RPC_TASK_HAS_TIMER 3 |
145 | #define RPC_TASK_ACTIVE 4 | ||
141 | 146 | ||
142 | #define RPC_IS_RUNNING(t) (test_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) | 147 | #define RPC_IS_RUNNING(t) (test_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) |
143 | #define rpc_set_running(t) (set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) | 148 | #define rpc_set_running(t) (set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate)) |
@@ -168,6 +173,15 @@ typedef void (*rpc_action)(struct rpc_task *); | |||
168 | smp_mb__after_clear_bit(); \ | 173 | smp_mb__after_clear_bit(); \ |
169 | } while (0) | 174 | } while (0) |
170 | 175 | ||
176 | #define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) | ||
177 | #define rpc_set_active(t) (set_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) | ||
178 | #define rpc_clear_active(t) \ | ||
179 | do { \ | ||
180 | smp_mb__before_clear_bit(); \ | ||
181 | clear_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate); \ | ||
182 | smp_mb__after_clear_bit(); \ | ||
183 | } while(0) | ||
184 | |||
171 | /* | 185 | /* |
172 | * Task priorities. | 186 | * Task priorities. |
173 | * Note: if you change these, you must also change | 187 | * Note: if you change these, you must also change |
@@ -228,11 +242,16 @@ struct rpc_wait_queue { | |||
228 | /* | 242 | /* |
229 | * Function prototypes | 243 | * Function prototypes |
230 | */ | 244 | */ |
231 | struct rpc_task *rpc_new_task(struct rpc_clnt *, rpc_action, int flags); | 245 | struct rpc_task *rpc_new_task(struct rpc_clnt *, int flags, |
246 | const struct rpc_call_ops *ops, void *data); | ||
247 | struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags, | ||
248 | const struct rpc_call_ops *ops, void *data); | ||
232 | struct rpc_task *rpc_new_child(struct rpc_clnt *, struct rpc_task *parent); | 249 | struct rpc_task *rpc_new_child(struct rpc_clnt *, struct rpc_task *parent); |
233 | void rpc_init_task(struct rpc_task *, struct rpc_clnt *, | 250 | void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, |
234 | rpc_action exitfunc, int flags); | 251 | int flags, const struct rpc_call_ops *ops, |
252 | void *data); | ||
235 | void rpc_release_task(struct rpc_task *); | 253 | void rpc_release_task(struct rpc_task *); |
254 | void rpc_exit_task(struct rpc_task *); | ||
236 | void rpc_killall_tasks(struct rpc_clnt *); | 255 | void rpc_killall_tasks(struct rpc_clnt *); |
237 | int rpc_execute(struct rpc_task *); | 256 | int rpc_execute(struct rpc_task *); |
238 | void rpc_run_child(struct rpc_task *parent, struct rpc_task *child, | 257 | void rpc_run_child(struct rpc_task *parent, struct rpc_task *child, |
@@ -247,9 +266,11 @@ struct rpc_task *rpc_wake_up_next(struct rpc_wait_queue *); | |||
247 | void rpc_wake_up_status(struct rpc_wait_queue *, int); | 266 | void rpc_wake_up_status(struct rpc_wait_queue *, int); |
248 | void rpc_delay(struct rpc_task *, unsigned long); | 267 | void rpc_delay(struct rpc_task *, unsigned long); |
249 | void * rpc_malloc(struct rpc_task *, size_t); | 268 | void * rpc_malloc(struct rpc_task *, size_t); |
269 | void rpc_free(struct rpc_task *); | ||
250 | int rpciod_up(void); | 270 | int rpciod_up(void); |
251 | void rpciod_down(void); | 271 | void rpciod_down(void); |
252 | void rpciod_wake_up(void); | 272 | void rpciod_wake_up(void); |
273 | int __rpc_wait_for_completion_task(struct rpc_task *task, int (*)(void *)); | ||
253 | #ifdef RPC_DEBUG | 274 | #ifdef RPC_DEBUG |
254 | void rpc_show_tasks(void); | 275 | void rpc_show_tasks(void); |
255 | #endif | 276 | #endif |
@@ -259,7 +280,12 @@ void rpc_destroy_mempool(void); | |||
259 | static inline void rpc_exit(struct rpc_task *task, int status) | 280 | static inline void rpc_exit(struct rpc_task *task, int status) |
260 | { | 281 | { |
261 | task->tk_status = status; | 282 | task->tk_status = status; |
262 | task->tk_action = NULL; | 283 | task->tk_action = rpc_exit_task; |
284 | } | ||
285 | |||
286 | static inline int rpc_wait_for_completion_task(struct rpc_task *task) | ||
287 | { | ||
288 | return __rpc_wait_for_completion_task(task, NULL); | ||
263 | } | 289 | } |
264 | 290 | ||
265 | #ifdef RPC_DEBUG | 291 | #ifdef RPC_DEBUG |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 5da968729cf8..84c35d42d250 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -91,7 +91,6 @@ struct xdr_buf { | |||
91 | u32 * xdr_encode_opaque_fixed(u32 *p, const void *ptr, unsigned int len); | 91 | u32 * xdr_encode_opaque_fixed(u32 *p, const void *ptr, unsigned int len); |
92 | u32 * xdr_encode_opaque(u32 *p, const void *ptr, unsigned int len); | 92 | u32 * xdr_encode_opaque(u32 *p, const void *ptr, unsigned int len); |
93 | u32 * xdr_encode_string(u32 *p, const char *s); | 93 | u32 * xdr_encode_string(u32 *p, const char *s); |
94 | u32 * xdr_decode_string(u32 *p, char **sp, int *lenp, int maxlen); | ||
95 | u32 * xdr_decode_string_inplace(u32 *p, char **sp, int *lenp, int maxlen); | 94 | u32 * xdr_decode_string_inplace(u32 *p, char **sp, int *lenp, int maxlen); |
96 | u32 * xdr_encode_netobj(u32 *p, const struct xdr_netobj *); | 95 | u32 * xdr_encode_netobj(u32 *p, const struct xdr_netobj *); |
97 | u32 * xdr_decode_netobj(u32 *p, struct xdr_netobj *); | 96 | u32 * xdr_decode_netobj(u32 *p, struct xdr_netobj *); |
@@ -135,11 +134,6 @@ xdr_adjust_iovec(struct kvec *iov, u32 *p) | |||
135 | } | 134 | } |
136 | 135 | ||
137 | /* | 136 | /* |
138 | * Maximum number of iov's we use. | ||
139 | */ | ||
140 | #define MAX_IOVEC (12) | ||
141 | |||
142 | /* | ||
143 | * XDR buffer helper functions | 137 | * XDR buffer helper functions |
144 | */ | 138 | */ |
145 | extern void xdr_shift_buf(struct xdr_buf *, size_t); | 139 | extern void xdr_shift_buf(struct xdr_buf *, size_t); |
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 3b8b6e823c70..6ef99b14ff09 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -79,21 +79,19 @@ struct rpc_rqst { | |||
79 | void (*rq_release_snd_buf)(struct rpc_rqst *); /* release rq_enc_pages */ | 79 | void (*rq_release_snd_buf)(struct rpc_rqst *); /* release rq_enc_pages */ |
80 | struct list_head rq_list; | 80 | struct list_head rq_list; |
81 | 81 | ||
82 | __u32 * rq_buffer; /* XDR encode buffer */ | ||
83 | size_t rq_bufsize; | ||
84 | |||
82 | struct xdr_buf rq_private_buf; /* The receive buffer | 85 | struct xdr_buf rq_private_buf; /* The receive buffer |
83 | * used in the softirq. | 86 | * used in the softirq. |
84 | */ | 87 | */ |
85 | unsigned long rq_majortimeo; /* major timeout alarm */ | 88 | unsigned long rq_majortimeo; /* major timeout alarm */ |
86 | unsigned long rq_timeout; /* Current timeout value */ | 89 | unsigned long rq_timeout; /* Current timeout value */ |
87 | unsigned int rq_retries; /* # of retries */ | 90 | unsigned int rq_retries; /* # of retries */ |
88 | /* | ||
89 | * For authentication (e.g. auth_des) | ||
90 | */ | ||
91 | u32 rq_creddata[2]; | ||
92 | 91 | ||
93 | /* | 92 | /* |
94 | * Partial send handling | 93 | * Partial send handling |
95 | */ | 94 | */ |
96 | |||
97 | u32 rq_bytes_sent; /* Bytes we have sent */ | 95 | u32 rq_bytes_sent; /* Bytes we have sent */ |
98 | 96 | ||
99 | unsigned long rq_xtime; /* when transmitted */ | 97 | unsigned long rq_xtime; /* when transmitted */ |
@@ -106,7 +104,10 @@ struct rpc_xprt_ops { | |||
106 | void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); | 104 | void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); |
107 | int (*reserve_xprt)(struct rpc_task *task); | 105 | int (*reserve_xprt)(struct rpc_task *task); |
108 | void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); | 106 | void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); |
107 | void (*set_port)(struct rpc_xprt *xprt, unsigned short port); | ||
109 | void (*connect)(struct rpc_task *task); | 108 | void (*connect)(struct rpc_task *task); |
109 | void * (*buf_alloc)(struct rpc_task *task, size_t size); | ||
110 | void (*buf_free)(struct rpc_task *task); | ||
110 | int (*send_request)(struct rpc_task *task); | 111 | int (*send_request)(struct rpc_task *task); |
111 | void (*set_retrans_timeout)(struct rpc_task *task); | 112 | void (*set_retrans_timeout)(struct rpc_task *task); |
112 | void (*timer)(struct rpc_task *task); | 113 | void (*timer)(struct rpc_task *task); |
@@ -253,6 +254,7 @@ int xs_setup_tcp(struct rpc_xprt *xprt, struct rpc_timeout *to); | |||
253 | #define XPRT_LOCKED (0) | 254 | #define XPRT_LOCKED (0) |
254 | #define XPRT_CONNECTED (1) | 255 | #define XPRT_CONNECTED (1) |
255 | #define XPRT_CONNECTING (2) | 256 | #define XPRT_CONNECTING (2) |
257 | #define XPRT_CLOSE_WAIT (3) | ||
256 | 258 | ||
257 | static inline void xprt_set_connected(struct rpc_xprt *xprt) | 259 | static inline void xprt_set_connected(struct rpc_xprt *xprt) |
258 | { | 260 | { |
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index a61c04f804b2..5dc94e777fab 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
@@ -14,11 +14,7 @@ | |||
14 | typedef struct pbe { | 14 | typedef struct pbe { |
15 | unsigned long address; /* address of the copy */ | 15 | unsigned long address; /* address of the copy */ |
16 | unsigned long orig_address; /* original address of page */ | 16 | unsigned long orig_address; /* original address of page */ |
17 | swp_entry_t swap_address; | 17 | struct pbe *next; |
18 | |||
19 | struct pbe *next; /* also used as scratch space at | ||
20 | * end of page (see link, diskpage) | ||
21 | */ | ||
22 | } suspend_pagedir_t; | 18 | } suspend_pagedir_t; |
23 | 19 | ||
24 | #define for_each_pbe(pbe, pblist) \ | 20 | #define for_each_pbe(pbe, pblist) \ |
@@ -77,6 +73,6 @@ unsigned long get_safe_page(gfp_t gfp_mask); | |||
77 | * XXX: We try to keep some more pages free so that I/O operations succeed | 73 | * XXX: We try to keep some more pages free so that I/O operations succeed |
78 | * without paging. Might this be more? | 74 | * without paging. Might this be more? |
79 | */ | 75 | */ |
80 | #define PAGES_FOR_IO 512 | 76 | #define PAGES_FOR_IO 1024 |
81 | 77 | ||
82 | #endif /* _LINUX_SWSUSP_H */ | 78 | #endif /* _LINUX_SWSUSP_H */ |
diff --git a/include/linux/swap.h b/include/linux/swap.h index 508668f840b6..556617bcf7ac 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
@@ -172,7 +172,6 @@ extern void swap_setup(void); | |||
172 | 172 | ||
173 | /* linux/mm/vmscan.c */ | 173 | /* linux/mm/vmscan.c */ |
174 | extern int try_to_free_pages(struct zone **, gfp_t); | 174 | extern int try_to_free_pages(struct zone **, gfp_t); |
175 | extern int zone_reclaim(struct zone *, gfp_t, unsigned int); | ||
176 | extern int shrink_all_memory(int); | 175 | extern int shrink_all_memory(int); |
177 | extern int vm_swappiness; | 176 | extern int vm_swappiness; |
178 | 177 | ||
@@ -210,6 +209,7 @@ extern unsigned int nr_swapfiles; | |||
210 | extern struct swap_info_struct swap_info[]; | 209 | extern struct swap_info_struct swap_info[]; |
211 | extern void si_swapinfo(struct sysinfo *); | 210 | extern void si_swapinfo(struct sysinfo *); |
212 | extern swp_entry_t get_swap_page(void); | 211 | extern swp_entry_t get_swap_page(void); |
212 | extern swp_entry_t get_swap_page_of_type(int type); | ||
213 | extern int swap_duplicate(swp_entry_t); | 213 | extern int swap_duplicate(swp_entry_t); |
214 | extern int valid_swaphandles(swp_entry_t, unsigned long *); | 214 | extern int valid_swaphandles(swp_entry_t, unsigned long *); |
215 | extern void swap_free(swp_entry_t); | 215 | extern void swap_free(swp_entry_t); |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 64a36ba43b2f..b096159086e8 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
@@ -53,10 +53,11 @@ struct writeback_control { | |||
53 | loff_t start; | 53 | loff_t start; |
54 | loff_t end; | 54 | loff_t end; |
55 | 55 | ||
56 | unsigned nonblocking:1; /* Don't get stuck on request queues */ | 56 | unsigned nonblocking:1; /* Don't get stuck on request queues */ |
57 | unsigned encountered_congestion:1; /* An output: a queue is full */ | 57 | unsigned encountered_congestion:1; /* An output: a queue is full */ |
58 | unsigned for_kupdate:1; /* A kupdate writeback */ | 58 | unsigned for_kupdate:1; /* A kupdate writeback */ |
59 | unsigned for_reclaim:1; /* Invoked from the page allocator */ | 59 | unsigned for_reclaim:1; /* Invoked from the page allocator */ |
60 | unsigned for_writepages:1; /* This is a writepages() call */ | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | /* | 63 | /* |
diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 850dfa877fda..02e26c1672bf 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h | |||
@@ -15,7 +15,6 @@ struct scsi_driver { | |||
15 | void (*rescan)(struct device *); | 15 | void (*rescan)(struct device *); |
16 | int (*issue_flush)(struct device *, sector_t *); | 16 | int (*issue_flush)(struct device *, sector_t *); |
17 | int (*prepare_flush)(struct request_queue *, struct request *); | 17 | int (*prepare_flush)(struct request_queue *, struct request *); |
18 | void (*end_flush)(struct request_queue *, struct request *); | ||
19 | }; | 18 | }; |
20 | #define to_scsi_driver(drv) \ | 19 | #define to_scsi_driver(drv) \ |
21 | container_of((drv), struct scsi_driver, gendrv) | 20 | container_of((drv), struct scsi_driver, gendrv) |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 6cbb1982ed03..230bc55c0bfa 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -296,6 +296,12 @@ struct scsi_host_template { | |||
296 | int (*proc_info)(struct Scsi_Host *, char *, char **, off_t, int, int); | 296 | int (*proc_info)(struct Scsi_Host *, char *, char **, off_t, int, int); |
297 | 297 | ||
298 | /* | 298 | /* |
299 | * suspend support | ||
300 | */ | ||
301 | int (*resume)(struct scsi_device *); | ||
302 | int (*suspend)(struct scsi_device *); | ||
303 | |||
304 | /* | ||
299 | * Name of proc directory | 305 | * Name of proc directory |
300 | */ | 306 | */ |
301 | char *proc_name; | 307 | char *proc_name; |
@@ -392,7 +398,6 @@ struct scsi_host_template { | |||
392 | /* | 398 | /* |
393 | * ordered write support | 399 | * ordered write support |
394 | */ | 400 | */ |
395 | unsigned ordered_flush:1; | ||
396 | unsigned ordered_tag:1; | 401 | unsigned ordered_tag:1; |
397 | 402 | ||
398 | /* | 403 | /* |