diff options
Diffstat (limited to 'include')
264 files changed, 5341 insertions, 1973 deletions
diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h index e49c36d38d7e..bb145e4b935e 100644 --- a/include/acpi/acpi_drivers.h +++ b/include/acpi/acpi_drivers.h | |||
@@ -144,7 +144,7 @@ static inline void unregister_dock_notifier(struct notifier_block *nb) | |||
144 | { | 144 | { |
145 | } | 145 | } |
146 | static inline int register_hotplug_dock_device(acpi_handle handle, | 146 | static inline int register_hotplug_dock_device(acpi_handle handle, |
147 | struct acpi_dock_ops *ops, | 147 | const struct acpi_dock_ops *ops, |
148 | void *context) | 148 | void *context) |
149 | { | 149 | { |
150 | return -ENODEV; | 150 | return -ENODEV; |
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index b67231bef632..ed73f6705c86 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h | |||
@@ -470,7 +470,6 @@ typedef u64 acpi_integer; | |||
470 | */ | 470 | */ |
471 | #define ACPI_FULL_INITIALIZATION 0x00 | 471 | #define ACPI_FULL_INITIALIZATION 0x00 |
472 | #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 | 472 | #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 |
473 | #define ACPI_NO_HARDWARE_INIT 0x02 | ||
474 | #define ACPI_NO_EVENT_INIT 0x04 | 473 | #define ACPI_NO_EVENT_INIT 0x04 |
475 | #define ACPI_NO_HANDLER_INIT 0x08 | 474 | #define ACPI_NO_HANDLER_INIT 0x08 |
476 | #define ACPI_NO_ACPI_ENABLE 0x10 | 475 | #define ACPI_NO_ACPI_ENABLE 0x10 |
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h index f72403c4b51a..f4b2effe0333 100644 --- a/include/acpi/platform/aclinux.h +++ b/include/acpi/platform/aclinux.h | |||
@@ -55,7 +55,6 @@ | |||
55 | 55 | ||
56 | #include <linux/string.h> | 56 | #include <linux/string.h> |
57 | #include <linux/kernel.h> | 57 | #include <linux/kernel.h> |
58 | #include <linux/module.h> | ||
59 | #include <linux/ctype.h> | 58 | #include <linux/ctype.h> |
60 | #include <linux/sched.h> | 59 | #include <linux/sched.h> |
61 | #include <asm/system.h> | 60 | #include <asm/system.h> |
diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 67055f180330..610f6fb1bbc2 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h | |||
@@ -329,6 +329,7 @@ extern void acpi_processor_throttling_init(void); | |||
329 | int acpi_processor_power_init(struct acpi_processor *pr, | 329 | int acpi_processor_power_init(struct acpi_processor *pr, |
330 | struct acpi_device *device); | 330 | struct acpi_device *device); |
331 | int acpi_processor_cst_has_changed(struct acpi_processor *pr); | 331 | int acpi_processor_cst_has_changed(struct acpi_processor *pr); |
332 | int acpi_processor_hotplug(struct acpi_processor *pr); | ||
332 | int acpi_processor_power_exit(struct acpi_processor *pr, | 333 | int acpi_processor_power_exit(struct acpi_processor *pr, |
333 | struct acpi_device *device); | 334 | struct acpi_device *device); |
334 | int acpi_processor_suspend(struct acpi_device * device, pm_message_t state); | 335 | int acpi_processor_suspend(struct acpi_device * device, pm_message_t state); |
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index dfb0ec666c94..84458b0c38d1 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
@@ -61,11 +61,12 @@ struct bug_entry { | |||
61 | */ | 61 | */ |
62 | #ifndef __WARN_TAINT | 62 | #ifndef __WARN_TAINT |
63 | #ifndef __ASSEMBLY__ | 63 | #ifndef __ASSEMBLY__ |
64 | extern void warn_slowpath_fmt(const char *file, const int line, | 64 | extern __printf(3, 4) |
65 | const char *fmt, ...) __attribute__((format(printf, 3, 4))); | 65 | void warn_slowpath_fmt(const char *file, const int line, |
66 | extern void warn_slowpath_fmt_taint(const char *file, const int line, | 66 | const char *fmt, ...); |
67 | unsigned taint, const char *fmt, ...) | 67 | extern __printf(4, 5) |
68 | __attribute__((format(printf, 4, 5))); | 68 | void warn_slowpath_fmt_taint(const char *file, const int line, unsigned taint, |
69 | const char *fmt, ...); | ||
69 | extern void warn_slowpath_null(const char *file, const int line); | 70 | extern void warn_slowpath_null(const char *file, const int line); |
70 | #define WANT_WARN_ON_SLOWPATH | 71 | #define WANT_WARN_ON_SLOWPATH |
71 | #endif | 72 | #endif |
diff --git a/include/asm-generic/checksum.h b/include/asm-generic/checksum.h index 4647c762d970..c084767c88bc 100644 --- a/include/asm-generic/checksum.h +++ b/include/asm-generic/checksum.h | |||
@@ -33,8 +33,10 @@ extern __wsum csum_partial_copy(const void *src, void *dst, int len, __wsum sum) | |||
33 | extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst, | 33 | extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst, |
34 | int len, __wsum sum, int *csum_err); | 34 | int len, __wsum sum, int *csum_err); |
35 | 35 | ||
36 | #ifndef csum_partial_copy_nocheck | ||
36 | #define csum_partial_copy_nocheck(src, dst, len, sum) \ | 37 | #define csum_partial_copy_nocheck(src, dst, len, sum) \ |
37 | csum_partial_copy((src), (dst), (len), (sum)) | 38 | csum_partial_copy((src), (dst), (len), (sum)) |
39 | #endif | ||
38 | 40 | ||
39 | /* | 41 | /* |
40 | * This is a version of ip_compute_csum() optimized for IP headers, | 42 | * This is a version of ip_compute_csum() optimized for IP headers, |
@@ -63,12 +65,14 @@ csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, | |||
63 | unsigned short proto, __wsum sum); | 65 | unsigned short proto, __wsum sum); |
64 | #endif | 66 | #endif |
65 | 67 | ||
68 | #ifndef csum_tcpudp_magic | ||
66 | static inline __sum16 | 69 | static inline __sum16 |
67 | csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len, | 70 | csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len, |
68 | unsigned short proto, __wsum sum) | 71 | unsigned short proto, __wsum sum) |
69 | { | 72 | { |
70 | return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); | 73 | return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); |
71 | } | 74 | } |
75 | #endif | ||
72 | 76 | ||
73 | /* | 77 | /* |
74 | * this routine is used for miscellaneous IP-like checksums, mainly | 78 | * this routine is used for miscellaneous IP-like checksums, mainly |
diff --git a/include/asm-generic/dma-mapping-common.h b/include/asm-generic/dma-mapping-common.h index 0c80bb38773f..9fa3f96e38cf 100644 --- a/include/asm-generic/dma-mapping-common.h +++ b/include/asm-generic/dma-mapping-common.h | |||
@@ -123,7 +123,12 @@ static inline void dma_sync_single_range_for_cpu(struct device *dev, | |||
123 | size_t size, | 123 | size_t size, |
124 | enum dma_data_direction dir) | 124 | enum dma_data_direction dir) |
125 | { | 125 | { |
126 | dma_sync_single_for_cpu(dev, addr + offset, size, dir); | 126 | const struct dma_map_ops *ops = get_dma_ops(dev); |
127 | |||
128 | BUG_ON(!valid_dma_direction(dir)); | ||
129 | if (ops->sync_single_for_cpu) | ||
130 | ops->sync_single_for_cpu(dev, addr + offset, size, dir); | ||
131 | debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir); | ||
127 | } | 132 | } |
128 | 133 | ||
129 | static inline void dma_sync_single_range_for_device(struct device *dev, | 134 | static inline void dma_sync_single_range_for_device(struct device *dev, |
@@ -132,7 +137,12 @@ static inline void dma_sync_single_range_for_device(struct device *dev, | |||
132 | size_t size, | 137 | size_t size, |
133 | enum dma_data_direction dir) | 138 | enum dma_data_direction dir) |
134 | { | 139 | { |
135 | dma_sync_single_for_device(dev, addr + offset, size, dir); | 140 | const struct dma_map_ops *ops = get_dma_ops(dev); |
141 | |||
142 | BUG_ON(!valid_dma_direction(dir)); | ||
143 | if (ops->sync_single_for_device) | ||
144 | ops->sync_single_for_device(dev, addr + offset, size, dir); | ||
145 | debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir); | ||
136 | } | 146 | } |
137 | 147 | ||
138 | static inline void | 148 | static inline void |
diff --git a/include/asm-generic/page.h b/include/asm-generic/page.h index 75fec18cdc59..351889d1de19 100644 --- a/include/asm-generic/page.h +++ b/include/asm-generic/page.h | |||
@@ -79,8 +79,8 @@ extern unsigned long memory_end; | |||
79 | #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) | 79 | #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) |
80 | #define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) | 80 | #define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT) |
81 | 81 | ||
82 | #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)) | 82 | #define virt_to_page(addr) pfn_to_page(virt_to_pfn(addr)) |
83 | #define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET) | 83 | #define page_to_virt(page) pfn_to_virt(page_to_pfn(page)) |
84 | 84 | ||
85 | #ifndef page_to_phys | 85 | #ifndef page_to_phys |
86 | #define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT) | 86 | #define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT) |
diff --git a/include/asm-generic/rwsem.h b/include/asm-generic/rwsem.h new file mode 100644 index 000000000000..bb1e2cdeb9bf --- /dev/null +++ b/include/asm-generic/rwsem.h | |||
@@ -0,0 +1,132 @@ | |||
1 | #ifndef _ASM_POWERPC_RWSEM_H | ||
2 | #define _ASM_POWERPC_RWSEM_H | ||
3 | |||
4 | #ifndef _LINUX_RWSEM_H | ||
5 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." | ||
6 | #endif | ||
7 | |||
8 | #ifdef __KERNEL__ | ||
9 | |||
10 | /* | ||
11 | * R/W semaphores for PPC using the stuff in lib/rwsem.c. | ||
12 | * Adapted largely from include/asm-i386/rwsem.h | ||
13 | * by Paul Mackerras <paulus@samba.org>. | ||
14 | */ | ||
15 | |||
16 | /* | ||
17 | * the semaphore definition | ||
18 | */ | ||
19 | #ifdef CONFIG_PPC64 | ||
20 | # define RWSEM_ACTIVE_MASK 0xffffffffL | ||
21 | #else | ||
22 | # define RWSEM_ACTIVE_MASK 0x0000ffffL | ||
23 | #endif | ||
24 | |||
25 | #define RWSEM_UNLOCKED_VALUE 0x00000000L | ||
26 | #define RWSEM_ACTIVE_BIAS 0x00000001L | ||
27 | #define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1) | ||
28 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS | ||
29 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | ||
30 | |||
31 | /* | ||
32 | * lock for reading | ||
33 | */ | ||
34 | static inline void __down_read(struct rw_semaphore *sem) | ||
35 | { | ||
36 | if (unlikely(atomic_long_inc_return((atomic_long_t *)&sem->count) <= 0)) | ||
37 | rwsem_down_read_failed(sem); | ||
38 | } | ||
39 | |||
40 | static inline int __down_read_trylock(struct rw_semaphore *sem) | ||
41 | { | ||
42 | long tmp; | ||
43 | |||
44 | while ((tmp = sem->count) >= 0) { | ||
45 | if (tmp == cmpxchg(&sem->count, tmp, | ||
46 | tmp + RWSEM_ACTIVE_READ_BIAS)) { | ||
47 | return 1; | ||
48 | } | ||
49 | } | ||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | /* | ||
54 | * lock for writing | ||
55 | */ | ||
56 | static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) | ||
57 | { | ||
58 | long tmp; | ||
59 | |||
60 | tmp = atomic_long_add_return(RWSEM_ACTIVE_WRITE_BIAS, | ||
61 | (atomic_long_t *)&sem->count); | ||
62 | if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS)) | ||
63 | rwsem_down_write_failed(sem); | ||
64 | } | ||
65 | |||
66 | static inline void __down_write(struct rw_semaphore *sem) | ||
67 | { | ||
68 | __down_write_nested(sem, 0); | ||
69 | } | ||
70 | |||
71 | static inline int __down_write_trylock(struct rw_semaphore *sem) | ||
72 | { | ||
73 | long tmp; | ||
74 | |||
75 | tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, | ||
76 | RWSEM_ACTIVE_WRITE_BIAS); | ||
77 | return tmp == RWSEM_UNLOCKED_VALUE; | ||
78 | } | ||
79 | |||
80 | /* | ||
81 | * unlock after reading | ||
82 | */ | ||
83 | static inline void __up_read(struct rw_semaphore *sem) | ||
84 | { | ||
85 | long tmp; | ||
86 | |||
87 | tmp = atomic_long_dec_return((atomic_long_t *)&sem->count); | ||
88 | if (unlikely(tmp < -1 && (tmp & RWSEM_ACTIVE_MASK) == 0)) | ||
89 | rwsem_wake(sem); | ||
90 | } | ||
91 | |||
92 | /* | ||
93 | * unlock after writing | ||
94 | */ | ||
95 | static inline void __up_write(struct rw_semaphore *sem) | ||
96 | { | ||
97 | if (unlikely(atomic_long_sub_return(RWSEM_ACTIVE_WRITE_BIAS, | ||
98 | (atomic_long_t *)&sem->count) < 0)) | ||
99 | rwsem_wake(sem); | ||
100 | } | ||
101 | |||
102 | /* | ||
103 | * implement atomic add functionality | ||
104 | */ | ||
105 | static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) | ||
106 | { | ||
107 | atomic_long_add(delta, (atomic_long_t *)&sem->count); | ||
108 | } | ||
109 | |||
110 | /* | ||
111 | * downgrade write lock to read lock | ||
112 | */ | ||
113 | static inline void __downgrade_write(struct rw_semaphore *sem) | ||
114 | { | ||
115 | long tmp; | ||
116 | |||
117 | tmp = atomic_long_add_return(-RWSEM_WAITING_BIAS, | ||
118 | (atomic_long_t *)&sem->count); | ||
119 | if (tmp < 0) | ||
120 | rwsem_downgrade_wake(sem); | ||
121 | } | ||
122 | |||
123 | /* | ||
124 | * implement exchange and add functionality | ||
125 | */ | ||
126 | static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) | ||
127 | { | ||
128 | return atomic_long_add_return(delta, (atomic_long_t *)&sem->count); | ||
129 | } | ||
130 | |||
131 | #endif /* __KERNEL__ */ | ||
132 | #endif /* _ASM_POWERPC_RWSEM_H */ | ||
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index f4c38d8c6674..2292d1af9d70 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h | |||
@@ -685,9 +685,15 @@ __SYSCALL(__NR_syncfs, sys_syncfs) | |||
685 | __SYSCALL(__NR_setns, sys_setns) | 685 | __SYSCALL(__NR_setns, sys_setns) |
686 | #define __NR_sendmmsg 269 | 686 | #define __NR_sendmmsg 269 |
687 | __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) | 687 | __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) |
688 | #define __NR_process_vm_readv 270 | ||
689 | __SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \ | ||
690 | compat_sys_process_vm_readv) | ||
691 | #define __NR_process_vm_writev 271 | ||
692 | __SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \ | ||
693 | compat_sys_process_vm_writev) | ||
688 | 694 | ||
689 | #undef __NR_syscalls | 695 | #undef __NR_syscalls |
690 | #define __NR_syscalls 270 | 696 | #define __NR_syscalls 272 |
691 | 697 | ||
692 | /* | 698 | /* |
693 | * All syscalls below here should go away really, | 699 | * All syscalls below here should go away really, |
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h index 59c3e5bd2c06..ecc721def10c 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/crypto.h> | 15 | #include <linux/crypto.h> |
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/skbuff.h> | ||
18 | 19 | ||
19 | struct module; | 20 | struct module; |
20 | struct rtattr; | 21 | struct rtattr; |
@@ -26,6 +27,7 @@ struct crypto_type { | |||
26 | int (*init)(struct crypto_tfm *tfm, u32 type, u32 mask); | 27 | int (*init)(struct crypto_tfm *tfm, u32 type, u32 mask); |
27 | int (*init_tfm)(struct crypto_tfm *tfm); | 28 | int (*init_tfm)(struct crypto_tfm *tfm); |
28 | void (*show)(struct seq_file *m, struct crypto_alg *alg); | 29 | void (*show)(struct seq_file *m, struct crypto_alg *alg); |
30 | int (*report)(struct sk_buff *skb, struct crypto_alg *alg); | ||
29 | struct crypto_alg *(*lookup)(const char *name, u32 type, u32 mask); | 31 | struct crypto_alg *(*lookup)(const char *name, u32 type, u32 mask); |
30 | 32 | ||
31 | unsigned int type; | 33 | unsigned int type; |
diff --git a/include/crypto/blowfish.h b/include/crypto/blowfish.h new file mode 100644 index 000000000000..1450d4a27980 --- /dev/null +++ b/include/crypto/blowfish.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Common values for blowfish algorithms | ||
3 | */ | ||
4 | |||
5 | #ifndef _CRYPTO_BLOWFISH_H | ||
6 | #define _CRYPTO_BLOWFISH_H | ||
7 | |||
8 | #include <linux/types.h> | ||
9 | #include <linux/crypto.h> | ||
10 | |||
11 | #define BF_BLOCK_SIZE 8 | ||
12 | #define BF_MIN_KEY_SIZE 4 | ||
13 | #define BF_MAX_KEY_SIZE 56 | ||
14 | |||
15 | struct bf_ctx { | ||
16 | u32 p[18]; | ||
17 | u32 s[1024]; | ||
18 | }; | ||
19 | |||
20 | int blowfish_setkey(struct crypto_tfm *tfm, const u8 *key, | ||
21 | unsigned int key_len); | ||
22 | |||
23 | #endif | ||
diff --git a/include/crypto/sha.h b/include/crypto/sha.h index 069e85ba97e1..c6c9c1fe460c 100644 --- a/include/crypto/sha.h +++ b/include/crypto/sha.h | |||
@@ -82,4 +82,9 @@ struct sha512_state { | |||
82 | u8 buf[SHA512_BLOCK_SIZE]; | 82 | u8 buf[SHA512_BLOCK_SIZE]; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | struct shash_desc; | ||
86 | |||
87 | extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data, | ||
88 | unsigned int len); | ||
89 | |||
85 | #endif | 90 | #endif |
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 43538b643560..1f9e9516e2b7 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -42,7 +42,6 @@ | |||
42 | * can build the DRM (part of PI DRI). 4/21/2000 S + B */ | 42 | * can build the DRM (part of PI DRI). 4/21/2000 S + B */ |
43 | #include <asm/current.h> | 43 | #include <asm/current.h> |
44 | #endif /* __alpha__ */ | 44 | #endif /* __alpha__ */ |
45 | #include <linux/module.h> | ||
46 | #include <linux/kernel.h> | 45 | #include <linux/kernel.h> |
47 | #include <linux/miscdevice.h> | 46 | #include <linux/miscdevice.h> |
48 | #include <linux/fs.h> | 47 | #include <linux/fs.h> |
@@ -80,6 +79,8 @@ | |||
80 | #define __OS_HAS_AGP (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE))) | 79 | #define __OS_HAS_AGP (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE))) |
81 | #define __OS_HAS_MTRR (defined(CONFIG_MTRR)) | 80 | #define __OS_HAS_MTRR (defined(CONFIG_MTRR)) |
82 | 81 | ||
82 | struct module; | ||
83 | |||
83 | struct drm_file; | 84 | struct drm_file; |
84 | struct drm_device; | 85 | struct drm_device; |
85 | 86 | ||
@@ -122,12 +123,12 @@ struct drm_device; | |||
122 | * using the DRM_DEBUG_KMS and DRM_DEBUG. | 123 | * using the DRM_DEBUG_KMS and DRM_DEBUG. |
123 | */ | 124 | */ |
124 | 125 | ||
125 | extern __attribute__((format (printf, 4, 5))) | 126 | extern __printf(4, 5) |
126 | void drm_ut_debug_printk(unsigned int request_level, | 127 | void drm_ut_debug_printk(unsigned int request_level, |
127 | const char *prefix, | 128 | const char *prefix, |
128 | const char *function_name, | 129 | const char *function_name, |
129 | const char *format, ...); | 130 | const char *format, ...); |
130 | extern __attribute__((format (printf, 2, 3))) | 131 | extern __printf(2, 3) |
131 | int drm_err(const char *func, const char *format, ...); | 132 | int drm_err(const char *func, const char *format, ...); |
132 | 133 | ||
133 | /***********************************************************************/ | 134 | /***********************************************************************/ |
@@ -989,7 +990,9 @@ struct drm_minor { | |||
989 | struct proc_dir_entry *proc_root; /**< proc directory entry */ | 990 | struct proc_dir_entry *proc_root; /**< proc directory entry */ |
990 | struct drm_info_node proc_nodes; | 991 | struct drm_info_node proc_nodes; |
991 | struct dentry *debugfs_root; | 992 | struct dentry *debugfs_root; |
992 | struct drm_info_node debugfs_nodes; | 993 | |
994 | struct list_head debugfs_list; | ||
995 | struct mutex debugfs_lock; /* Protects debugfs_list. */ | ||
993 | 996 | ||
994 | struct drm_master *master; /* currently active master for this node */ | 997 | struct drm_master *master; /* currently active master for this node */ |
995 | struct list_head master_list; | 998 | struct list_head master_list; |
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h index 0d2f727e96be..93df2d72750b 100644 --- a/include/drm/drm_dp_helper.h +++ b/include/drm/drm_dp_helper.h | |||
@@ -72,6 +72,7 @@ | |||
72 | 72 | ||
73 | #define DP_MAIN_LINK_CHANNEL_CODING 0x006 | 73 | #define DP_MAIN_LINK_CHANNEL_CODING 0x006 |
74 | 74 | ||
75 | #define DP_EDP_CONFIGURATION_CAP 0x00d | ||
75 | #define DP_TRAINING_AUX_RD_INTERVAL 0x00e | 76 | #define DP_TRAINING_AUX_RD_INTERVAL 0x00e |
76 | 77 | ||
77 | #define DP_PSR_SUPPORT 0x070 | 78 | #define DP_PSR_SUPPORT 0x070 |
@@ -159,6 +160,8 @@ | |||
159 | # define DP_CP_IRQ (1 << 2) | 160 | # define DP_CP_IRQ (1 << 2) |
160 | # define DP_SINK_SPECIFIC_IRQ (1 << 6) | 161 | # define DP_SINK_SPECIFIC_IRQ (1 << 6) |
161 | 162 | ||
163 | #define DP_EDP_CONFIGURATION_SET 0x10a | ||
164 | |||
162 | #define DP_LANE0_1_STATUS 0x202 | 165 | #define DP_LANE0_1_STATUS 0x202 |
163 | #define DP_LANE2_3_STATUS 0x203 | 166 | #define DP_LANE2_3_STATUS 0x203 |
164 | # define DP_LANE_CR_DONE (1 << 0) | 167 | # define DP_LANE_CR_DONE (1 << 0) |
diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h index c4961ea50a49..ddd46db65b57 100644 --- a/include/drm/drm_mode.h +++ b/include/drm/drm_mode.h | |||
@@ -120,11 +120,12 @@ struct drm_mode_crtc { | |||
120 | struct drm_mode_modeinfo mode; | 120 | struct drm_mode_modeinfo mode; |
121 | }; | 121 | }; |
122 | 122 | ||
123 | #define DRM_MODE_ENCODER_NONE 0 | 123 | #define DRM_MODE_ENCODER_NONE 0 |
124 | #define DRM_MODE_ENCODER_DAC 1 | 124 | #define DRM_MODE_ENCODER_DAC 1 |
125 | #define DRM_MODE_ENCODER_TMDS 2 | 125 | #define DRM_MODE_ENCODER_TMDS 2 |
126 | #define DRM_MODE_ENCODER_LVDS 3 | 126 | #define DRM_MODE_ENCODER_LVDS 3 |
127 | #define DRM_MODE_ENCODER_TVDAC 4 | 127 | #define DRM_MODE_ENCODER_TVDAC 4 |
128 | #define DRM_MODE_ENCODER_VIRTUAL 5 | ||
128 | 129 | ||
129 | struct drm_mode_get_encoder { | 130 | struct drm_mode_get_encoder { |
130 | __u32 encoder_id; | 131 | __u32 encoder_id; |
@@ -162,6 +163,7 @@ struct drm_mode_get_encoder { | |||
162 | #define DRM_MODE_CONNECTOR_HDMIB 12 | 163 | #define DRM_MODE_CONNECTOR_HDMIB 12 |
163 | #define DRM_MODE_CONNECTOR_TV 13 | 164 | #define DRM_MODE_CONNECTOR_TV 13 |
164 | #define DRM_MODE_CONNECTOR_eDP 14 | 165 | #define DRM_MODE_CONNECTOR_eDP 14 |
166 | #define DRM_MODE_CONNECTOR_VIRTUAL 15 | ||
165 | 167 | ||
166 | struct drm_mode_get_connector { | 168 | struct drm_mode_get_connector { |
167 | 169 | ||
@@ -233,6 +235,8 @@ struct drm_mode_fb_cmd { | |||
233 | #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02 | 235 | #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02 |
234 | #define DRM_MODE_FB_DIRTY_FLAGS 0x03 | 236 | #define DRM_MODE_FB_DIRTY_FLAGS 0x03 |
235 | 237 | ||
238 | #define DRM_MODE_FB_DIRTY_MAX_CLIPS 256 | ||
239 | |||
236 | /* | 240 | /* |
237 | * Mark a region of a framebuffer as dirty. | 241 | * Mark a region of a framebuffer as dirty. |
238 | * | 242 | * |
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index 3d53efd25ab9..14b6cd022284 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h | |||
@@ -4,6 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | #define radeon_PCI_IDS \ | 5 | #define radeon_PCI_IDS \ |
6 | {0x1002, 0x3150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ | 6 | {0x1002, 0x3150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \ |
7 | {0x1002, 0x3151, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
7 | {0x1002, 0x3152, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 8 | {0x1002, 0x3152, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
8 | {0x1002, 0x3154, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 9 | {0x1002, 0x3154, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
9 | {0x1002, 0x3155, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 10 | {0x1002, 0x3155, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
@@ -55,6 +56,7 @@ | |||
55 | {0x1002, 0x4C64, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ | 56 | {0x1002, 0x4C64, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ |
56 | {0x1002, 0x4C66, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ | 57 | {0x1002, 0x4C66, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ |
57 | {0x1002, 0x4C67, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ | 58 | {0x1002, 0x4C67, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \ |
59 | {0x1002, 0x4C6E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280|RADEON_IS_MOBILITY}, \ | ||
58 | {0x1002, 0x4E44, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ | 60 | {0x1002, 0x4E44, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ |
59 | {0x1002, 0x4E45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ | 61 | {0x1002, 0x4E45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ |
60 | {0x1002, 0x4E46, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ | 62 | {0x1002, 0x4E46, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \ |
@@ -180,8 +182,11 @@ | |||
180 | {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 182 | {0x1002, 0x6748, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
181 | {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 183 | {0x1002, 0x6749, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
182 | {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 184 | {0x1002, 0x6750, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
185 | {0x1002, 0x6751, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
183 | {0x1002, 0x6758, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 186 | {0x1002, 0x6758, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
184 | {0x1002, 0x6759, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 187 | {0x1002, 0x6759, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
188 | {0x1002, 0x675B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
189 | {0x1002, 0x675D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
185 | {0x1002, 0x675F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | 190 | {0x1002, 0x675F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ |
186 | {0x1002, 0x6760, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 191 | {0x1002, 0x6760, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
187 | {0x1002, 0x6761, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 192 | {0x1002, 0x6761, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
@@ -193,8 +198,18 @@ | |||
193 | {0x1002, 0x6767, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | 198 | {0x1002, 0x6767, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ |
194 | {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | 199 | {0x1002, 0x6768, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ |
195 | {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | 200 | {0x1002, 0x6770, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ |
201 | {0x1002, 0x6772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
196 | {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | 202 | {0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ |
197 | {0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | 203 | {0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ |
204 | {0x1002, 0x677B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \ | ||
205 | {0x1002, 0x6840, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
206 | {0x1002, 0x6841, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
207 | {0x1002, 0x6842, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
208 | {0x1002, 0x6843, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | ||
209 | {0x1002, 0x6849, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
210 | {0x1002, 0x6850, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
211 | {0x1002, 0x6858, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
212 | {0x1002, 0x6859, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \ | ||
198 | {0x1002, 0x6880, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 213 | {0x1002, 0x6880, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
199 | {0x1002, 0x6888, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ | 214 | {0x1002, 0x6888, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ |
200 | {0x1002, 0x6889, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ | 215 | {0x1002, 0x6889, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ |
@@ -236,6 +251,7 @@ | |||
236 | {0x1002, 0x68f2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ | 251 | {0x1002, 0x68f2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ |
237 | {0x1002, 0x68f8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ | 252 | {0x1002, 0x68f8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ |
238 | {0x1002, 0x68f9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ | 253 | {0x1002, 0x68f9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ |
254 | {0x1002, 0x68fa, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ | ||
239 | {0x1002, 0x68fe, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ | 255 | {0x1002, 0x68fe, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CEDAR|RADEON_NEW_MEMMAP}, \ |
240 | {0x1002, 0x7100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R520|RADEON_NEW_MEMMAP}, \ | 256 | {0x1002, 0x7100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R520|RADEON_NEW_MEMMAP}, \ |
241 | {0x1002, 0x7101, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R520|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 257 | {0x1002, 0x7101, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R520|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
@@ -478,6 +494,8 @@ | |||
478 | {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | 494 | {0x1002, 0x9647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ |
479 | {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | 495 | {0x1002, 0x9648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ |
480 | {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | 496 | {0x1002, 0x964a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ |
497 | {0x1002, 0x964b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
498 | {0x1002, 0x964c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
481 | {0x1002, 0x964e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | 499 | {0x1002, 0x964e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ |
482 | {0x1002, 0x964f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ | 500 | {0x1002, 0x964f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_SUMO|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP},\ |
483 | {0x1002, 0x9710, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | 501 | {0x1002, 0x9710, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ |
@@ -492,6 +510,8 @@ | |||
492 | {0x1002, 0x9805, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | 510 | {0x1002, 0x9805, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ |
493 | {0x1002, 0x9806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | 511 | {0x1002, 0x9806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ |
494 | {0x1002, 0x9807, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | 512 | {0x1002, 0x9807, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ |
513 | {0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
514 | {0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ | ||
495 | {0, 0, 0} | 515 | {0, 0, 0} |
496 | 516 | ||
497 | #define r128_PCI_IDS \ | 517 | #define r128_PCI_IDS \ |
diff --git a/include/drm/exynos_drm.h b/include/drm/exynos_drm.h index 874c4d271328..12050434d57a 100644 --- a/include/drm/exynos_drm.h +++ b/include/drm/exynos_drm.h | |||
@@ -32,13 +32,14 @@ | |||
32 | /** | 32 | /** |
33 | * User-desired buffer creation information structure. | 33 | * User-desired buffer creation information structure. |
34 | * | 34 | * |
35 | * @size: requested size for the object. | 35 | * @size: user-desired memory allocation size. |
36 | * - this size value would be page-aligned internally. | 36 | * - this size value would be page-aligned internally. |
37 | * @flags: user request for setting memory type or cache attributes. | 37 | * @flags: user request for setting memory type or cache attributes. |
38 | * @handle: returned handle for the object. | 38 | * @handle: returned a handle to created gem object. |
39 | * - this handle will be set by gem module of kernel side. | ||
39 | */ | 40 | */ |
40 | struct drm_exynos_gem_create { | 41 | struct drm_exynos_gem_create { |
41 | unsigned int size; | 42 | uint64_t size; |
42 | unsigned int flags; | 43 | unsigned int flags; |
43 | unsigned int handle; | 44 | unsigned int handle; |
44 | }; | 45 | }; |
diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h index b65be6054a18..be94be6d6f17 100644 --- a/include/drm/radeon_drm.h +++ b/include/drm/radeon_drm.h | |||
@@ -874,6 +874,10 @@ struct drm_radeon_gem_pwrite { | |||
874 | 874 | ||
875 | #define RADEON_CHUNK_ID_RELOCS 0x01 | 875 | #define RADEON_CHUNK_ID_RELOCS 0x01 |
876 | #define RADEON_CHUNK_ID_IB 0x02 | 876 | #define RADEON_CHUNK_ID_IB 0x02 |
877 | #define RADEON_CHUNK_ID_FLAGS 0x03 | ||
878 | |||
879 | /* The first dword of RADEON_CHUNK_ID_FLAGS is a uint32 of these flags: */ | ||
880 | #define RADEON_CS_KEEP_TILING_FLAGS 0x01 | ||
877 | 881 | ||
878 | struct drm_radeon_cs_chunk { | 882 | struct drm_radeon_cs_chunk { |
879 | uint32_t chunk_id; | 883 | uint32_t chunk_id; |
diff --git a/include/drm/vmwgfx_drm.h b/include/drm/vmwgfx_drm.h index cd7cd8162ed6..bcb0912afe7a 100644 --- a/include/drm/vmwgfx_drm.h +++ b/include/drm/vmwgfx_drm.h | |||
@@ -54,7 +54,7 @@ | |||
54 | #define DRM_VMW_FENCE_EVENT 17 | 54 | #define DRM_VMW_FENCE_EVENT 17 |
55 | #define DRM_VMW_PRESENT 18 | 55 | #define DRM_VMW_PRESENT 18 |
56 | #define DRM_VMW_PRESENT_READBACK 19 | 56 | #define DRM_VMW_PRESENT_READBACK 19 |
57 | 57 | #define DRM_VMW_UPDATE_LAYOUT 20 | |
58 | 58 | ||
59 | /*************************************************************************/ | 59 | /*************************************************************************/ |
60 | /** | 60 | /** |
@@ -552,31 +552,6 @@ struct drm_vmw_get_3d_cap_arg { | |||
552 | 552 | ||
553 | /*************************************************************************/ | 553 | /*************************************************************************/ |
554 | /** | 554 | /** |
555 | * DRM_VMW_UPDATE_LAYOUT - Update layout | ||
556 | * | ||
557 | * Updates the preferred modes and connection status for connectors. The | ||
558 | * command conisits of one drm_vmw_update_layout_arg pointing out a array | ||
559 | * of num_outputs drm_vmw_rect's. | ||
560 | */ | ||
561 | |||
562 | /** | ||
563 | * struct drm_vmw_update_layout_arg | ||
564 | * | ||
565 | * @num_outputs: number of active | ||
566 | * @rects: pointer to array of drm_vmw_rect | ||
567 | * | ||
568 | * Input argument to the DRM_VMW_UPDATE_LAYOUT Ioctl. | ||
569 | */ | ||
570 | |||
571 | struct drm_vmw_update_layout_arg { | ||
572 | uint32_t num_outputs; | ||
573 | uint32_t pad64; | ||
574 | uint64_t rects; | ||
575 | }; | ||
576 | |||
577 | |||
578 | /*************************************************************************/ | ||
579 | /** | ||
580 | * DRM_VMW_FENCE_WAIT | 555 | * DRM_VMW_FENCE_WAIT |
581 | * | 556 | * |
582 | * Waits for a fence object to signal. The wait is interruptible, so that | 557 | * Waits for a fence object to signal. The wait is interruptible, so that |
@@ -788,4 +763,28 @@ struct drm_vmw_present_readback_arg { | |||
788 | uint64_t clips_ptr; | 763 | uint64_t clips_ptr; |
789 | uint64_t fence_rep; | 764 | uint64_t fence_rep; |
790 | }; | 765 | }; |
766 | |||
767 | /*************************************************************************/ | ||
768 | /** | ||
769 | * DRM_VMW_UPDATE_LAYOUT - Update layout | ||
770 | * | ||
771 | * Updates the preferred modes and connection status for connectors. The | ||
772 | * command consists of one drm_vmw_update_layout_arg pointing to an array | ||
773 | * of num_outputs drm_vmw_rect's. | ||
774 | */ | ||
775 | |||
776 | /** | ||
777 | * struct drm_vmw_update_layout_arg | ||
778 | * | ||
779 | * @num_outputs: number of active connectors | ||
780 | * @rects: pointer to array of drm_vmw_rect cast to an uint64_t | ||
781 | * | ||
782 | * Input argument to the DRM_VMW_UPDATE_LAYOUT Ioctl. | ||
783 | */ | ||
784 | struct drm_vmw_update_layout_arg { | ||
785 | uint32_t num_outputs; | ||
786 | uint32_t pad64; | ||
787 | uint64_t rects; | ||
788 | }; | ||
789 | |||
791 | #endif | 790 | #endif |
diff --git a/include/linux/aio.h b/include/linux/aio.h index 2dcb72bff4b6..2314ad8b3c9c 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h | |||
@@ -117,6 +117,7 @@ struct kiocb { | |||
117 | 117 | ||
118 | struct list_head ki_list; /* the aio core uses this | 118 | struct list_head ki_list; /* the aio core uses this |
119 | * for cancellation */ | 119 | * for cancellation */ |
120 | struct list_head ki_batch; /* batch allocation */ | ||
120 | 121 | ||
121 | /* | 122 | /* |
122 | * If the aio_resfd field of the userspace iocb is not zero, | 123 | * If the aio_resfd field of the userspace iocb is not zero, |
diff --git a/include/linux/amba/pl08x.h b/include/linux/amba/pl08x.h index e6e28f37d8ec..9eabffbc4e50 100644 --- a/include/linux/amba/pl08x.h +++ b/include/linux/amba/pl08x.h | |||
@@ -47,6 +47,9 @@ enum { | |||
47 | * @muxval: a number usually used to poke into some mux regiser to | 47 | * @muxval: a number usually used to poke into some mux regiser to |
48 | * mux in the signal to this channel | 48 | * mux in the signal to this channel |
49 | * @cctl_opt: default options for the channel control register | 49 | * @cctl_opt: default options for the channel control register |
50 | * @device_fc: Flow Controller Settings for ccfg register. Only valid for slave | ||
51 | * channels. Fill with 'true' if peripheral should be flow controller. Direction | ||
52 | * will be selected at Runtime. | ||
50 | * @addr: source/target address in physical memory for this DMA channel, | 53 | * @addr: source/target address in physical memory for this DMA channel, |
51 | * can be the address of a FIFO register for burst requests for example. | 54 | * can be the address of a FIFO register for burst requests for example. |
52 | * This can be left undefined if the PrimeCell API is used for configuring | 55 | * This can be left undefined if the PrimeCell API is used for configuring |
@@ -65,6 +68,7 @@ struct pl08x_channel_data { | |||
65 | int max_signal; | 68 | int max_signal; |
66 | u32 muxval; | 69 | u32 muxval; |
67 | u32 cctl; | 70 | u32 cctl; |
71 | bool device_fc; | ||
68 | dma_addr_t addr; | 72 | dma_addr_t addr; |
69 | bool circular_buffer; | 73 | bool circular_buffer; |
70 | bool single; | 74 | bool single; |
@@ -77,13 +81,11 @@ struct pl08x_channel_data { | |||
77 | * @addr: current address | 81 | * @addr: current address |
78 | * @maxwidth: the maximum width of a transfer on this bus | 82 | * @maxwidth: the maximum width of a transfer on this bus |
79 | * @buswidth: the width of this bus in bytes: 1, 2 or 4 | 83 | * @buswidth: the width of this bus in bytes: 1, 2 or 4 |
80 | * @fill_bytes: bytes required to fill to the next bus memory boundary | ||
81 | */ | 84 | */ |
82 | struct pl08x_bus_data { | 85 | struct pl08x_bus_data { |
83 | dma_addr_t addr; | 86 | dma_addr_t addr; |
84 | u8 maxwidth; | 87 | u8 maxwidth; |
85 | u8 buswidth; | 88 | u8 buswidth; |
86 | size_t fill_bytes; | ||
87 | }; | 89 | }; |
88 | 90 | ||
89 | /** | 91 | /** |
@@ -104,17 +106,35 @@ struct pl08x_phy_chan { | |||
104 | }; | 106 | }; |
105 | 107 | ||
106 | /** | 108 | /** |
109 | * struct pl08x_sg - structure containing data per sg | ||
110 | * @src_addr: src address of sg | ||
111 | * @dst_addr: dst address of sg | ||
112 | * @len: transfer len in bytes | ||
113 | * @node: node for txd's dsg_list | ||
114 | */ | ||
115 | struct pl08x_sg { | ||
116 | dma_addr_t src_addr; | ||
117 | dma_addr_t dst_addr; | ||
118 | size_t len; | ||
119 | struct list_head node; | ||
120 | }; | ||
121 | |||
122 | /** | ||
107 | * struct pl08x_txd - wrapper for struct dma_async_tx_descriptor | 123 | * struct pl08x_txd - wrapper for struct dma_async_tx_descriptor |
124 | * @tx: async tx descriptor | ||
125 | * @node: node for txd list for channels | ||
126 | * @dsg_list: list of children sg's | ||
127 | * @direction: direction of transfer | ||
108 | * @llis_bus: DMA memory address (physical) start for the LLIs | 128 | * @llis_bus: DMA memory address (physical) start for the LLIs |
109 | * @llis_va: virtual memory address start for the LLIs | 129 | * @llis_va: virtual memory address start for the LLIs |
130 | * @cctl: control reg values for current txd | ||
131 | * @ccfg: config reg values for current txd | ||
110 | */ | 132 | */ |
111 | struct pl08x_txd { | 133 | struct pl08x_txd { |
112 | struct dma_async_tx_descriptor tx; | 134 | struct dma_async_tx_descriptor tx; |
113 | struct list_head node; | 135 | struct list_head node; |
136 | struct list_head dsg_list; | ||
114 | enum dma_data_direction direction; | 137 | enum dma_data_direction direction; |
115 | dma_addr_t src_addr; | ||
116 | dma_addr_t dst_addr; | ||
117 | size_t len; | ||
118 | dma_addr_t llis_bus; | 138 | dma_addr_t llis_bus; |
119 | struct pl08x_lli *llis_va; | 139 | struct pl08x_lli *llis_va; |
120 | /* Default cctl value for LLIs */ | 140 | /* Default cctl value for LLIs */ |
diff --git a/include/linux/amba/pl330.h b/include/linux/amba/pl330.h index cbee7de7dd36..d12f077a6daf 100644 --- a/include/linux/amba/pl330.h +++ b/include/linux/amba/pl330.h | |||
@@ -19,12 +19,8 @@ struct dma_pl330_peri { | |||
19 | * Peri_Req i/f of the DMAC that is | 19 | * Peri_Req i/f of the DMAC that is |
20 | * peripheral could be reached from. | 20 | * peripheral could be reached from. |
21 | */ | 21 | */ |
22 | u8 peri_id; /* {0, 31} */ | 22 | u8 peri_id; /* specific dma id */ |
23 | enum pl330_reqtype rqtype; | 23 | enum pl330_reqtype rqtype; |
24 | |||
25 | /* For M->D and D->M Channels */ | ||
26 | int burst_sz; /* in power of 2 */ | ||
27 | dma_addr_t fifo_addr; | ||
28 | }; | 24 | }; |
29 | 25 | ||
30 | struct dma_pl330_platdata { | 26 | struct dma_pl330_platdata { |
diff --git a/include/linux/audit.h b/include/linux/audit.h index 0c8006129fb2..2f81c6f3b630 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -584,14 +584,13 @@ extern int audit_signals; | |||
584 | #ifdef CONFIG_AUDIT | 584 | #ifdef CONFIG_AUDIT |
585 | /* These are defined in audit.c */ | 585 | /* These are defined in audit.c */ |
586 | /* Public API */ | 586 | /* Public API */ |
587 | extern void audit_log(struct audit_context *ctx, gfp_t gfp_mask, | 587 | extern __printf(4, 5) |
588 | int type, const char *fmt, ...) | 588 | void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type, |
589 | __attribute__((format(printf,4,5))); | 589 | const char *fmt, ...); |
590 | 590 | ||
591 | extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type); | 591 | extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type); |
592 | extern void audit_log_format(struct audit_buffer *ab, | 592 | extern __printf(2, 3) |
593 | const char *fmt, ...) | 593 | void audit_log_format(struct audit_buffer *ab, const char *fmt, ...); |
594 | __attribute__((format(printf,2,3))); | ||
595 | extern void audit_log_end(struct audit_buffer *ab); | 594 | extern void audit_log_end(struct audit_buffer *ab); |
596 | extern int audit_string_contains_control(const char *string, | 595 | extern int audit_string_contains_control(const char *string, |
597 | size_t len); | 596 | size_t len); |
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 3b2f9cb82986..b1038bd686ac 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
@@ -40,6 +40,7 @@ typedef int (congested_fn)(void *, int); | |||
40 | enum bdi_stat_item { | 40 | enum bdi_stat_item { |
41 | BDI_RECLAIMABLE, | 41 | BDI_RECLAIMABLE, |
42 | BDI_WRITEBACK, | 42 | BDI_WRITEBACK, |
43 | BDI_DIRTIED, | ||
43 | BDI_WRITTEN, | 44 | BDI_WRITTEN, |
44 | NR_BDI_STAT_ITEMS | 45 | NR_BDI_STAT_ITEMS |
45 | }; | 46 | }; |
@@ -74,10 +75,20 @@ struct backing_dev_info { | |||
74 | struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS]; | 75 | struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS]; |
75 | 76 | ||
76 | unsigned long bw_time_stamp; /* last time write bw is updated */ | 77 | unsigned long bw_time_stamp; /* last time write bw is updated */ |
78 | unsigned long dirtied_stamp; | ||
77 | unsigned long written_stamp; /* pages written at bw_time_stamp */ | 79 | unsigned long written_stamp; /* pages written at bw_time_stamp */ |
78 | unsigned long write_bandwidth; /* the estimated write bandwidth */ | 80 | unsigned long write_bandwidth; /* the estimated write bandwidth */ |
79 | unsigned long avg_write_bandwidth; /* further smoothed write bw */ | 81 | unsigned long avg_write_bandwidth; /* further smoothed write bw */ |
80 | 82 | ||
83 | /* | ||
84 | * The base dirty throttle rate, re-calculated on every 200ms. | ||
85 | * All the bdi tasks' dirty rate will be curbed under it. | ||
86 | * @dirty_ratelimit tracks the estimated @balanced_dirty_ratelimit | ||
87 | * in small steps and is much more smooth/stable than the latter. | ||
88 | */ | ||
89 | unsigned long dirty_ratelimit; | ||
90 | unsigned long balanced_dirty_ratelimit; | ||
91 | |||
81 | struct prop_local_percpu completions; | 92 | struct prop_local_percpu completions; |
82 | int dirty_exceeded; | 93 | int dirty_exceeded; |
83 | 94 | ||
@@ -107,7 +118,8 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent, | |||
107 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); | 118 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); |
108 | void bdi_unregister(struct backing_dev_info *bdi); | 119 | void bdi_unregister(struct backing_dev_info *bdi); |
109 | int bdi_setup_and_register(struct backing_dev_info *, char *, unsigned int); | 120 | int bdi_setup_and_register(struct backing_dev_info *, char *, unsigned int); |
110 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages); | 121 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, |
122 | enum wb_reason reason); | ||
111 | void bdi_start_background_writeback(struct backing_dev_info *bdi); | 123 | void bdi_start_background_writeback(struct backing_dev_info *bdi); |
112 | int bdi_writeback_thread(void *data); | 124 | int bdi_writeback_thread(void *data); |
113 | int bdi_has_dirty_io(struct backing_dev_info *bdi); | 125 | int bdi_has_dirty_io(struct backing_dev_info *bdi); |
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h index 5dbd7055cb86..4d4b59de9467 100644 --- a/include/linux/bcma/bcma.h +++ b/include/linux/bcma/bcma.h | |||
@@ -170,10 +170,9 @@ struct bcma_driver { | |||
170 | }; | 170 | }; |
171 | extern | 171 | extern |
172 | int __bcma_driver_register(struct bcma_driver *drv, struct module *owner); | 172 | int __bcma_driver_register(struct bcma_driver *drv, struct module *owner); |
173 | static inline int bcma_driver_register(struct bcma_driver *drv) | 173 | #define bcma_driver_register(drv) \ |
174 | { | 174 | __bcma_driver_register(drv, THIS_MODULE) |
175 | return __bcma_driver_register(drv, THIS_MODULE); | 175 | |
176 | } | ||
177 | extern void bcma_driver_unregister(struct bcma_driver *drv); | 176 | extern void bcma_driver_unregister(struct bcma_driver *drv); |
178 | 177 | ||
179 | struct bcma_bus { | 178 | struct bcma_bus { |
diff --git a/include/linux/bio.h b/include/linux/bio.h index ce33e6868a2f..847994aef0e9 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
@@ -211,8 +211,8 @@ extern void bio_pair_release(struct bio_pair *dbio); | |||
211 | extern struct bio_set *bioset_create(unsigned int, unsigned int); | 211 | extern struct bio_set *bioset_create(unsigned int, unsigned int); |
212 | extern void bioset_free(struct bio_set *); | 212 | extern void bioset_free(struct bio_set *); |
213 | 213 | ||
214 | extern struct bio *bio_alloc(gfp_t, int); | 214 | extern struct bio *bio_alloc(gfp_t, unsigned int); |
215 | extern struct bio *bio_kmalloc(gfp_t, int); | 215 | extern struct bio *bio_kmalloc(gfp_t, unsigned int); |
216 | extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *); | 216 | extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *); |
217 | extern void bio_put(struct bio *); | 217 | extern void bio_put(struct bio *); |
218 | extern void bio_free(struct bio *, struct bio_set *); | 218 | extern void bio_free(struct bio *, struct bio_set *); |
@@ -269,14 +269,6 @@ extern void bvec_free_bs(struct bio_set *, struct bio_vec *, unsigned int); | |||
269 | extern unsigned int bvec_nr_vecs(unsigned short idx); | 269 | extern unsigned int bvec_nr_vecs(unsigned short idx); |
270 | 270 | ||
271 | /* | 271 | /* |
272 | * Allow queuer to specify a completion CPU for this bio | ||
273 | */ | ||
274 | static inline void bio_set_completion_cpu(struct bio *bio, unsigned int cpu) | ||
275 | { | ||
276 | bio->bi_comp_cpu = cpu; | ||
277 | } | ||
278 | |||
279 | /* | ||
280 | * bio_set is used to allow other portions of the IO system to | 272 | * bio_set is used to allow other portions of the IO system to |
281 | * allocate their own private memory pools for bio and iovec structures. | 273 | * allocate their own private memory pools for bio and iovec structures. |
282 | * These memory pools in turn all allocate from the bio_slab | 274 | * These memory pools in turn all allocate from the bio_slab |
@@ -527,7 +519,11 @@ extern void bio_integrity_init(void); | |||
527 | #define bioset_integrity_create(a, b) (0) | 519 | #define bioset_integrity_create(a, b) (0) |
528 | #define bio_integrity_prep(a) (0) | 520 | #define bio_integrity_prep(a) (0) |
529 | #define bio_integrity_enabled(a) (0) | 521 | #define bio_integrity_enabled(a) (0) |
530 | #define bio_integrity_clone(a, b, c, d) (0) | 522 | static inline int bio_integrity_clone(struct bio *bio, struct bio *bio_src, |
523 | gfp_t gfp_mask, struct bio_set *bs) | ||
524 | { | ||
525 | return 0; | ||
526 | } | ||
531 | #define bioset_integrity_free(a) do { } while (0) | 527 | #define bioset_integrity_free(a) do { } while (0) |
532 | #define bio_integrity_free(a, b) do { } while (0) | 528 | #define bio_integrity_free(a, b) do { } while (0) |
533 | #define bio_integrity_endio(a, b) do { } while (0) | 529 | #define bio_integrity_endio(a, b) do { } while (0) |
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 71fc53bb8f1c..4053cbd4490e 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h | |||
@@ -59,8 +59,6 @@ struct bio { | |||
59 | 59 | ||
60 | unsigned int bi_max_vecs; /* max bvl_vecs we can hold */ | 60 | unsigned int bi_max_vecs; /* max bvl_vecs we can hold */ |
61 | 61 | ||
62 | unsigned int bi_comp_cpu; /* completion CPU */ | ||
63 | |||
64 | atomic_t bi_cnt; /* pin count */ | 62 | atomic_t bi_cnt; /* pin count */ |
65 | 63 | ||
66 | struct bio_vec *bi_io_vec; /* the actual vec list */ | 64 | struct bio_vec *bi_io_vec; /* the actual vec list */ |
@@ -93,11 +91,10 @@ struct bio { | |||
93 | #define BIO_BOUNCED 5 /* bio is a bounce bio */ | 91 | #define BIO_BOUNCED 5 /* bio is a bounce bio */ |
94 | #define BIO_USER_MAPPED 6 /* contains user pages */ | 92 | #define BIO_USER_MAPPED 6 /* contains user pages */ |
95 | #define BIO_EOPNOTSUPP 7 /* not supported */ | 93 | #define BIO_EOPNOTSUPP 7 /* not supported */ |
96 | #define BIO_CPU_AFFINE 8 /* complete bio on same CPU as submitted */ | 94 | #define BIO_NULL_MAPPED 8 /* contains invalid user pages */ |
97 | #define BIO_NULL_MAPPED 9 /* contains invalid user pages */ | 95 | #define BIO_FS_INTEGRITY 9 /* fs owns integrity data, not block layer */ |
98 | #define BIO_FS_INTEGRITY 10 /* fs owns integrity data, not block layer */ | 96 | #define BIO_QUIET 10 /* Make BIO Quiet */ |
99 | #define BIO_QUIET 11 /* Make BIO Quiet */ | 97 | #define BIO_MAPPED_INTEGRITY 11/* integrity metadata has been remapped */ |
100 | #define BIO_MAPPED_INTEGRITY 12/* integrity metadata has been remapped */ | ||
101 | #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) | 98 | #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) |
102 | 99 | ||
103 | /* | 100 | /* |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 7fbaa9103344..94acd8172b5b 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/wait.h> | 14 | #include <linux/wait.h> |
15 | #include <linux/mempool.h> | 15 | #include <linux/mempool.h> |
16 | #include <linux/bio.h> | 16 | #include <linux/bio.h> |
17 | #include <linux/module.h> | ||
18 | #include <linux/stringify.h> | 17 | #include <linux/stringify.h> |
19 | #include <linux/gfp.h> | 18 | #include <linux/gfp.h> |
20 | #include <linux/bsg.h> | 19 | #include <linux/bsg.h> |
@@ -22,6 +21,7 @@ | |||
22 | 21 | ||
23 | #include <asm/scatterlist.h> | 22 | #include <asm/scatterlist.h> |
24 | 23 | ||
24 | struct module; | ||
25 | struct scsi_ioctl_command; | 25 | struct scsi_ioctl_command; |
26 | 26 | ||
27 | struct request_queue; | 27 | struct request_queue; |
@@ -195,7 +195,7 @@ struct request_pm_state | |||
195 | #include <linux/elevator.h> | 195 | #include <linux/elevator.h> |
196 | 196 | ||
197 | typedef void (request_fn_proc) (struct request_queue *q); | 197 | typedef void (request_fn_proc) (struct request_queue *q); |
198 | typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); | 198 | typedef void (make_request_fn) (struct request_queue *q, struct bio *bio); |
199 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); | 199 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); |
200 | typedef void (unprep_rq_fn) (struct request_queue *, struct request *); | 200 | typedef void (unprep_rq_fn) (struct request_queue *, struct request *); |
201 | 201 | ||
@@ -680,6 +680,8 @@ extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t, | |||
680 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, | 680 | extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, |
681 | struct scsi_ioctl_command __user *); | 681 | struct scsi_ioctl_command __user *); |
682 | 682 | ||
683 | extern void blk_queue_bio(struct request_queue *q, struct bio *bio); | ||
684 | |||
683 | /* | 685 | /* |
684 | * A queue has just exitted congestion. Note this in the global counter of | 686 | * A queue has just exitted congestion. Note this in the global counter of |
685 | * congested queues, and wake up anyone who was waiting for requests to be | 687 | * congested queues, and wake up anyone who was waiting for requests to be |
@@ -803,9 +805,6 @@ extern void blk_unprep_request(struct request *); | |||
803 | */ | 805 | */ |
804 | extern struct request_queue *blk_init_queue_node(request_fn_proc *rfn, | 806 | extern struct request_queue *blk_init_queue_node(request_fn_proc *rfn, |
805 | spinlock_t *lock, int node_id); | 807 | spinlock_t *lock, int node_id); |
806 | extern struct request_queue *blk_init_allocated_queue_node(struct request_queue *, | ||
807 | request_fn_proc *, | ||
808 | spinlock_t *, int node_id); | ||
809 | extern struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *); | 808 | extern struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *); |
810 | extern struct request_queue *blk_init_allocated_queue(struct request_queue *, | 809 | extern struct request_queue *blk_init_allocated_queue(struct request_queue *, |
811 | request_fn_proc *, spinlock_t *); | 810 | request_fn_proc *, spinlock_t *); |
@@ -863,16 +862,22 @@ struct request_queue *blk_alloc_queue_node(gfp_t, int); | |||
863 | extern void blk_put_queue(struct request_queue *); | 862 | extern void blk_put_queue(struct request_queue *); |
864 | 863 | ||
865 | /* | 864 | /* |
866 | * Note: Code in between changing the blk_plug list/cb_list or element of such | 865 | * blk_plug permits building a queue of related requests by holding the I/O |
867 | * lists is preemptable, but such code can't do sleep (or be very careful), | 866 | * fragments for a short period. This allows merging of sequential requests |
868 | * otherwise data is corrupted. For details, please check schedule() where | 867 | * into single larger request. As the requests are moved from a per-task list to |
869 | * blk_schedule_flush_plug() is called. | 868 | * the device's request_queue in a batch, this results in improved scalability |
869 | * as the lock contention for request_queue lock is reduced. | ||
870 | * | ||
871 | * It is ok not to disable preemption when adding the request to the plug list | ||
872 | * or when attempting a merge, because blk_schedule_flush_list() will only flush | ||
873 | * the plug list when the task sleeps by itself. For details, please see | ||
874 | * schedule() where blk_schedule_flush_plug() is called. | ||
870 | */ | 875 | */ |
871 | struct blk_plug { | 876 | struct blk_plug { |
872 | unsigned long magic; | 877 | unsigned long magic; /* detect uninitialized use-cases */ |
873 | struct list_head list; | 878 | struct list_head list; /* requests */ |
874 | struct list_head cb_list; | 879 | struct list_head cb_list; /* md requires an unplug callback */ |
875 | unsigned int should_sort; | 880 | unsigned int should_sort; /* list to be sorted before flushing? */ |
876 | }; | 881 | }; |
877 | #define BLK_MAX_REQUEST_COUNT 16 | 882 | #define BLK_MAX_REQUEST_COUNT 16 |
878 | 883 | ||
@@ -1189,20 +1194,6 @@ static inline uint64_t rq_io_start_time_ns(struct request *req) | |||
1189 | } | 1194 | } |
1190 | #endif | 1195 | #endif |
1191 | 1196 | ||
1192 | #ifdef CONFIG_BLK_DEV_THROTTLING | ||
1193 | extern int blk_throtl_init(struct request_queue *q); | ||
1194 | extern void blk_throtl_exit(struct request_queue *q); | ||
1195 | extern int blk_throtl_bio(struct request_queue *q, struct bio **bio); | ||
1196 | #else /* CONFIG_BLK_DEV_THROTTLING */ | ||
1197 | static inline int blk_throtl_bio(struct request_queue *q, struct bio **bio) | ||
1198 | { | ||
1199 | return 0; | ||
1200 | } | ||
1201 | |||
1202 | static inline int blk_throtl_init(struct request_queue *q) { return 0; } | ||
1203 | static inline int blk_throtl_exit(struct request_queue *q) { return 0; } | ||
1204 | #endif /* CONFIG_BLK_DEV_THROTTLING */ | ||
1205 | |||
1206 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ | 1197 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |
1207 | MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) | 1198 | MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) |
1208 | #define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \ | 1199 | #define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \ |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 8e9e4bc6d73b..4d1a0748eaf8 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
@@ -170,7 +170,7 @@ extern void blk_trace_shutdown(struct request_queue *); | |||
170 | extern int do_blk_trace_setup(struct request_queue *q, char *name, | 170 | extern int do_blk_trace_setup(struct request_queue *q, char *name, |
171 | dev_t dev, struct block_device *bdev, | 171 | dev_t dev, struct block_device *bdev, |
172 | struct blk_user_trace_setup *buts); | 172 | struct blk_user_trace_setup *buts); |
173 | extern __attribute__((format(printf, 2, 3))) | 173 | extern __printf(2, 3) |
174 | void __trace_note_message(struct blk_trace *, const char *fmt, ...); | 174 | void __trace_note_message(struct blk_trace *, const char *fmt, ...); |
175 | 175 | ||
176 | /** | 176 | /** |
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index f88eacb111d4..7c05ac202d90 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
@@ -10,6 +10,12 @@ | |||
10 | #include "osdmap.h" | 10 | #include "osdmap.h" |
11 | #include "messenger.h" | 11 | #include "messenger.h" |
12 | 12 | ||
13 | /* | ||
14 | * Maximum object name size | ||
15 | * (must be at least as big as RBD_MAX_MD_NAME_LEN -- currently 100) | ||
16 | */ | ||
17 | #define MAX_OBJ_NAME_SIZE 100 | ||
18 | |||
13 | struct ceph_msg; | 19 | struct ceph_msg; |
14 | struct ceph_snap_context; | 20 | struct ceph_snap_context; |
15 | struct ceph_osd_request; | 21 | struct ceph_osd_request; |
@@ -75,7 +81,7 @@ struct ceph_osd_request { | |||
75 | struct inode *r_inode; /* for use by callbacks */ | 81 | struct inode *r_inode; /* for use by callbacks */ |
76 | void *r_priv; /* ditto */ | 82 | void *r_priv; /* ditto */ |
77 | 83 | ||
78 | char r_oid[40]; /* object name */ | 84 | char r_oid[MAX_OBJ_NAME_SIZE]; /* object name */ |
79 | int r_oid_len; | 85 | int r_oid_len; |
80 | unsigned long r_stamp; /* send OR check time */ | 86 | unsigned long r_stamp; /* send OR check time */ |
81 | 87 | ||
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index da7e4bc34e8c..1b7f9d525013 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -516,7 +516,7 @@ struct cgroup_subsys { | |||
516 | struct list_head sibling; | 516 | struct list_head sibling; |
517 | /* used when use_id == true */ | 517 | /* used when use_id == true */ |
518 | struct idr idr; | 518 | struct idr idr; |
519 | spinlock_t id_lock; | 519 | rwlock_t id_lock; |
520 | 520 | ||
521 | /* should be defined only by modular subsystems */ | 521 | /* should be defined only by modular subsystems */ |
522 | struct module *module; | 522 | struct module *module; |
diff --git a/include/linux/clksrc-dbx500-prcmu.h b/include/linux/clksrc-dbx500-prcmu.h new file mode 100644 index 000000000000..4fb8119c49e4 --- /dev/null +++ b/include/linux/clksrc-dbx500-prcmu.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2011 | ||
3 | * | ||
4 | * License Terms: GNU General Public License v2 | ||
5 | * Author: Mattias Wallin <mattias.wallin@stericsson.com> | ||
6 | * | ||
7 | */ | ||
8 | #ifndef __CLKSRC_DBX500_PRCMU_H | ||
9 | #define __CLKSRC_DBX500_PRCMU_H | ||
10 | |||
11 | #include <linux/init.h> | ||
12 | #include <linux/io.h> | ||
13 | |||
14 | #ifdef CONFIG_CLKSRC_DBX500_PRCMU | ||
15 | void __init clksrc_dbx500_prcmu_init(void __iomem *base); | ||
16 | #else | ||
17 | static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {} | ||
18 | #endif | ||
19 | |||
20 | #endif | ||
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 139c4db55f17..c86c940d1de3 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
@@ -156,6 +156,7 @@ extern u64 timecounter_cyc2time(struct timecounter *tc, | |||
156 | * @mult: cycle to nanosecond multiplier | 156 | * @mult: cycle to nanosecond multiplier |
157 | * @shift: cycle to nanosecond divisor (power of two) | 157 | * @shift: cycle to nanosecond divisor (power of two) |
158 | * @max_idle_ns: max idle time permitted by the clocksource (nsecs) | 158 | * @max_idle_ns: max idle time permitted by the clocksource (nsecs) |
159 | * @maxadj maximum adjustment value to mult (~11%) | ||
159 | * @flags: flags describing special properties | 160 | * @flags: flags describing special properties |
160 | * @archdata: arch-specific data | 161 | * @archdata: arch-specific data |
161 | * @suspend: suspend function for the clocksource, if necessary | 162 | * @suspend: suspend function for the clocksource, if necessary |
@@ -172,7 +173,7 @@ struct clocksource { | |||
172 | u32 mult; | 173 | u32 mult; |
173 | u32 shift; | 174 | u32 shift; |
174 | u64 max_idle_ns; | 175 | u64 max_idle_ns; |
175 | 176 | u32 maxadj; | |
176 | #ifdef CONFIG_ARCH_CLOCKSOURCE_DATA | 177 | #ifdef CONFIG_ARCH_CLOCKSOURCE_DATA |
177 | struct arch_clocksource_data archdata; | 178 | struct arch_clocksource_data archdata; |
178 | #endif | 179 | #endif |
diff --git a/include/linux/compaction.h b/include/linux/compaction.h index cc9f7a428649..bb2bbdbe5464 100644 --- a/include/linux/compaction.h +++ b/include/linux/compaction.h | |||
@@ -24,8 +24,6 @@ extern unsigned long try_to_compact_pages(struct zonelist *zonelist, | |||
24 | int order, gfp_t gfp_mask, nodemask_t *mask, | 24 | int order, gfp_t gfp_mask, nodemask_t *mask, |
25 | bool sync); | 25 | bool sync); |
26 | extern unsigned long compaction_suitable(struct zone *zone, int order); | 26 | extern unsigned long compaction_suitable(struct zone *zone, int order); |
27 | extern unsigned long compact_zone_order(struct zone *zone, int order, | ||
28 | gfp_t gfp_mask, bool sync); | ||
29 | 27 | ||
30 | /* Do not skip compaction more than 64 times */ | 28 | /* Do not skip compaction more than 64 times */ |
31 | #define COMPACT_MAX_DEFER_SHIFT 6 | 29 | #define COMPACT_MAX_DEFER_SHIFT 6 |
@@ -69,12 +67,6 @@ static inline unsigned long compaction_suitable(struct zone *zone, int order) | |||
69 | return COMPACT_SKIPPED; | 67 | return COMPACT_SKIPPED; |
70 | } | 68 | } |
71 | 69 | ||
72 | static inline unsigned long compact_zone_order(struct zone *zone, int order, | ||
73 | gfp_t gfp_mask, bool sync) | ||
74 | { | ||
75 | return COMPACT_CONTINUE; | ||
76 | } | ||
77 | |||
78 | static inline void defer_compaction(struct zone *zone) | 70 | static inline void defer_compaction(struct zone *zone) |
79 | { | 71 | { |
80 | } | 72 | } |
diff --git a/include/linux/compat.h b/include/linux/compat.h index c6e7523bf765..66ed067fb729 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -547,9 +547,19 @@ extern ssize_t compat_rw_copy_check_uvector(int type, | |||
547 | const struct compat_iovec __user *uvector, | 547 | const struct compat_iovec __user *uvector, |
548 | unsigned long nr_segs, | 548 | unsigned long nr_segs, |
549 | unsigned long fast_segs, struct iovec *fast_pointer, | 549 | unsigned long fast_segs, struct iovec *fast_pointer, |
550 | struct iovec **ret_pointer); | 550 | struct iovec **ret_pointer, |
551 | int check_access); | ||
551 | 552 | ||
552 | extern void __user *compat_alloc_user_space(unsigned long len); | 553 | extern void __user *compat_alloc_user_space(unsigned long len); |
553 | 554 | ||
555 | asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid, | ||
556 | const struct compat_iovec __user *lvec, | ||
557 | unsigned long liovcnt, const struct compat_iovec __user *rvec, | ||
558 | unsigned long riovcnt, unsigned long flags); | ||
559 | asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid, | ||
560 | const struct compat_iovec __user *lvec, | ||
561 | unsigned long liovcnt, const struct compat_iovec __user *rvec, | ||
562 | unsigned long riovcnt, unsigned long flags); | ||
563 | |||
554 | #endif /* CONFIG_COMPAT */ | 564 | #endif /* CONFIG_COMPAT */ |
555 | #endif /* _LINUX_COMPAT_H */ | 565 | #endif /* _LINUX_COMPAT_H */ |
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index b1a635acf72a..6cb60fd2ea84 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
@@ -196,13 +196,9 @@ static inline void cpu_hotplug_driver_unlock(void) | |||
196 | #endif /* CONFIG_HOTPLUG_CPU */ | 196 | #endif /* CONFIG_HOTPLUG_CPU */ |
197 | 197 | ||
198 | #ifdef CONFIG_PM_SLEEP_SMP | 198 | #ifdef CONFIG_PM_SLEEP_SMP |
199 | extern int suspend_cpu_hotplug; | ||
200 | |||
201 | extern int disable_nonboot_cpus(void); | 199 | extern int disable_nonboot_cpus(void); |
202 | extern void enable_nonboot_cpus(void); | 200 | extern void enable_nonboot_cpus(void); |
203 | #else /* !CONFIG_PM_SLEEP_SMP */ | 201 | #else /* !CONFIG_PM_SLEEP_SMP */ |
204 | #define suspend_cpu_hotplug 0 | ||
205 | |||
206 | static inline int disable_nonboot_cpus(void) { return 0; } | 202 | static inline int disable_nonboot_cpus(void) { return 0; } |
207 | static inline void enable_nonboot_cpus(void) {} | 203 | static inline void enable_nonboot_cpus(void) {} |
208 | #endif /* !CONFIG_PM_SLEEP_SMP */ | 204 | #endif /* !CONFIG_PM_SLEEP_SMP */ |
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index b51629e15cfc..7408af843b8a 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <linux/percpu.h> | 14 | #include <linux/percpu.h> |
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/module.h> | ||
17 | #include <linux/kobject.h> | 16 | #include <linux/kobject.h> |
18 | #include <linux/completion.h> | 17 | #include <linux/completion.h> |
19 | 18 | ||
@@ -21,58 +20,65 @@ | |||
21 | #define CPUIDLE_NAME_LEN 16 | 20 | #define CPUIDLE_NAME_LEN 16 |
22 | #define CPUIDLE_DESC_LEN 32 | 21 | #define CPUIDLE_DESC_LEN 32 |
23 | 22 | ||
23 | struct module; | ||
24 | |||
24 | struct cpuidle_device; | 25 | struct cpuidle_device; |
26 | struct cpuidle_driver; | ||
25 | 27 | ||
26 | 28 | ||
27 | /**************************** | 29 | /**************************** |
28 | * CPUIDLE DEVICE INTERFACE * | 30 | * CPUIDLE DEVICE INTERFACE * |
29 | ****************************/ | 31 | ****************************/ |
30 | 32 | ||
33 | struct cpuidle_state_usage { | ||
34 | void *driver_data; | ||
35 | |||
36 | unsigned long long usage; | ||
37 | unsigned long long time; /* in US */ | ||
38 | }; | ||
39 | |||
31 | struct cpuidle_state { | 40 | struct cpuidle_state { |
32 | char name[CPUIDLE_NAME_LEN]; | 41 | char name[CPUIDLE_NAME_LEN]; |
33 | char desc[CPUIDLE_DESC_LEN]; | 42 | char desc[CPUIDLE_DESC_LEN]; |
34 | void *driver_data; | ||
35 | 43 | ||
36 | unsigned int flags; | 44 | unsigned int flags; |
37 | unsigned int exit_latency; /* in US */ | 45 | unsigned int exit_latency; /* in US */ |
38 | unsigned int power_usage; /* in mW */ | 46 | unsigned int power_usage; /* in mW */ |
39 | unsigned int target_residency; /* in US */ | 47 | unsigned int target_residency; /* in US */ |
40 | 48 | ||
41 | unsigned long long usage; | ||
42 | unsigned long long time; /* in US */ | ||
43 | |||
44 | int (*enter) (struct cpuidle_device *dev, | 49 | int (*enter) (struct cpuidle_device *dev, |
45 | struct cpuidle_state *state); | 50 | struct cpuidle_driver *drv, |
51 | int index); | ||
46 | }; | 52 | }; |
47 | 53 | ||
48 | /* Idle State Flags */ | 54 | /* Idle State Flags */ |
49 | #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */ | 55 | #define CPUIDLE_FLAG_TIME_VALID (0x01) /* is residency time measurable? */ |
50 | #define CPUIDLE_FLAG_IGNORE (0x100) /* ignore during this idle period */ | ||
51 | 56 | ||
52 | #define CPUIDLE_DRIVER_FLAGS_MASK (0xFFFF0000) | 57 | #define CPUIDLE_DRIVER_FLAGS_MASK (0xFFFF0000) |
53 | 58 | ||
54 | /** | 59 | /** |
55 | * cpuidle_get_statedata - retrieves private driver state data | 60 | * cpuidle_get_statedata - retrieves private driver state data |
56 | * @state: the state | 61 | * @st_usage: the state usage statistics |
57 | */ | 62 | */ |
58 | static inline void * cpuidle_get_statedata(struct cpuidle_state *state) | 63 | static inline void *cpuidle_get_statedata(struct cpuidle_state_usage *st_usage) |
59 | { | 64 | { |
60 | return state->driver_data; | 65 | return st_usage->driver_data; |
61 | } | 66 | } |
62 | 67 | ||
63 | /** | 68 | /** |
64 | * cpuidle_set_statedata - stores private driver state data | 69 | * cpuidle_set_statedata - stores private driver state data |
65 | * @state: the state | 70 | * @st_usage: the state usage statistics |
66 | * @data: the private data | 71 | * @data: the private data |
67 | */ | 72 | */ |
68 | static inline void | 73 | static inline void |
69 | cpuidle_set_statedata(struct cpuidle_state *state, void *data) | 74 | cpuidle_set_statedata(struct cpuidle_state_usage *st_usage, void *data) |
70 | { | 75 | { |
71 | state->driver_data = data; | 76 | st_usage->driver_data = data; |
72 | } | 77 | } |
73 | 78 | ||
74 | struct cpuidle_state_kobj { | 79 | struct cpuidle_state_kobj { |
75 | struct cpuidle_state *state; | 80 | struct cpuidle_state *state; |
81 | struct cpuidle_state_usage *state_usage; | ||
76 | struct completion kobj_unregister; | 82 | struct completion kobj_unregister; |
77 | struct kobject kobj; | 83 | struct kobject kobj; |
78 | }; | 84 | }; |
@@ -80,22 +86,17 @@ struct cpuidle_state_kobj { | |||
80 | struct cpuidle_device { | 86 | struct cpuidle_device { |
81 | unsigned int registered:1; | 87 | unsigned int registered:1; |
82 | unsigned int enabled:1; | 88 | unsigned int enabled:1; |
83 | unsigned int power_specified:1; | ||
84 | unsigned int cpu; | 89 | unsigned int cpu; |
85 | 90 | ||
86 | int last_residency; | 91 | int last_residency; |
87 | int state_count; | 92 | int state_count; |
88 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; | 93 | struct cpuidle_state_usage states_usage[CPUIDLE_STATE_MAX]; |
89 | struct cpuidle_state_kobj *kobjs[CPUIDLE_STATE_MAX]; | 94 | struct cpuidle_state_kobj *kobjs[CPUIDLE_STATE_MAX]; |
90 | struct cpuidle_state *last_state; | ||
91 | 95 | ||
92 | struct list_head device_list; | 96 | struct list_head device_list; |
93 | struct kobject kobj; | 97 | struct kobject kobj; |
94 | struct completion kobj_unregister; | 98 | struct completion kobj_unregister; |
95 | void *governor_data; | 99 | void *governor_data; |
96 | struct cpuidle_state *safe_state; | ||
97 | |||
98 | int (*prepare) (struct cpuidle_device *dev); | ||
99 | }; | 100 | }; |
100 | 101 | ||
101 | DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices); | 102 | DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices); |
@@ -119,6 +120,11 @@ static inline int cpuidle_get_last_residency(struct cpuidle_device *dev) | |||
119 | struct cpuidle_driver { | 120 | struct cpuidle_driver { |
120 | char name[CPUIDLE_NAME_LEN]; | 121 | char name[CPUIDLE_NAME_LEN]; |
121 | struct module *owner; | 122 | struct module *owner; |
123 | |||
124 | unsigned int power_specified:1; | ||
125 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; | ||
126 | int state_count; | ||
127 | int safe_state_index; | ||
122 | }; | 128 | }; |
123 | 129 | ||
124 | #ifdef CONFIG_CPU_IDLE | 130 | #ifdef CONFIG_CPU_IDLE |
@@ -165,11 +171,14 @@ struct cpuidle_governor { | |||
165 | struct list_head governor_list; | 171 | struct list_head governor_list; |
166 | unsigned int rating; | 172 | unsigned int rating; |
167 | 173 | ||
168 | int (*enable) (struct cpuidle_device *dev); | 174 | int (*enable) (struct cpuidle_driver *drv, |
169 | void (*disable) (struct cpuidle_device *dev); | 175 | struct cpuidle_device *dev); |
176 | void (*disable) (struct cpuidle_driver *drv, | ||
177 | struct cpuidle_device *dev); | ||
170 | 178 | ||
171 | int (*select) (struct cpuidle_device *dev); | 179 | int (*select) (struct cpuidle_driver *drv, |
172 | void (*reflect) (struct cpuidle_device *dev); | 180 | struct cpuidle_device *dev); |
181 | void (*reflect) (struct cpuidle_device *dev, int index); | ||
173 | 182 | ||
174 | struct module *owner; | 183 | struct module *owner; |
175 | }; | 184 | }; |
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h index 74054074e876..5c4abce94ad1 100644 --- a/include/linux/crash_dump.h +++ b/include/linux/crash_dump.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #define ELFCORE_ADDR_ERR (-2ULL) | 10 | #define ELFCORE_ADDR_ERR (-2ULL) |
11 | 11 | ||
12 | extern unsigned long long elfcorehdr_addr; | 12 | extern unsigned long long elfcorehdr_addr; |
13 | extern unsigned long long elfcorehdr_size; | ||
13 | 14 | ||
14 | extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, | 15 | extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, |
15 | unsigned long, int); | 16 | unsigned long, int); |
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index e5e468e9133d..8a94217b298e 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -18,7 +18,6 @@ | |||
18 | #define _LINUX_CRYPTO_H | 18 | #define _LINUX_CRYPTO_H |
19 | 19 | ||
20 | #include <linux/atomic.h> | 20 | #include <linux/atomic.h> |
21 | #include <linux/module.h> | ||
22 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
23 | #include <linux/list.h> | 22 | #include <linux/list.h> |
24 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
@@ -72,6 +71,11 @@ | |||
72 | #define CRYPTO_ALG_TESTED 0x00000400 | 71 | #define CRYPTO_ALG_TESTED 0x00000400 |
73 | 72 | ||
74 | /* | 73 | /* |
74 | * Set if the algorithm is an instance that is build from templates. | ||
75 | */ | ||
76 | #define CRYPTO_ALG_INSTANCE 0x00000800 | ||
77 | |||
78 | /* | ||
75 | * Transform masks and values (for crt_flags). | 79 | * Transform masks and values (for crt_flags). |
76 | */ | 80 | */ |
77 | #define CRYPTO_TFM_REQ_MASK 0x000fff00 | 81 | #define CRYPTO_TFM_REQ_MASK 0x000fff00 |
@@ -505,11 +509,6 @@ static inline int crypto_tfm_alg_priority(struct crypto_tfm *tfm) | |||
505 | return tfm->__crt_alg->cra_priority; | 509 | return tfm->__crt_alg->cra_priority; |
506 | } | 510 | } |
507 | 511 | ||
508 | static inline const char *crypto_tfm_alg_modname(struct crypto_tfm *tfm) | ||
509 | { | ||
510 | return module_name(tfm->__crt_alg->cra_module); | ||
511 | } | ||
512 | |||
513 | static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) | 512 | static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) |
514 | { | 513 | { |
515 | return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK; | 514 | return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK; |
diff --git a/include/linux/cryptouser.h b/include/linux/cryptouser.h new file mode 100644 index 000000000000..532fb58f16bf --- /dev/null +++ b/include/linux/cryptouser.h | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * Crypto user configuration API. | ||
3 | * | ||
4 | * Copyright (C) 2011 secunet Security Networks AG | ||
5 | * Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms and conditions of the GNU General Public License, | ||
9 | * version 2, as published by the Free Software Foundation. | ||
10 | * | ||
11 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
14 | * more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License along with | ||
17 | * this program; if not, write to the Free Software Foundation, Inc., | ||
18 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
19 | */ | ||
20 | |||
21 | /* Netlink configuration messages. */ | ||
22 | enum { | ||
23 | CRYPTO_MSG_BASE = 0x10, | ||
24 | CRYPTO_MSG_NEWALG = 0x10, | ||
25 | CRYPTO_MSG_DELALG, | ||
26 | CRYPTO_MSG_UPDATEALG, | ||
27 | CRYPTO_MSG_GETALG, | ||
28 | __CRYPTO_MSG_MAX | ||
29 | }; | ||
30 | #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1) | ||
31 | #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE) | ||
32 | |||
33 | #define CRYPTO_MAX_NAME CRYPTO_MAX_ALG_NAME | ||
34 | |||
35 | /* Netlink message attributes. */ | ||
36 | enum crypto_attr_type_t { | ||
37 | CRYPTOCFGA_UNSPEC, | ||
38 | CRYPTOCFGA_PRIORITY_VAL, /* __u32 */ | ||
39 | CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */ | ||
40 | CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */ | ||
41 | CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */ | ||
42 | CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */ | ||
43 | CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */ | ||
44 | CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */ | ||
45 | CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */ | ||
46 | __CRYPTOCFGA_MAX | ||
47 | |||
48 | #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1) | ||
49 | }; | ||
50 | |||
51 | struct crypto_user_alg { | ||
52 | char cru_name[CRYPTO_MAX_ALG_NAME]; | ||
53 | char cru_driver_name[CRYPTO_MAX_ALG_NAME]; | ||
54 | char cru_module_name[CRYPTO_MAX_ALG_NAME]; | ||
55 | __u32 cru_type; | ||
56 | __u32 cru_mask; | ||
57 | __u32 cru_refcnt; | ||
58 | __u32 cru_flags; | ||
59 | }; | ||
60 | |||
61 | struct crypto_report_larval { | ||
62 | char type[CRYPTO_MAX_NAME]; | ||
63 | }; | ||
64 | |||
65 | struct crypto_report_hash { | ||
66 | char type[CRYPTO_MAX_NAME]; | ||
67 | unsigned int blocksize; | ||
68 | unsigned int digestsize; | ||
69 | }; | ||
70 | |||
71 | struct crypto_report_cipher { | ||
72 | char type[CRYPTO_MAX_ALG_NAME]; | ||
73 | unsigned int blocksize; | ||
74 | unsigned int min_keysize; | ||
75 | unsigned int max_keysize; | ||
76 | }; | ||
77 | |||
78 | struct crypto_report_blkcipher { | ||
79 | char type[CRYPTO_MAX_NAME]; | ||
80 | char geniv[CRYPTO_MAX_NAME]; | ||
81 | unsigned int blocksize; | ||
82 | unsigned int min_keysize; | ||
83 | unsigned int max_keysize; | ||
84 | unsigned int ivsize; | ||
85 | }; | ||
86 | |||
87 | struct crypto_report_aead { | ||
88 | char type[CRYPTO_MAX_NAME]; | ||
89 | char geniv[CRYPTO_MAX_NAME]; | ||
90 | unsigned int blocksize; | ||
91 | unsigned int maxauthsize; | ||
92 | unsigned int ivsize; | ||
93 | }; | ||
94 | |||
95 | struct crypto_report_comp { | ||
96 | char type[CRYPTO_MAX_NAME]; | ||
97 | }; | ||
98 | |||
99 | struct crypto_report_rng { | ||
100 | char type[CRYPTO_MAX_NAME]; | ||
101 | unsigned int seedsize; | ||
102 | }; | ||
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 62157c03caf7..ed9f74f6c519 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
@@ -165,6 +165,7 @@ struct dentry_operations { | |||
165 | unsigned int, const char *, const struct qstr *); | 165 | unsigned int, const char *, const struct qstr *); |
166 | int (*d_delete)(const struct dentry *); | 166 | int (*d_delete)(const struct dentry *); |
167 | void (*d_release)(struct dentry *); | 167 | void (*d_release)(struct dentry *); |
168 | void (*d_prune)(struct dentry *); | ||
168 | void (*d_iput)(struct dentry *, struct inode *); | 169 | void (*d_iput)(struct dentry *, struct inode *); |
169 | char *(*d_dname)(struct dentry *, char *, int); | 170 | char *(*d_dname)(struct dentry *, char *, int); |
170 | struct vfsmount *(*d_automount)(struct path *); | 171 | struct vfsmount *(*d_automount)(struct path *); |
@@ -184,8 +185,9 @@ struct dentry_operations { | |||
184 | #define DCACHE_OP_COMPARE 0x0002 | 185 | #define DCACHE_OP_COMPARE 0x0002 |
185 | #define DCACHE_OP_REVALIDATE 0x0004 | 186 | #define DCACHE_OP_REVALIDATE 0x0004 |
186 | #define DCACHE_OP_DELETE 0x0008 | 187 | #define DCACHE_OP_DELETE 0x0008 |
188 | #define DCACHE_OP_PRUNE 0x0010 | ||
187 | 189 | ||
188 | #define DCACHE_DISCONNECTED 0x0010 | 190 | #define DCACHE_DISCONNECTED 0x0020 |
189 | /* This dentry is possibly not currently connected to the dcache tree, in | 191 | /* This dentry is possibly not currently connected to the dcache tree, in |
190 | * which case its parent will either be itself, or will have this flag as | 192 | * which case its parent will either be itself, or will have this flag as |
191 | * well. nfsd will not use a dentry with this bit set, but will first | 193 | * well. nfsd will not use a dentry with this bit set, but will first |
@@ -196,8 +198,8 @@ struct dentry_operations { | |||
196 | * dentry into place and return that dentry rather than the passed one, | 198 | * dentry into place and return that dentry rather than the passed one, |
197 | * typically using d_splice_alias. */ | 199 | * typically using d_splice_alias. */ |
198 | 200 | ||
199 | #define DCACHE_REFERENCED 0x0020 /* Recently used, don't discard. */ | 201 | #define DCACHE_REFERENCED 0x0040 /* Recently used, don't discard. */ |
200 | #define DCACHE_RCUACCESS 0x0040 /* Entry has ever been RCU-visible */ | 202 | #define DCACHE_RCUACCESS 0x0080 /* Entry has ever been RCU-visible */ |
201 | 203 | ||
202 | #define DCACHE_CANT_MOUNT 0x0100 | 204 | #define DCACHE_CANT_MOUNT 0x0100 |
203 | #define DCACHE_GENOCIDE 0x0200 | 205 | #define DCACHE_GENOCIDE 0x0200 |
@@ -337,7 +339,8 @@ extern int d_validate(struct dentry *, struct dentry *); | |||
337 | */ | 339 | */ |
338 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); | 340 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); |
339 | 341 | ||
340 | extern char *__d_path(const struct path *path, struct path *root, char *, int); | 342 | extern char *__d_path(const struct path *, const struct path *, char *, int); |
343 | extern char *d_absolute_path(const struct path *, char *, int); | ||
341 | extern char *d_path(const struct path *, char *, int); | 344 | extern char *d_path(const struct path *, char *, int); |
342 | extern char *d_path_with_unreachable(const struct path *, char *, int); | 345 | extern char *d_path_with_unreachable(const struct path *, char *, int); |
343 | extern char *dentry_path_raw(struct dentry *, char *, int); | 346 | extern char *dentry_path_raw(struct dentry *, char *, int); |
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index afb94583960c..98ce8124b1cc 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h | |||
@@ -41,7 +41,7 @@ struct devfreq_dev_status { | |||
41 | unsigned long total_time; | 41 | unsigned long total_time; |
42 | unsigned long busy_time; | 42 | unsigned long busy_time; |
43 | unsigned long current_frequency; | 43 | unsigned long current_frequency; |
44 | void *private_date; | 44 | void *private_data; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | /** | 47 | /** |
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 99e3e50b5c57..98f34b886f95 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
@@ -10,6 +10,7 @@ | |||
10 | 10 | ||
11 | #include <linux/bio.h> | 11 | #include <linux/bio.h> |
12 | #include <linux/blkdev.h> | 12 | #include <linux/blkdev.h> |
13 | #include <linux/ratelimit.h> | ||
13 | 14 | ||
14 | struct dm_dev; | 15 | struct dm_dev; |
15 | struct dm_target; | 16 | struct dm_target; |
@@ -127,10 +128,6 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d); | |||
127 | * Information about a target type | 128 | * Information about a target type |
128 | */ | 129 | */ |
129 | 130 | ||
130 | /* | ||
131 | * Target features | ||
132 | */ | ||
133 | |||
134 | struct target_type { | 131 | struct target_type { |
135 | uint64_t features; | 132 | uint64_t features; |
136 | const char *name; | 133 | const char *name; |
@@ -159,6 +156,30 @@ struct target_type { | |||
159 | struct list_head list; | 156 | struct list_head list; |
160 | }; | 157 | }; |
161 | 158 | ||
159 | /* | ||
160 | * Target features | ||
161 | */ | ||
162 | |||
163 | /* | ||
164 | * Any table that contains an instance of this target must have only one. | ||
165 | */ | ||
166 | #define DM_TARGET_SINGLETON 0x00000001 | ||
167 | #define dm_target_needs_singleton(type) ((type)->features & DM_TARGET_SINGLETON) | ||
168 | |||
169 | /* | ||
170 | * Indicates that a target does not support read-only devices. | ||
171 | */ | ||
172 | #define DM_TARGET_ALWAYS_WRITEABLE 0x00000002 | ||
173 | #define dm_target_always_writeable(type) \ | ||
174 | ((type)->features & DM_TARGET_ALWAYS_WRITEABLE) | ||
175 | |||
176 | /* | ||
177 | * Any device that contains a table with an instance of this target may never | ||
178 | * have tables containing any different target type. | ||
179 | */ | ||
180 | #define DM_TARGET_IMMUTABLE 0x00000004 | ||
181 | #define dm_target_is_immutable(type) ((type)->features & DM_TARGET_IMMUTABLE) | ||
182 | |||
162 | struct dm_target { | 183 | struct dm_target { |
163 | struct dm_table *table; | 184 | struct dm_table *table; |
164 | struct target_type *type; | 185 | struct target_type *type; |
@@ -375,6 +396,14 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
375 | *---------------------------------------------------------------*/ | 396 | *---------------------------------------------------------------*/ |
376 | #define DM_NAME "device-mapper" | 397 | #define DM_NAME "device-mapper" |
377 | 398 | ||
399 | #ifdef CONFIG_PRINTK | ||
400 | extern struct ratelimit_state dm_ratelimit_state; | ||
401 | |||
402 | #define dm_ratelimit() __ratelimit(&dm_ratelimit_state) | ||
403 | #else | ||
404 | #define dm_ratelimit() 0 | ||
405 | #endif | ||
406 | |||
378 | #define DMCRIT(f, arg...) \ | 407 | #define DMCRIT(f, arg...) \ |
379 | printk(KERN_CRIT DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | 408 | printk(KERN_CRIT DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) |
380 | 409 | ||
@@ -382,7 +411,7 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
382 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | 411 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) |
383 | #define DMERR_LIMIT(f, arg...) \ | 412 | #define DMERR_LIMIT(f, arg...) \ |
384 | do { \ | 413 | do { \ |
385 | if (printk_ratelimit()) \ | 414 | if (dm_ratelimit()) \ |
386 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " \ | 415 | printk(KERN_ERR DM_NAME ": " DM_MSG_PREFIX ": " \ |
387 | f "\n", ## arg); \ | 416 | f "\n", ## arg); \ |
388 | } while (0) | 417 | } while (0) |
@@ -391,7 +420,7 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
391 | printk(KERN_WARNING DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | 420 | printk(KERN_WARNING DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) |
392 | #define DMWARN_LIMIT(f, arg...) \ | 421 | #define DMWARN_LIMIT(f, arg...) \ |
393 | do { \ | 422 | do { \ |
394 | if (printk_ratelimit()) \ | 423 | if (dm_ratelimit()) \ |
395 | printk(KERN_WARNING DM_NAME ": " DM_MSG_PREFIX ": " \ | 424 | printk(KERN_WARNING DM_NAME ": " DM_MSG_PREFIX ": " \ |
396 | f "\n", ## arg); \ | 425 | f "\n", ## arg); \ |
397 | } while (0) | 426 | } while (0) |
@@ -400,7 +429,7 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
400 | printk(KERN_INFO DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) | 429 | printk(KERN_INFO DM_NAME ": " DM_MSG_PREFIX ": " f "\n", ## arg) |
401 | #define DMINFO_LIMIT(f, arg...) \ | 430 | #define DMINFO_LIMIT(f, arg...) \ |
402 | do { \ | 431 | do { \ |
403 | if (printk_ratelimit()) \ | 432 | if (dm_ratelimit()) \ |
404 | printk(KERN_INFO DM_NAME ": " DM_MSG_PREFIX ": " f \ | 433 | printk(KERN_INFO DM_NAME ": " DM_MSG_PREFIX ": " f \ |
405 | "\n", ## arg); \ | 434 | "\n", ## arg); \ |
406 | } while (0) | 435 | } while (0) |
@@ -410,7 +439,7 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size); | |||
410 | printk(KERN_DEBUG DM_NAME ": " DM_MSG_PREFIX " DEBUG: " f "\n", ## arg) | 439 | printk(KERN_DEBUG DM_NAME ": " DM_MSG_PREFIX " DEBUG: " f "\n", ## arg) |
411 | # define DMDEBUG_LIMIT(f, arg...) \ | 440 | # define DMDEBUG_LIMIT(f, arg...) \ |
412 | do { \ | 441 | do { \ |
413 | if (printk_ratelimit()) \ | 442 | if (dm_ratelimit()) \ |
414 | printk(KERN_DEBUG DM_NAME ": " DM_MSG_PREFIX ": " f \ | 443 | printk(KERN_DEBUG DM_NAME ": " DM_MSG_PREFIX ": " f \ |
415 | "\n", ## arg); \ | 444 | "\n", ## arg); \ |
416 | } while (0) | 445 | } while (0) |
diff --git a/include/linux/device.h b/include/linux/device.h index 85e78fc7d7fd..3136ede5a1e1 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/lockdep.h> | 20 | #include <linux/lockdep.h> |
21 | #include <linux/compiler.h> | 21 | #include <linux/compiler.h> |
22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
23 | #include <linux/module.h> | 23 | #include <linux/mutex.h> |
24 | #include <linux/pm.h> | 24 | #include <linux/pm.h> |
25 | #include <linux/atomic.h> | 25 | #include <linux/atomic.h> |
26 | #include <asm/device.h> | 26 | #include <asm/device.h> |
@@ -29,6 +29,7 @@ struct device; | |||
29 | struct device_private; | 29 | struct device_private; |
30 | struct device_driver; | 30 | struct device_driver; |
31 | struct driver_private; | 31 | struct driver_private; |
32 | struct module; | ||
32 | struct class; | 33 | struct class; |
33 | struct subsys_private; | 34 | struct subsys_private; |
34 | struct bus_type; | 35 | struct bus_type; |
@@ -68,7 +69,7 @@ extern void bus_remove_file(struct bus_type *, struct bus_attribute *); | |||
68 | * @resume: Called to bring a device on this bus out of sleep mode. | 69 | * @resume: Called to bring a device on this bus out of sleep mode. |
69 | * @pm: Power management operations of this bus, callback the specific | 70 | * @pm: Power management operations of this bus, callback the specific |
70 | * device driver's pm-ops. | 71 | * device driver's pm-ops. |
71 | * @iommu_ops IOMMU specific operations for this bus, used to attach IOMMU | 72 | * @iommu_ops: IOMMU specific operations for this bus, used to attach IOMMU |
72 | * driver implementations to a bus and allow the driver to do | 73 | * driver implementations to a bus and allow the driver to do |
73 | * bus-specific setup | 74 | * bus-specific setup |
74 | * @p: The private data of the driver core, only the driver core can | 75 | * @p: The private data of the driver core, only the driver core can |
@@ -622,8 +623,8 @@ static inline const char *dev_name(const struct device *dev) | |||
622 | return kobject_name(&dev->kobj); | 623 | return kobject_name(&dev->kobj); |
623 | } | 624 | } |
624 | 625 | ||
625 | extern int dev_set_name(struct device *dev, const char *name, ...) | 626 | extern __printf(2, 3) |
626 | __attribute__((format(printf, 2, 3))); | 627 | int dev_set_name(struct device *dev, const char *name, ...); |
627 | 628 | ||
628 | #ifdef CONFIG_NUMA | 629 | #ifdef CONFIG_NUMA |
629 | static inline int dev_to_node(struct device *dev) | 630 | static inline int dev_to_node(struct device *dev) |
@@ -681,6 +682,11 @@ static inline bool device_async_suspend_enabled(struct device *dev) | |||
681 | return !!dev->power.async_suspend; | 682 | return !!dev->power.async_suspend; |
682 | } | 683 | } |
683 | 684 | ||
685 | static inline void pm_suspend_ignore_children(struct device *dev, bool enable) | ||
686 | { | ||
687 | dev->power.ignore_children = enable; | ||
688 | } | ||
689 | |||
684 | static inline void device_lock(struct device *dev) | 690 | static inline void device_lock(struct device *dev) |
685 | { | 691 | { |
686 | mutex_lock(&dev->mutex); | 692 | mutex_lock(&dev->mutex); |
@@ -723,10 +729,14 @@ extern int dev_set_drvdata(struct device *dev, void *data); | |||
723 | */ | 729 | */ |
724 | extern struct device *__root_device_register(const char *name, | 730 | extern struct device *__root_device_register(const char *name, |
725 | struct module *owner); | 731 | struct module *owner); |
726 | static inline struct device *root_device_register(const char *name) | 732 | |
727 | { | 733 | /* |
728 | return __root_device_register(name, THIS_MODULE); | 734 | * This is a macro to avoid include problems with THIS_MODULE, |
729 | } | 735 | * just as per what is done for device_schedule_callback() above. |
736 | */ | ||
737 | #define root_device_register(name) \ | ||
738 | __root_device_register(name, THIS_MODULE) | ||
739 | |||
730 | extern void root_device_unregister(struct device *root); | 740 | extern void root_device_unregister(struct device *root); |
731 | 741 | ||
732 | static inline void *dev_get_platdata(const struct device *dev) | 742 | static inline void *dev_get_platdata(const struct device *dev) |
@@ -753,10 +763,10 @@ extern struct device *device_create_vargs(struct class *cls, | |||
753 | void *drvdata, | 763 | void *drvdata, |
754 | const char *fmt, | 764 | const char *fmt, |
755 | va_list vargs); | 765 | va_list vargs); |
756 | extern struct device *device_create(struct class *cls, struct device *parent, | 766 | extern __printf(5, 6) |
757 | dev_t devt, void *drvdata, | 767 | struct device *device_create(struct class *cls, struct device *parent, |
758 | const char *fmt, ...) | 768 | dev_t devt, void *drvdata, |
759 | __attribute__((format(printf, 5, 6))); | 769 | const char *fmt, ...); |
760 | extern void device_destroy(struct class *cls, dev_t devt); | 770 | extern void device_destroy(struct class *cls, dev_t devt); |
761 | 771 | ||
762 | /* | 772 | /* |
@@ -800,64 +810,56 @@ extern const char *dev_driver_string(const struct device *dev); | |||
800 | 810 | ||
801 | extern int __dev_printk(const char *level, const struct device *dev, | 811 | extern int __dev_printk(const char *level, const struct device *dev, |
802 | struct va_format *vaf); | 812 | struct va_format *vaf); |
803 | extern int dev_printk(const char *level, const struct device *dev, | 813 | extern __printf(3, 4) |
804 | const char *fmt, ...) | 814 | int dev_printk(const char *level, const struct device *dev, |
805 | __attribute__ ((format (printf, 3, 4))); | 815 | const char *fmt, ...) |
806 | extern int dev_emerg(const struct device *dev, const char *fmt, ...) | 816 | ; |
807 | __attribute__ ((format (printf, 2, 3))); | 817 | extern __printf(2, 3) |
808 | extern int dev_alert(const struct device *dev, const char *fmt, ...) | 818 | int dev_emerg(const struct device *dev, const char *fmt, ...); |
809 | __attribute__ ((format (printf, 2, 3))); | 819 | extern __printf(2, 3) |
810 | extern int dev_crit(const struct device *dev, const char *fmt, ...) | 820 | int dev_alert(const struct device *dev, const char *fmt, ...); |
811 | __attribute__ ((format (printf, 2, 3))); | 821 | extern __printf(2, 3) |
812 | extern int dev_err(const struct device *dev, const char *fmt, ...) | 822 | int dev_crit(const struct device *dev, const char *fmt, ...); |
813 | __attribute__ ((format (printf, 2, 3))); | 823 | extern __printf(2, 3) |
814 | extern int dev_warn(const struct device *dev, const char *fmt, ...) | 824 | int dev_err(const struct device *dev, const char *fmt, ...); |
815 | __attribute__ ((format (printf, 2, 3))); | 825 | extern __printf(2, 3) |
816 | extern int dev_notice(const struct device *dev, const char *fmt, ...) | 826 | int dev_warn(const struct device *dev, const char *fmt, ...); |
817 | __attribute__ ((format (printf, 2, 3))); | 827 | extern __printf(2, 3) |
818 | extern int _dev_info(const struct device *dev, const char *fmt, ...) | 828 | int dev_notice(const struct device *dev, const char *fmt, ...); |
819 | __attribute__ ((format (printf, 2, 3))); | 829 | extern __printf(2, 3) |
830 | int _dev_info(const struct device *dev, const char *fmt, ...); | ||
820 | 831 | ||
821 | #else | 832 | #else |
822 | 833 | ||
823 | static inline int __dev_printk(const char *level, const struct device *dev, | 834 | static inline int __dev_printk(const char *level, const struct device *dev, |
824 | struct va_format *vaf) | 835 | struct va_format *vaf) |
825 | { return 0; } | 836 | { return 0; } |
826 | static inline int dev_printk(const char *level, const struct device *dev, | 837 | static inline __printf(3, 4) |
827 | const char *fmt, ...) | 838 | int dev_printk(const char *level, const struct device *dev, |
828 | __attribute__ ((format (printf, 3, 4))); | 839 | const char *fmt, ...) |
829 | static inline int dev_printk(const char *level, const struct device *dev, | 840 | { return 0; } |
830 | const char *fmt, ...) | 841 | |
831 | { return 0; } | 842 | static inline __printf(2, 3) |
832 | 843 | int dev_emerg(const struct device *dev, const char *fmt, ...) | |
833 | static inline int dev_emerg(const struct device *dev, const char *fmt, ...) | 844 | { return 0; } |
834 | __attribute__ ((format (printf, 2, 3))); | 845 | static inline __printf(2, 3) |
835 | static inline int dev_emerg(const struct device *dev, const char *fmt, ...) | 846 | int dev_crit(const struct device *dev, const char *fmt, ...) |
836 | { return 0; } | 847 | { return 0; } |
837 | static inline int dev_crit(const struct device *dev, const char *fmt, ...) | 848 | static inline __printf(2, 3) |
838 | __attribute__ ((format (printf, 2, 3))); | 849 | int dev_alert(const struct device *dev, const char *fmt, ...) |
839 | static inline int dev_crit(const struct device *dev, const char *fmt, ...) | 850 | { return 0; } |
840 | { return 0; } | 851 | static inline __printf(2, 3) |
841 | static inline int dev_alert(const struct device *dev, const char *fmt, ...) | 852 | int dev_err(const struct device *dev, const char *fmt, ...) |
842 | __attribute__ ((format (printf, 2, 3))); | 853 | { return 0; } |
843 | static inline int dev_alert(const struct device *dev, const char *fmt, ...) | 854 | static inline __printf(2, 3) |
844 | { return 0; } | 855 | int dev_warn(const struct device *dev, const char *fmt, ...) |
845 | static inline int dev_err(const struct device *dev, const char *fmt, ...) | 856 | { return 0; } |
846 | __attribute__ ((format (printf, 2, 3))); | 857 | static inline __printf(2, 3) |
847 | static inline int dev_err(const struct device *dev, const char *fmt, ...) | 858 | int dev_notice(const struct device *dev, const char *fmt, ...) |
848 | { return 0; } | 859 | { return 0; } |
849 | static inline int dev_warn(const struct device *dev, const char *fmt, ...) | 860 | static inline __printf(2, 3) |
850 | __attribute__ ((format (printf, 2, 3))); | 861 | int _dev_info(const struct device *dev, const char *fmt, ...) |
851 | static inline int dev_warn(const struct device *dev, const char *fmt, ...) | 862 | { return 0; } |
852 | { return 0; } | ||
853 | static inline int dev_notice(const struct device *dev, const char *fmt, ...) | ||
854 | __attribute__ ((format (printf, 2, 3))); | ||
855 | static inline int dev_notice(const struct device *dev, const char *fmt, ...) | ||
856 | { return 0; } | ||
857 | static inline int _dev_info(const struct device *dev, const char *fmt, ...) | ||
858 | __attribute__ ((format (printf, 2, 3))); | ||
859 | static inline int _dev_info(const struct device *dev, const char *fmt, ...) | ||
860 | { return 0; } | ||
861 | 863 | ||
862 | #endif | 864 | #endif |
863 | 865 | ||
diff --git a/include/linux/device_cgroup.h b/include/linux/device_cgroup.h index 7aad1f440867..8b64221b432b 100644 --- a/include/linux/device_cgroup.h +++ b/include/linux/device_cgroup.h | |||
@@ -1,4 +1,3 @@ | |||
1 | #include <linux/module.h> | ||
2 | #include <linux/fs.h> | 1 | #include <linux/fs.h> |
3 | 2 | ||
4 | #ifdef CONFIG_CGROUP_DEVICE | 3 | #ifdef CONFIG_CGROUP_DEVICE |
diff --git a/include/linux/dm-ioctl.h b/include/linux/dm-ioctl.h index 0cb8eff76bd6..75fd5573516e 100644 --- a/include/linux/dm-ioctl.h +++ b/include/linux/dm-ioctl.h | |||
@@ -267,9 +267,9 @@ enum { | |||
267 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) | 267 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) |
268 | 268 | ||
269 | #define DM_VERSION_MAJOR 4 | 269 | #define DM_VERSION_MAJOR 4 |
270 | #define DM_VERSION_MINOR 21 | 270 | #define DM_VERSION_MINOR 22 |
271 | #define DM_VERSION_PATCHLEVEL 0 | 271 | #define DM_VERSION_PATCHLEVEL 0 |
272 | #define DM_VERSION_EXTRA "-ioctl (2011-07-06)" | 272 | #define DM_VERSION_EXTRA "-ioctl (2011-10-19)" |
273 | 273 | ||
274 | /* Status bits */ | 274 | /* Status bits */ |
275 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ | 275 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ |
diff --git a/include/linux/dm-kcopyd.h b/include/linux/dm-kcopyd.h index 5e54458e920f..47d9d376e4e7 100644 --- a/include/linux/dm-kcopyd.h +++ b/include/linux/dm-kcopyd.h | |||
@@ -57,5 +57,9 @@ void *dm_kcopyd_prepare_callback(struct dm_kcopyd_client *kc, | |||
57 | dm_kcopyd_notify_fn fn, void *context); | 57 | dm_kcopyd_notify_fn fn, void *context); |
58 | void dm_kcopyd_do_callback(void *job, int read_err, unsigned long write_err); | 58 | void dm_kcopyd_do_callback(void *job, int read_err, unsigned long write_err); |
59 | 59 | ||
60 | int dm_kcopyd_zero(struct dm_kcopyd_client *kc, | ||
61 | unsigned num_dests, struct dm_io_region *dests, | ||
62 | unsigned flags, dm_kcopyd_notify_fn fn, void *context); | ||
63 | |||
60 | #endif /* __KERNEL__ */ | 64 | #endif /* __KERNEL__ */ |
61 | #endif /* _LINUX_DM_KCOPYD_H */ | 65 | #endif /* _LINUX_DM_KCOPYD_H */ |
diff --git a/include/linux/dm-log-userspace.h b/include/linux/dm-log-userspace.h index eeace7d3ff15..0678c2adc421 100644 --- a/include/linux/dm-log-userspace.h +++ b/include/linux/dm-log-userspace.h | |||
@@ -52,15 +52,20 @@ | |||
52 | * Payload-to-userspace: | 52 | * Payload-to-userspace: |
53 | * A single string containing all the argv arguments separated by ' 's | 53 | * A single string containing all the argv arguments separated by ' 's |
54 | * Payload-to-kernel: | 54 | * Payload-to-kernel: |
55 | * None. ('data_size' in the dm_ulog_request struct should be 0.) | 55 | * A NUL-terminated string that is the name of the device that is used |
56 | * as the backing store for the log data. 'dm_get_device' will be called | ||
57 | * on this device. ('dm_put_device' will be called on this device | ||
58 | * automatically after calling DM_ULOG_DTR.) If there is no device needed | ||
59 | * for log data, 'data_size' in the dm_ulog_request struct should be 0. | ||
56 | * | 60 | * |
57 | * The UUID contained in the dm_ulog_request structure is the reference that | 61 | * The UUID contained in the dm_ulog_request structure is the reference that |
58 | * will be used by all request types to a specific log. The constructor must | 62 | * will be used by all request types to a specific log. The constructor must |
59 | * record this assotiation with instance created. | 63 | * record this association with the instance created. |
60 | * | 64 | * |
61 | * When the request has been processed, user-space must return the | 65 | * When the request has been processed, user-space must return the |
62 | * dm_ulog_request to the kernel - setting the 'error' field and | 66 | * dm_ulog_request to the kernel - setting the 'error' field, filling the |
63 | * 'data_size' appropriately. | 67 | * data field with the log device if necessary, and setting 'data_size' |
68 | * appropriately. | ||
64 | */ | 69 | */ |
65 | #define DM_ULOG_CTR 1 | 70 | #define DM_ULOG_CTR 1 |
66 | 71 | ||
@@ -377,8 +382,11 @@ | |||
377 | * dm_ulog_request or a change in the way requests are | 382 | * dm_ulog_request or a change in the way requests are |
378 | * issued/handled. Changes are outlined here: | 383 | * issued/handled. Changes are outlined here: |
379 | * version 1: Initial implementation | 384 | * version 1: Initial implementation |
385 | * version 2: DM_ULOG_CTR allowed to return a string containing a | ||
386 | * device name that is to be registered with DM via | ||
387 | * 'dm_get_device'. | ||
380 | */ | 388 | */ |
381 | #define DM_ULOG_REQUEST_VERSION 1 | 389 | #define DM_ULOG_REQUEST_VERSION 2 |
382 | 390 | ||
383 | struct dm_ulog_request { | 391 | struct dm_ulog_request { |
384 | /* | 392 | /* |
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 347fdc32177a..e13117cbd2f7 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _LINUX_DMA_MAPPING_H | 1 | #ifndef _LINUX_DMA_MAPPING_H |
2 | #define _LINUX_DMA_MAPPING_H | 2 | #define _LINUX_DMA_MAPPING_H |
3 | 3 | ||
4 | #include <linux/string.h> | ||
4 | #include <linux/device.h> | 5 | #include <linux/device.h> |
5 | #include <linux/err.h> | 6 | #include <linux/err.h> |
6 | #include <linux/dma-attrs.h> | 7 | #include <linux/dma-attrs.h> |
@@ -41,6 +42,9 @@ struct dma_map_ops { | |||
41 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); | 42 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); |
42 | int (*dma_supported)(struct device *dev, u64 mask); | 43 | int (*dma_supported)(struct device *dev, u64 mask); |
43 | int (*set_dma_mask)(struct device *dev, u64 mask); | 44 | int (*set_dma_mask)(struct device *dev, u64 mask); |
45 | #ifdef ARCH_HAS_DMA_GET_REQUIRED_MASK | ||
46 | u64 (*get_required_mask)(struct device *dev); | ||
47 | #endif | ||
44 | int is_phys; | 48 | int is_phys; |
45 | }; | 49 | }; |
46 | 50 | ||
@@ -117,6 +121,15 @@ static inline int dma_set_seg_boundary(struct device *dev, unsigned long mask) | |||
117 | return -EIO; | 121 | return -EIO; |
118 | } | 122 | } |
119 | 123 | ||
124 | static inline void *dma_zalloc_coherent(struct device *dev, size_t size, | ||
125 | dma_addr_t *dma_handle, gfp_t flag) | ||
126 | { | ||
127 | void *ret = dma_alloc_coherent(dev, size, dma_handle, flag); | ||
128 | if (ret) | ||
129 | memset(ret, 0, size); | ||
130 | return ret; | ||
131 | } | ||
132 | |||
120 | #ifdef CONFIG_HAS_DMA | 133 | #ifdef CONFIG_HAS_DMA |
121 | static inline int dma_get_cache_alignment(void) | 134 | static inline int dma_get_cache_alignment(void) |
122 | { | 135 | { |
diff --git a/include/linux/dma_remapping.h b/include/linux/dma_remapping.h index ef90cbd8e173..57c9a8ae4f2d 100644 --- a/include/linux/dma_remapping.h +++ b/include/linux/dma_remapping.h | |||
@@ -31,6 +31,7 @@ extern void free_dmar_iommu(struct intel_iommu *iommu); | |||
31 | extern int iommu_calculate_agaw(struct intel_iommu *iommu); | 31 | extern int iommu_calculate_agaw(struct intel_iommu *iommu); |
32 | extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); | 32 | extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); |
33 | extern int dmar_disabled; | 33 | extern int dmar_disabled; |
34 | extern int intel_iommu_enabled; | ||
34 | #else | 35 | #else |
35 | static inline int iommu_calculate_agaw(struct intel_iommu *iommu) | 36 | static inline int iommu_calculate_agaw(struct intel_iommu *iommu) |
36 | { | 37 | { |
@@ -44,6 +45,7 @@ static inline void free_dmar_iommu(struct intel_iommu *iommu) | |||
44 | { | 45 | { |
45 | } | 46 | } |
46 | #define dmar_disabled (1) | 47 | #define dmar_disabled (1) |
48 | #define intel_iommu_enabled (0) | ||
47 | #endif | 49 | #endif |
48 | 50 | ||
49 | 51 | ||
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 8fbf40e0713c..75f53f874b24 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -24,8 +24,9 @@ | |||
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | #include <linux/uio.h> | 25 | #include <linux/uio.h> |
26 | #include <linux/dma-direction.h> | 26 | #include <linux/dma-direction.h> |
27 | 27 | #include <linux/scatterlist.h> | |
28 | struct scatterlist; | 28 | #include <linux/bitmap.h> |
29 | #include <asm/page.h> | ||
29 | 30 | ||
30 | /** | 31 | /** |
31 | * typedef dma_cookie_t - an opaque DMA cookie | 32 | * typedef dma_cookie_t - an opaque DMA cookie |
@@ -519,6 +520,16 @@ static inline int dmaengine_slave_config(struct dma_chan *chan, | |||
519 | (unsigned long)config); | 520 | (unsigned long)config); |
520 | } | 521 | } |
521 | 522 | ||
523 | static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single( | ||
524 | struct dma_chan *chan, void *buf, size_t len, | ||
525 | enum dma_data_direction dir, unsigned long flags) | ||
526 | { | ||
527 | struct scatterlist sg; | ||
528 | sg_init_one(&sg, buf, len); | ||
529 | |||
530 | return chan->device->device_prep_slave_sg(chan, &sg, 1, dir, flags); | ||
531 | } | ||
532 | |||
522 | static inline int dmaengine_terminate_all(struct dma_chan *chan) | 533 | static inline int dmaengine_terminate_all(struct dma_chan *chan) |
523 | { | 534 | { |
524 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); | 535 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); |
diff --git a/include/linux/dmar.h b/include/linux/dmar.h index a8b1a847c103..731a60975101 100644 --- a/include/linux/dmar.h +++ b/include/linux/dmar.h | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <linux/msi.h> | 26 | #include <linux/msi.h> |
27 | #include <linux/irqreturn.h> | 27 | #include <linux/irqreturn.h> |
28 | 28 | ||
29 | struct acpi_dmar_header; | ||
30 | |||
29 | /* DMAR Flags */ | 31 | /* DMAR Flags */ |
30 | #define DMAR_INTR_REMAP 0x1 | 32 | #define DMAR_INTR_REMAP 0x1 |
31 | #define DMAR_X2APIC_OPT_OUT 0x2 | 33 | #define DMAR_X2APIC_OPT_OUT 0x2 |
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 13aae8087b56..0564e3c39882 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h | |||
@@ -37,22 +37,21 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n, | |||
37 | 37 | ||
38 | #if defined(CONFIG_DYNAMIC_DEBUG) | 38 | #if defined(CONFIG_DYNAMIC_DEBUG) |
39 | extern int ddebug_remove_module(const char *mod_name); | 39 | extern int ddebug_remove_module(const char *mod_name); |
40 | extern int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...) | 40 | extern __printf(2, 3) |
41 | __attribute__ ((format (printf, 2, 3))); | 41 | int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); |
42 | 42 | ||
43 | struct device; | 43 | struct device; |
44 | 44 | ||
45 | extern int __dynamic_dev_dbg(struct _ddebug *descriptor, | 45 | extern __printf(3, 4) |
46 | const struct device *dev, | 46 | int __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev, |
47 | const char *fmt, ...) | 47 | const char *fmt, ...); |
48 | __attribute__ ((format (printf, 3, 4))); | ||
49 | 48 | ||
50 | struct net_device; | 49 | struct net_device; |
51 | 50 | ||
52 | extern int __dynamic_netdev_dbg(struct _ddebug *descriptor, | 51 | extern __printf(3, 4) |
53 | const struct net_device *dev, | 52 | int __dynamic_netdev_dbg(struct _ddebug *descriptor, |
54 | const char *fmt, ...) | 53 | const struct net_device *dev, |
55 | __attribute__ ((format (printf, 3, 4))); | 54 | const char *fmt, ...); |
56 | 55 | ||
57 | #define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt) \ | 56 | #define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt) \ |
58 | static struct _ddebug __used __aligned(8) \ | 57 | static struct _ddebug __used __aligned(8) \ |
diff --git a/include/linux/edac.h b/include/linux/edac.h index 4a73257b47d0..055b248bdd53 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h | |||
@@ -42,4 +42,354 @@ static inline void opstate_init(void) | |||
42 | return; | 42 | return; |
43 | } | 43 | } |
44 | 44 | ||
45 | #define EDAC_MC_LABEL_LEN 31 | ||
46 | #define MC_PROC_NAME_MAX_LEN 7 | ||
47 | |||
48 | /* memory devices */ | ||
49 | enum dev_type { | ||
50 | DEV_UNKNOWN = 0, | ||
51 | DEV_X1, | ||
52 | DEV_X2, | ||
53 | DEV_X4, | ||
54 | DEV_X8, | ||
55 | DEV_X16, | ||
56 | DEV_X32, /* Do these parts exist? */ | ||
57 | DEV_X64 /* Do these parts exist? */ | ||
58 | }; | ||
59 | |||
60 | #define DEV_FLAG_UNKNOWN BIT(DEV_UNKNOWN) | ||
61 | #define DEV_FLAG_X1 BIT(DEV_X1) | ||
62 | #define DEV_FLAG_X2 BIT(DEV_X2) | ||
63 | #define DEV_FLAG_X4 BIT(DEV_X4) | ||
64 | #define DEV_FLAG_X8 BIT(DEV_X8) | ||
65 | #define DEV_FLAG_X16 BIT(DEV_X16) | ||
66 | #define DEV_FLAG_X32 BIT(DEV_X32) | ||
67 | #define DEV_FLAG_X64 BIT(DEV_X64) | ||
68 | |||
69 | /* memory types */ | ||
70 | enum mem_type { | ||
71 | MEM_EMPTY = 0, /* Empty csrow */ | ||
72 | MEM_RESERVED, /* Reserved csrow type */ | ||
73 | MEM_UNKNOWN, /* Unknown csrow type */ | ||
74 | MEM_FPM, /* Fast page mode */ | ||
75 | MEM_EDO, /* Extended data out */ | ||
76 | MEM_BEDO, /* Burst Extended data out */ | ||
77 | MEM_SDR, /* Single data rate SDRAM */ | ||
78 | MEM_RDR, /* Registered single data rate SDRAM */ | ||
79 | MEM_DDR, /* Double data rate SDRAM */ | ||
80 | MEM_RDDR, /* Registered Double data rate SDRAM */ | ||
81 | MEM_RMBS, /* Rambus DRAM */ | ||
82 | MEM_DDR2, /* DDR2 RAM */ | ||
83 | MEM_FB_DDR2, /* fully buffered DDR2 */ | ||
84 | MEM_RDDR2, /* Registered DDR2 RAM */ | ||
85 | MEM_XDR, /* Rambus XDR */ | ||
86 | MEM_DDR3, /* DDR3 RAM */ | ||
87 | MEM_RDDR3, /* Registered DDR3 RAM */ | ||
88 | }; | ||
89 | |||
90 | #define MEM_FLAG_EMPTY BIT(MEM_EMPTY) | ||
91 | #define MEM_FLAG_RESERVED BIT(MEM_RESERVED) | ||
92 | #define MEM_FLAG_UNKNOWN BIT(MEM_UNKNOWN) | ||
93 | #define MEM_FLAG_FPM BIT(MEM_FPM) | ||
94 | #define MEM_FLAG_EDO BIT(MEM_EDO) | ||
95 | #define MEM_FLAG_BEDO BIT(MEM_BEDO) | ||
96 | #define MEM_FLAG_SDR BIT(MEM_SDR) | ||
97 | #define MEM_FLAG_RDR BIT(MEM_RDR) | ||
98 | #define MEM_FLAG_DDR BIT(MEM_DDR) | ||
99 | #define MEM_FLAG_RDDR BIT(MEM_RDDR) | ||
100 | #define MEM_FLAG_RMBS BIT(MEM_RMBS) | ||
101 | #define MEM_FLAG_DDR2 BIT(MEM_DDR2) | ||
102 | #define MEM_FLAG_FB_DDR2 BIT(MEM_FB_DDR2) | ||
103 | #define MEM_FLAG_RDDR2 BIT(MEM_RDDR2) | ||
104 | #define MEM_FLAG_XDR BIT(MEM_XDR) | ||
105 | #define MEM_FLAG_DDR3 BIT(MEM_DDR3) | ||
106 | #define MEM_FLAG_RDDR3 BIT(MEM_RDDR3) | ||
107 | |||
108 | /* chipset Error Detection and Correction capabilities and mode */ | ||
109 | enum edac_type { | ||
110 | EDAC_UNKNOWN = 0, /* Unknown if ECC is available */ | ||
111 | EDAC_NONE, /* Doesn't support ECC */ | ||
112 | EDAC_RESERVED, /* Reserved ECC type */ | ||
113 | EDAC_PARITY, /* Detects parity errors */ | ||
114 | EDAC_EC, /* Error Checking - no correction */ | ||
115 | EDAC_SECDED, /* Single bit error correction, Double detection */ | ||
116 | EDAC_S2ECD2ED, /* Chipkill x2 devices - do these exist? */ | ||
117 | EDAC_S4ECD4ED, /* Chipkill x4 devices */ | ||
118 | EDAC_S8ECD8ED, /* Chipkill x8 devices */ | ||
119 | EDAC_S16ECD16ED, /* Chipkill x16 devices */ | ||
120 | }; | ||
121 | |||
122 | #define EDAC_FLAG_UNKNOWN BIT(EDAC_UNKNOWN) | ||
123 | #define EDAC_FLAG_NONE BIT(EDAC_NONE) | ||
124 | #define EDAC_FLAG_PARITY BIT(EDAC_PARITY) | ||
125 | #define EDAC_FLAG_EC BIT(EDAC_EC) | ||
126 | #define EDAC_FLAG_SECDED BIT(EDAC_SECDED) | ||
127 | #define EDAC_FLAG_S2ECD2ED BIT(EDAC_S2ECD2ED) | ||
128 | #define EDAC_FLAG_S4ECD4ED BIT(EDAC_S4ECD4ED) | ||
129 | #define EDAC_FLAG_S8ECD8ED BIT(EDAC_S8ECD8ED) | ||
130 | #define EDAC_FLAG_S16ECD16ED BIT(EDAC_S16ECD16ED) | ||
131 | |||
132 | /* scrubbing capabilities */ | ||
133 | enum scrub_type { | ||
134 | SCRUB_UNKNOWN = 0, /* Unknown if scrubber is available */ | ||
135 | SCRUB_NONE, /* No scrubber */ | ||
136 | SCRUB_SW_PROG, /* SW progressive (sequential) scrubbing */ | ||
137 | SCRUB_SW_SRC, /* Software scrub only errors */ | ||
138 | SCRUB_SW_PROG_SRC, /* Progressive software scrub from an error */ | ||
139 | SCRUB_SW_TUNABLE, /* Software scrub frequency is tunable */ | ||
140 | SCRUB_HW_PROG, /* HW progressive (sequential) scrubbing */ | ||
141 | SCRUB_HW_SRC, /* Hardware scrub only errors */ | ||
142 | SCRUB_HW_PROG_SRC, /* Progressive hardware scrub from an error */ | ||
143 | SCRUB_HW_TUNABLE /* Hardware scrub frequency is tunable */ | ||
144 | }; | ||
145 | |||
146 | #define SCRUB_FLAG_SW_PROG BIT(SCRUB_SW_PROG) | ||
147 | #define SCRUB_FLAG_SW_SRC BIT(SCRUB_SW_SRC) | ||
148 | #define SCRUB_FLAG_SW_PROG_SRC BIT(SCRUB_SW_PROG_SRC) | ||
149 | #define SCRUB_FLAG_SW_TUN BIT(SCRUB_SW_SCRUB_TUNABLE) | ||
150 | #define SCRUB_FLAG_HW_PROG BIT(SCRUB_HW_PROG) | ||
151 | #define SCRUB_FLAG_HW_SRC BIT(SCRUB_HW_SRC) | ||
152 | #define SCRUB_FLAG_HW_PROG_SRC BIT(SCRUB_HW_PROG_SRC) | ||
153 | #define SCRUB_FLAG_HW_TUN BIT(SCRUB_HW_TUNABLE) | ||
154 | |||
155 | /* FIXME - should have notify capabilities: NMI, LOG, PROC, etc */ | ||
156 | |||
157 | /* EDAC internal operation states */ | ||
158 | #define OP_ALLOC 0x100 | ||
159 | #define OP_RUNNING_POLL 0x201 | ||
160 | #define OP_RUNNING_INTERRUPT 0x202 | ||
161 | #define OP_RUNNING_POLL_INTR 0x203 | ||
162 | #define OP_OFFLINE 0x300 | ||
163 | |||
164 | /* | ||
165 | * There are several things to be aware of that aren't at all obvious: | ||
166 | * | ||
167 | * | ||
168 | * SOCKETS, SOCKET SETS, BANKS, ROWS, CHIP-SELECT ROWS, CHANNELS, etc.. | ||
169 | * | ||
170 | * These are some of the many terms that are thrown about that don't always | ||
171 | * mean what people think they mean (Inconceivable!). In the interest of | ||
172 | * creating a common ground for discussion, terms and their definitions | ||
173 | * will be established. | ||
174 | * | ||
175 | * Memory devices: The individual chip on a memory stick. These devices | ||
176 | * commonly output 4 and 8 bits each. Grouping several | ||
177 | * of these in parallel provides 64 bits which is common | ||
178 | * for a memory stick. | ||
179 | * | ||
180 | * Memory Stick: A printed circuit board that aggregates multiple | ||
181 | * memory devices in parallel. This is the atomic | ||
182 | * memory component that is purchaseable by Joe consumer | ||
183 | * and loaded into a memory socket. | ||
184 | * | ||
185 | * Socket: A physical connector on the motherboard that accepts | ||
186 | * a single memory stick. | ||
187 | * | ||
188 | * Channel: Set of memory devices on a memory stick that must be | ||
189 | * grouped in parallel with one or more additional | ||
190 | * channels from other memory sticks. This parallel | ||
191 | * grouping of the output from multiple channels are | ||
192 | * necessary for the smallest granularity of memory access. | ||
193 | * Some memory controllers are capable of single channel - | ||
194 | * which means that memory sticks can be loaded | ||
195 | * individually. Other memory controllers are only | ||
196 | * capable of dual channel - which means that memory | ||
197 | * sticks must be loaded as pairs (see "socket set"). | ||
198 | * | ||
199 | * Chip-select row: All of the memory devices that are selected together. | ||
200 | * for a single, minimum grain of memory access. | ||
201 | * This selects all of the parallel memory devices across | ||
202 | * all of the parallel channels. Common chip-select rows | ||
203 | * for single channel are 64 bits, for dual channel 128 | ||
204 | * bits. | ||
205 | * | ||
206 | * Single-Ranked stick: A Single-ranked stick has 1 chip-select row of memory. | ||
207 | * Motherboards commonly drive two chip-select pins to | ||
208 | * a memory stick. A single-ranked stick, will occupy | ||
209 | * only one of those rows. The other will be unused. | ||
210 | * | ||
211 | * Double-Ranked stick: A double-ranked stick has two chip-select rows which | ||
212 | * access different sets of memory devices. The two | ||
213 | * rows cannot be accessed concurrently. | ||
214 | * | ||
215 | * Double-sided stick: DEPRECATED TERM, see Double-Ranked stick. | ||
216 | * A double-sided stick has two chip-select rows which | ||
217 | * access different sets of memory devices. The two | ||
218 | * rows cannot be accessed concurrently. "Double-sided" | ||
219 | * is irrespective of the memory devices being mounted | ||
220 | * on both sides of the memory stick. | ||
221 | * | ||
222 | * Socket set: All of the memory sticks that are required for | ||
223 | * a single memory access or all of the memory sticks | ||
224 | * spanned by a chip-select row. A single socket set | ||
225 | * has two chip-select rows and if double-sided sticks | ||
226 | * are used these will occupy those chip-select rows. | ||
227 | * | ||
228 | * Bank: This term is avoided because it is unclear when | ||
229 | * needing to distinguish between chip-select rows and | ||
230 | * socket sets. | ||
231 | * | ||
232 | * Controller pages: | ||
233 | * | ||
234 | * Physical pages: | ||
235 | * | ||
236 | * Virtual pages: | ||
237 | * | ||
238 | * | ||
239 | * STRUCTURE ORGANIZATION AND CHOICES | ||
240 | * | ||
241 | * | ||
242 | * | ||
243 | * PS - I enjoyed writing all that about as much as you enjoyed reading it. | ||
244 | */ | ||
245 | |||
246 | struct channel_info { | ||
247 | int chan_idx; /* channel index */ | ||
248 | u32 ce_count; /* Correctable Errors for this CHANNEL */ | ||
249 | char label[EDAC_MC_LABEL_LEN + 1]; /* DIMM label on motherboard */ | ||
250 | struct csrow_info *csrow; /* the parent */ | ||
251 | }; | ||
252 | |||
253 | struct csrow_info { | ||
254 | unsigned long first_page; /* first page number in dimm */ | ||
255 | unsigned long last_page; /* last page number in dimm */ | ||
256 | unsigned long page_mask; /* used for interleaving - | ||
257 | * 0UL for non intlv | ||
258 | */ | ||
259 | u32 nr_pages; /* number of pages in csrow */ | ||
260 | u32 grain; /* granularity of reported error in bytes */ | ||
261 | int csrow_idx; /* the chip-select row */ | ||
262 | enum dev_type dtype; /* memory device type */ | ||
263 | u32 ue_count; /* Uncorrectable Errors for this csrow */ | ||
264 | u32 ce_count; /* Correctable Errors for this csrow */ | ||
265 | enum mem_type mtype; /* memory csrow type */ | ||
266 | enum edac_type edac_mode; /* EDAC mode for this csrow */ | ||
267 | struct mem_ctl_info *mci; /* the parent */ | ||
268 | |||
269 | struct kobject kobj; /* sysfs kobject for this csrow */ | ||
270 | |||
271 | /* channel information for this csrow */ | ||
272 | u32 nr_channels; | ||
273 | struct channel_info *channels; | ||
274 | }; | ||
275 | |||
276 | struct mcidev_sysfs_group { | ||
277 | const char *name; /* group name */ | ||
278 | const struct mcidev_sysfs_attribute *mcidev_attr; /* group attributes */ | ||
279 | }; | ||
280 | |||
281 | struct mcidev_sysfs_group_kobj { | ||
282 | struct list_head list; /* list for all instances within a mc */ | ||
283 | |||
284 | struct kobject kobj; /* kobj for the group */ | ||
285 | |||
286 | const struct mcidev_sysfs_group *grp; /* group description table */ | ||
287 | struct mem_ctl_info *mci; /* the parent */ | ||
288 | }; | ||
289 | |||
290 | /* mcidev_sysfs_attribute structure | ||
291 | * used for driver sysfs attributes and in mem_ctl_info | ||
292 | * sysfs top level entries | ||
293 | */ | ||
294 | struct mcidev_sysfs_attribute { | ||
295 | /* It should use either attr or grp */ | ||
296 | struct attribute attr; | ||
297 | const struct mcidev_sysfs_group *grp; /* Points to a group of attributes */ | ||
298 | |||
299 | /* Ops for show/store values at the attribute - not used on group */ | ||
300 | ssize_t (*show)(struct mem_ctl_info *,char *); | ||
301 | ssize_t (*store)(struct mem_ctl_info *, const char *,size_t); | ||
302 | }; | ||
303 | |||
304 | /* MEMORY controller information structure | ||
305 | */ | ||
306 | struct mem_ctl_info { | ||
307 | struct list_head link; /* for global list of mem_ctl_info structs */ | ||
308 | |||
309 | struct module *owner; /* Module owner of this control struct */ | ||
310 | |||
311 | unsigned long mtype_cap; /* memory types supported by mc */ | ||
312 | unsigned long edac_ctl_cap; /* Mem controller EDAC capabilities */ | ||
313 | unsigned long edac_cap; /* configuration capabilities - this is | ||
314 | * closely related to edac_ctl_cap. The | ||
315 | * difference is that the controller may be | ||
316 | * capable of s4ecd4ed which would be listed | ||
317 | * in edac_ctl_cap, but if channels aren't | ||
318 | * capable of s4ecd4ed then the edac_cap would | ||
319 | * not have that capability. | ||
320 | */ | ||
321 | unsigned long scrub_cap; /* chipset scrub capabilities */ | ||
322 | enum scrub_type scrub_mode; /* current scrub mode */ | ||
323 | |||
324 | /* Translates sdram memory scrub rate given in bytes/sec to the | ||
325 | internal representation and configures whatever else needs | ||
326 | to be configured. | ||
327 | */ | ||
328 | int (*set_sdram_scrub_rate) (struct mem_ctl_info * mci, u32 bw); | ||
329 | |||
330 | /* Get the current sdram memory scrub rate from the internal | ||
331 | representation and converts it to the closest matching | ||
332 | bandwidth in bytes/sec. | ||
333 | */ | ||
334 | int (*get_sdram_scrub_rate) (struct mem_ctl_info * mci); | ||
335 | |||
336 | |||
337 | /* pointer to edac checking routine */ | ||
338 | void (*edac_check) (struct mem_ctl_info * mci); | ||
339 | |||
340 | /* | ||
341 | * Remaps memory pages: controller pages to physical pages. | ||
342 | * For most MC's, this will be NULL. | ||
343 | */ | ||
344 | /* FIXME - why not send the phys page to begin with? */ | ||
345 | unsigned long (*ctl_page_to_phys) (struct mem_ctl_info * mci, | ||
346 | unsigned long page); | ||
347 | int mc_idx; | ||
348 | int nr_csrows; | ||
349 | struct csrow_info *csrows; | ||
350 | /* | ||
351 | * FIXME - what about controllers on other busses? - IDs must be | ||
352 | * unique. dev pointer should be sufficiently unique, but | ||
353 | * BUS:SLOT.FUNC numbers may not be unique. | ||
354 | */ | ||
355 | struct device *dev; | ||
356 | const char *mod_name; | ||
357 | const char *mod_ver; | ||
358 | const char *ctl_name; | ||
359 | const char *dev_name; | ||
360 | char proc_name[MC_PROC_NAME_MAX_LEN + 1]; | ||
361 | void *pvt_info; | ||
362 | u32 ue_noinfo_count; /* Uncorrectable Errors w/o info */ | ||
363 | u32 ce_noinfo_count; /* Correctable Errors w/o info */ | ||
364 | u32 ue_count; /* Total Uncorrectable Errors for this MC */ | ||
365 | u32 ce_count; /* Total Correctable Errors for this MC */ | ||
366 | unsigned long start_time; /* mci load start time (in jiffies) */ | ||
367 | |||
368 | struct completion complete; | ||
369 | |||
370 | /* edac sysfs device control */ | ||
371 | struct kobject edac_mci_kobj; | ||
372 | |||
373 | /* list for all grp instances within a mc */ | ||
374 | struct list_head grp_kobj_list; | ||
375 | |||
376 | /* Additional top controller level attributes, but specified | ||
377 | * by the low level driver. | ||
378 | * | ||
379 | * Set by the low level driver to provide attributes at the | ||
380 | * controller level, same level as 'ue_count' and 'ce_count' above. | ||
381 | * An array of structures, NULL terminated | ||
382 | * | ||
383 | * If attributes are desired, then set to array of attributes | ||
384 | * If no attributes are desired, leave NULL | ||
385 | */ | ||
386 | const struct mcidev_sysfs_attribute *mc_driver_sysfs_attributes; | ||
387 | |||
388 | /* work struct for this MC */ | ||
389 | struct delayed_work work; | ||
390 | |||
391 | /* the internal state of this controller instance */ | ||
392 | int op_state; | ||
393 | }; | ||
394 | |||
45 | #endif | 395 | #endif |
diff --git a/include/linux/edac_mce.h b/include/linux/edac_mce.h deleted file mode 100644 index f974fc035363..000000000000 --- a/include/linux/edac_mce.h +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | /* Provides edac interface to mcelog events | ||
2 | * | ||
3 | * This file may be distributed under the terms of the | ||
4 | * GNU General Public License version 2. | ||
5 | * | ||
6 | * Copyright (c) 2009 by: | ||
7 | * Mauro Carvalho Chehab <mchehab@redhat.com> | ||
8 | * | ||
9 | * Red Hat Inc. http://www.redhat.com | ||
10 | */ | ||
11 | |||
12 | #if defined(CONFIG_EDAC_MCE) || \ | ||
13 | (defined(CONFIG_EDAC_MCE_MODULE) && defined(MODULE)) | ||
14 | |||
15 | #include <asm/mce.h> | ||
16 | #include <linux/list.h> | ||
17 | |||
18 | struct edac_mce { | ||
19 | struct list_head list; | ||
20 | |||
21 | void *priv; | ||
22 | int (*check_error)(void *priv, struct mce *mce); | ||
23 | }; | ||
24 | |||
25 | int edac_mce_register(struct edac_mce *edac_mce); | ||
26 | void edac_mce_unregister(struct edac_mce *edac_mce); | ||
27 | int edac_mce_parse(struct mce *mce); | ||
28 | |||
29 | #else | ||
30 | #define edac_mce_parse(mce) (0) | ||
31 | #endif | ||
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index d800d5142184..1d0f7a2ff73b 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -38,6 +38,12 @@ struct elevator_ops | |||
38 | elevator_merged_fn *elevator_merged_fn; | 38 | elevator_merged_fn *elevator_merged_fn; |
39 | elevator_merge_req_fn *elevator_merge_req_fn; | 39 | elevator_merge_req_fn *elevator_merge_req_fn; |
40 | elevator_allow_merge_fn *elevator_allow_merge_fn; | 40 | elevator_allow_merge_fn *elevator_allow_merge_fn; |
41 | |||
42 | /* | ||
43 | * Used for both plugged list and elevator merging and in the | ||
44 | * former case called without queue_lock. Read comment on top of | ||
45 | * attempt_plug_merge() for details. | ||
46 | */ | ||
41 | elevator_bio_merged_fn *elevator_bio_merged_fn; | 47 | elevator_bio_merged_fn *elevator_bio_merged_fn; |
42 | 48 | ||
43 | elevator_dispatch_fn *elevator_dispatch_fn; | 49 | elevator_dispatch_fn *elevator_dispatch_fn; |
diff --git a/include/linux/elf.h b/include/linux/elf.h index 110821cb6ea5..31f0508d7da7 100644 --- a/include/linux/elf.h +++ b/include/linux/elf.h | |||
@@ -395,6 +395,7 @@ typedef struct elf64_shdr { | |||
395 | #define NT_S390_CTRS 0x304 /* s390 control registers */ | 395 | #define NT_S390_CTRS 0x304 /* s390 control registers */ |
396 | #define NT_S390_PREFIX 0x305 /* s390 prefix register */ | 396 | #define NT_S390_PREFIX 0x305 /* s390 prefix register */ |
397 | #define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */ | 397 | #define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */ |
398 | #define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */ | ||
398 | #define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */ | 399 | #define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */ |
399 | 400 | ||
400 | 401 | ||
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 45f00b61c096..de33de1e2052 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -1097,10 +1097,12 @@ struct ethtool_ops { | |||
1097 | #define SPEED_1000 1000 | 1097 | #define SPEED_1000 1000 |
1098 | #define SPEED_2500 2500 | 1098 | #define SPEED_2500 2500 |
1099 | #define SPEED_10000 10000 | 1099 | #define SPEED_10000 10000 |
1100 | #define SPEED_UNKNOWN -1 | ||
1100 | 1101 | ||
1101 | /* Duplex, half or full. */ | 1102 | /* Duplex, half or full. */ |
1102 | #define DUPLEX_HALF 0x00 | 1103 | #define DUPLEX_HALF 0x00 |
1103 | #define DUPLEX_FULL 0x01 | 1104 | #define DUPLEX_FULL 0x01 |
1105 | #define DUPLEX_UNKNOWN 0xff | ||
1104 | 1106 | ||
1105 | /* Which connector port. */ | 1107 | /* Which connector port. */ |
1106 | #define PORT_TP 0x00 | 1108 | #define PORT_TP 0x00 |
diff --git a/include/linux/export.h b/include/linux/export.h new file mode 100644 index 000000000000..696c0f48afc7 --- /dev/null +++ b/include/linux/export.h | |||
@@ -0,0 +1,89 @@ | |||
1 | #ifndef _LINUX_EXPORT_H | ||
2 | #define _LINUX_EXPORT_H | ||
3 | /* | ||
4 | * Export symbols from the kernel to modules. Forked from module.h | ||
5 | * to reduce the amount of pointless cruft we feed to gcc when only | ||
6 | * exporting a simple symbol or two. | ||
7 | * | ||
8 | * If you feel the need to add #include <linux/foo.h> to this file | ||
9 | * then you are doing something wrong and should go away silently. | ||
10 | */ | ||
11 | |||
12 | /* Some toolchains use a `_' prefix for all user symbols. */ | ||
13 | #ifdef CONFIG_SYMBOL_PREFIX | ||
14 | #define MODULE_SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX | ||
15 | #else | ||
16 | #define MODULE_SYMBOL_PREFIX "" | ||
17 | #endif | ||
18 | |||
19 | struct kernel_symbol | ||
20 | { | ||
21 | unsigned long value; | ||
22 | const char *name; | ||
23 | }; | ||
24 | |||
25 | #ifdef MODULE | ||
26 | extern struct module __this_module; | ||
27 | #define THIS_MODULE (&__this_module) | ||
28 | #else | ||
29 | #define THIS_MODULE ((struct module *)0) | ||
30 | #endif | ||
31 | |||
32 | #ifdef CONFIG_MODULES | ||
33 | |||
34 | #ifndef __GENKSYMS__ | ||
35 | #ifdef CONFIG_MODVERSIONS | ||
36 | /* Mark the CRC weak since genksyms apparently decides not to | ||
37 | * generate a checksums for some symbols */ | ||
38 | #define __CRC_SYMBOL(sym, sec) \ | ||
39 | extern void *__crc_##sym __attribute__((weak)); \ | ||
40 | static const unsigned long __kcrctab_##sym \ | ||
41 | __used \ | ||
42 | __attribute__((section("___kcrctab" sec "+" #sym), unused)) \ | ||
43 | = (unsigned long) &__crc_##sym; | ||
44 | #else | ||
45 | #define __CRC_SYMBOL(sym, sec) | ||
46 | #endif | ||
47 | |||
48 | /* For every exported symbol, place a struct in the __ksymtab section */ | ||
49 | #define __EXPORT_SYMBOL(sym, sec) \ | ||
50 | extern typeof(sym) sym; \ | ||
51 | __CRC_SYMBOL(sym, sec) \ | ||
52 | static const char __kstrtab_##sym[] \ | ||
53 | __attribute__((section("__ksymtab_strings"), aligned(1))) \ | ||
54 | = MODULE_SYMBOL_PREFIX #sym; \ | ||
55 | static const struct kernel_symbol __ksymtab_##sym \ | ||
56 | __used \ | ||
57 | __attribute__((section("___ksymtab" sec "+" #sym), unused)) \ | ||
58 | = { (unsigned long)&sym, __kstrtab_##sym } | ||
59 | |||
60 | #define EXPORT_SYMBOL(sym) \ | ||
61 | __EXPORT_SYMBOL(sym, "") | ||
62 | |||
63 | #define EXPORT_SYMBOL_GPL(sym) \ | ||
64 | __EXPORT_SYMBOL(sym, "_gpl") | ||
65 | |||
66 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ | ||
67 | __EXPORT_SYMBOL(sym, "_gpl_future") | ||
68 | |||
69 | #ifdef CONFIG_UNUSED_SYMBOLS | ||
70 | #define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused") | ||
71 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl") | ||
72 | #else | ||
73 | #define EXPORT_UNUSED_SYMBOL(sym) | ||
74 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) | ||
75 | #endif | ||
76 | |||
77 | #endif /* __GENKSYMS__ */ | ||
78 | |||
79 | #else /* !CONFIG_MODULES... */ | ||
80 | |||
81 | #define EXPORT_SYMBOL(sym) | ||
82 | #define EXPORT_SYMBOL_GPL(sym) | ||
83 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) | ||
84 | #define EXPORT_UNUSED_SYMBOL(sym) | ||
85 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) | ||
86 | |||
87 | #endif /* CONFIG_MODULES */ | ||
88 | |||
89 | #endif /* _LINUX_EXPORT_H */ | ||
diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h index 53792bf36c71..ce1b719e8bd4 100644 --- a/include/linux/ext2_fs.h +++ b/include/linux/ext2_fs.h | |||
@@ -197,8 +197,8 @@ struct ext2_group_desc | |||
197 | 197 | ||
198 | /* Flags that should be inherited by new inodes from their parent. */ | 198 | /* Flags that should be inherited by new inodes from their parent. */ |
199 | #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\ | 199 | #define EXT2_FL_INHERITED (EXT2_SECRM_FL | EXT2_UNRM_FL | EXT2_COMPR_FL |\ |
200 | EXT2_SYNC_FL | EXT2_IMMUTABLE_FL | EXT2_APPEND_FL |\ | 200 | EXT2_SYNC_FL | EXT2_NODUMP_FL |\ |
201 | EXT2_NODUMP_FL | EXT2_NOATIME_FL | EXT2_COMPRBLK_FL|\ | 201 | EXT2_NOATIME_FL | EXT2_COMPRBLK_FL |\ |
202 | EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\ | 202 | EXT2_NOCOMP_FL | EXT2_JOURNAL_DATA_FL |\ |
203 | EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL) | 203 | EXT2_NOTAIL_FL | EXT2_DIRSYNC_FL) |
204 | 204 | ||
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index 67a803aee619..dec99116a0e4 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
@@ -180,8 +180,8 @@ struct ext3_group_desc | |||
180 | 180 | ||
181 | /* Flags that should be inherited by new inodes from their parent. */ | 181 | /* Flags that should be inherited by new inodes from their parent. */ |
182 | #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\ | 182 | #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\ |
183 | EXT3_SYNC_FL | EXT3_IMMUTABLE_FL | EXT3_APPEND_FL |\ | 183 | EXT3_SYNC_FL | EXT3_NODUMP_FL |\ |
184 | EXT3_NODUMP_FL | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL|\ | 184 | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL |\ |
185 | EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\ | 185 | EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\ |
186 | EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL) | 186 | EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL) |
187 | 187 | ||
@@ -381,7 +381,7 @@ struct ext3_inode { | |||
381 | * Mount flags | 381 | * Mount flags |
382 | */ | 382 | */ |
383 | #define EXT3_MOUNT_CHECK 0x00001 /* Do mount-time checks */ | 383 | #define EXT3_MOUNT_CHECK 0x00001 /* Do mount-time checks */ |
384 | #define EXT3_MOUNT_OLDALLOC 0x00002 /* Don't use the new Orlov allocator */ | 384 | /* EXT3_MOUNT_OLDALLOC was there */ |
385 | #define EXT3_MOUNT_GRPID 0x00004 /* Create files with directory's group */ | 385 | #define EXT3_MOUNT_GRPID 0x00004 /* Create files with directory's group */ |
386 | #define EXT3_MOUNT_DEBUG 0x00008 /* Some debugging messages */ | 386 | #define EXT3_MOUNT_DEBUG 0x00008 /* Some debugging messages */ |
387 | #define EXT3_MOUNT_ERRORS_CONT 0x00010 /* Continue on errors */ | 387 | #define EXT3_MOUNT_ERRORS_CONT 0x00010 /* Continue on errors */ |
@@ -937,15 +937,15 @@ extern int ext3_group_extend(struct super_block *sb, | |||
937 | ext3_fsblk_t n_blocks_count); | 937 | ext3_fsblk_t n_blocks_count); |
938 | 938 | ||
939 | /* super.c */ | 939 | /* super.c */ |
940 | extern void ext3_error (struct super_block *, const char *, const char *, ...) | 940 | extern __printf(3, 4) |
941 | __attribute__ ((format (printf, 3, 4))); | 941 | void ext3_error(struct super_block *, const char *, const char *, ...); |
942 | extern void __ext3_std_error (struct super_block *, const char *, int); | 942 | extern void __ext3_std_error (struct super_block *, const char *, int); |
943 | extern void ext3_abort (struct super_block *, const char *, const char *, ...) | 943 | extern __printf(3, 4) |
944 | __attribute__ ((format (printf, 3, 4))); | 944 | void ext3_abort(struct super_block *, const char *, const char *, ...); |
945 | extern void ext3_warning (struct super_block *, const char *, const char *, ...) | 945 | extern __printf(3, 4) |
946 | __attribute__ ((format (printf, 3, 4))); | 946 | void ext3_warning(struct super_block *, const char *, const char *, ...); |
947 | extern void ext3_msg(struct super_block *, const char *, const char *, ...) | 947 | extern __printf(3, 4) |
948 | __attribute__ ((format (printf, 3, 4))); | 948 | void ext3_msg(struct super_block *, const char *, const char *, ...); |
949 | extern void ext3_update_dynamic_rev (struct super_block *sb); | 949 | extern void ext3_update_dynamic_rev (struct super_block *sb); |
950 | 950 | ||
951 | #define ext3_std_error(sb, errno) \ | 951 | #define ext3_std_error(sb, errno) \ |
diff --git a/include/linux/ext3_fs_sb.h b/include/linux/ext3_fs_sb.h index 258088ab3c6b..64365252f1b0 100644 --- a/include/linux/ext3_fs_sb.h +++ b/include/linux/ext3_fs_sb.h | |||
@@ -76,10 +76,6 @@ struct ext3_sb_info { | |||
76 | struct mutex s_resize_lock; | 76 | struct mutex s_resize_lock; |
77 | unsigned long s_commit_interval; | 77 | unsigned long s_commit_interval; |
78 | struct block_device *journal_bdev; | 78 | struct block_device *journal_bdev; |
79 | #ifdef CONFIG_JBD_DEBUG | ||
80 | struct timer_list turn_ro_timer; /* For turning read-only (crash simulation) */ | ||
81 | wait_queue_head_t ro_wait_queue; /* For people waiting for the fs to go read-only */ | ||
82 | #endif | ||
83 | #ifdef CONFIG_QUOTA | 79 | #ifdef CONFIG_QUOTA |
84 | char *s_qf_names[MAXQUOTAS]; /* Names of quota files with journalled quota */ | 80 | char *s_qf_names[MAXQUOTAS]; /* Names of quota files with journalled quota */ |
85 | int s_jquota_fmt; /* Format of quota to use */ | 81 | int s_jquota_fmt; /* Format of quota to use */ |
diff --git a/include/linux/firmware.h b/include/linux/firmware.h index 21b3e7588abd..1e7c01189fa6 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _LINUX_FIRMWARE_H | 1 | #ifndef _LINUX_FIRMWARE_H |
2 | #define _LINUX_FIRMWARE_H | 2 | #define _LINUX_FIRMWARE_H |
3 | 3 | ||
4 | #include <linux/module.h> | ||
5 | #include <linux/types.h> | 4 | #include <linux/types.h> |
6 | #include <linux/compiler.h> | 5 | #include <linux/compiler.h> |
7 | #include <linux/gfp.h> | 6 | #include <linux/gfp.h> |
@@ -15,6 +14,7 @@ struct firmware { | |||
15 | struct page **pages; | 14 | struct page **pages; |
16 | }; | 15 | }; |
17 | 16 | ||
17 | struct module; | ||
18 | struct device; | 18 | struct device; |
19 | 19 | ||
20 | struct builtin_fw { | 20 | struct builtin_fw { |
diff --git a/include/linux/freezer.h b/include/linux/freezer.h index a49b52934c55..a5386e3ee756 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h | |||
@@ -143,14 +143,9 @@ static inline void set_freezable_with_signal(void) | |||
143 | #define wait_event_freezekillable(wq, condition) \ | 143 | #define wait_event_freezekillable(wq, condition) \ |
144 | ({ \ | 144 | ({ \ |
145 | int __retval; \ | 145 | int __retval; \ |
146 | do { \ | 146 | freezer_do_not_count(); \ |
147 | __retval = wait_event_killable(wq, \ | 147 | __retval = wait_event_killable(wq, (condition)); \ |
148 | (condition) || freezing(current)); \ | 148 | freezer_count(); \ |
149 | if (__retval && !freezing(current)) \ | ||
150 | break; \ | ||
151 | else if (!(condition)) \ | ||
152 | __retval = -ERESTARTSYS; \ | ||
153 | } while (try_to_freeze()); \ | ||
154 | __retval; \ | 149 | __retval; \ |
155 | }) | 150 | }) |
156 | 151 | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 14493a2d5a03..e0bc4ffb8e7f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -393,8 +393,8 @@ struct inodes_stat_t { | |||
393 | #include <linux/semaphore.h> | 393 | #include <linux/semaphore.h> |
394 | #include <linux/fiemap.h> | 394 | #include <linux/fiemap.h> |
395 | #include <linux/rculist_bl.h> | 395 | #include <linux/rculist_bl.h> |
396 | #include <linux/shrinker.h> | ||
397 | #include <linux/atomic.h> | 396 | #include <linux/atomic.h> |
397 | #include <linux/shrinker.h> | ||
398 | 398 | ||
399 | #include <asm/byteorder.h> | 399 | #include <asm/byteorder.h> |
400 | 400 | ||
@@ -768,14 +768,25 @@ struct inode { | |||
768 | 768 | ||
769 | /* Stat data, not accessed from path walking */ | 769 | /* Stat data, not accessed from path walking */ |
770 | unsigned long i_ino; | 770 | unsigned long i_ino; |
771 | unsigned int i_nlink; | 771 | /* |
772 | * Filesystems may only read i_nlink directly. They shall use the | ||
773 | * following functions for modification: | ||
774 | * | ||
775 | * (set|clear|inc|drop)_nlink | ||
776 | * inode_(inc|dec)_link_count | ||
777 | */ | ||
778 | union { | ||
779 | const unsigned int i_nlink; | ||
780 | unsigned int __i_nlink; | ||
781 | }; | ||
772 | dev_t i_rdev; | 782 | dev_t i_rdev; |
773 | loff_t i_size; | ||
774 | struct timespec i_atime; | 783 | struct timespec i_atime; |
775 | struct timespec i_mtime; | 784 | struct timespec i_mtime; |
776 | struct timespec i_ctime; | 785 | struct timespec i_ctime; |
777 | unsigned int i_blkbits; | 786 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ |
787 | unsigned short i_bytes; | ||
778 | blkcnt_t i_blocks; | 788 | blkcnt_t i_blocks; |
789 | loff_t i_size; | ||
779 | 790 | ||
780 | #ifdef __NEED_I_SIZE_ORDERED | 791 | #ifdef __NEED_I_SIZE_ORDERED |
781 | seqcount_t i_size_seqcount; | 792 | seqcount_t i_size_seqcount; |
@@ -783,7 +794,6 @@ struct inode { | |||
783 | 794 | ||
784 | /* Misc */ | 795 | /* Misc */ |
785 | unsigned long i_state; | 796 | unsigned long i_state; |
786 | spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ | ||
787 | struct mutex i_mutex; | 797 | struct mutex i_mutex; |
788 | 798 | ||
789 | unsigned long dirtied_when; /* jiffies of first dirtying */ | 799 | unsigned long dirtied_when; /* jiffies of first dirtying */ |
@@ -797,9 +807,10 @@ struct inode { | |||
797 | struct rcu_head i_rcu; | 807 | struct rcu_head i_rcu; |
798 | }; | 808 | }; |
799 | atomic_t i_count; | 809 | atomic_t i_count; |
810 | unsigned int i_blkbits; | ||
800 | u64 i_version; | 811 | u64 i_version; |
801 | unsigned short i_bytes; | ||
802 | atomic_t i_dio_count; | 812 | atomic_t i_dio_count; |
813 | atomic_t i_writecount; | ||
803 | const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ | 814 | const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ |
804 | struct file_lock *i_flock; | 815 | struct file_lock *i_flock; |
805 | struct address_space i_data; | 816 | struct address_space i_data; |
@@ -823,7 +834,6 @@ struct inode { | |||
823 | #ifdef CONFIG_IMA | 834 | #ifdef CONFIG_IMA |
824 | atomic_t i_readcount; /* struct files open RO */ | 835 | atomic_t i_readcount; /* struct files open RO */ |
825 | #endif | 836 | #endif |
826 | atomic_t i_writecount; | ||
827 | void *i_private; /* fs or device private pointer */ | 837 | void *i_private; /* fs or device private pointer */ |
828 | }; | 838 | }; |
829 | 839 | ||
@@ -1633,9 +1643,10 @@ struct inode_operations { | |||
1633 | struct seq_file; | 1643 | struct seq_file; |
1634 | 1644 | ||
1635 | ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, | 1645 | ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, |
1636 | unsigned long nr_segs, unsigned long fast_segs, | 1646 | unsigned long nr_segs, unsigned long fast_segs, |
1637 | struct iovec *fast_pointer, | 1647 | struct iovec *fast_pointer, |
1638 | struct iovec **ret_pointer); | 1648 | struct iovec **ret_pointer, |
1649 | int check_access); | ||
1639 | 1650 | ||
1640 | extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); | 1651 | extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); |
1641 | extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); | 1652 | extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); |
@@ -1754,6 +1765,19 @@ static inline void mark_inode_dirty_sync(struct inode *inode) | |||
1754 | } | 1765 | } |
1755 | 1766 | ||
1756 | /** | 1767 | /** |
1768 | * set_nlink - directly set an inode's link count | ||
1769 | * @inode: inode | ||
1770 | * @nlink: new nlink (should be non-zero) | ||
1771 | * | ||
1772 | * This is a low-level filesystem helper to replace any | ||
1773 | * direct filesystem manipulation of i_nlink. | ||
1774 | */ | ||
1775 | static inline void set_nlink(struct inode *inode, unsigned int nlink) | ||
1776 | { | ||
1777 | inode->__i_nlink = nlink; | ||
1778 | } | ||
1779 | |||
1780 | /** | ||
1757 | * inc_nlink - directly increment an inode's link count | 1781 | * inc_nlink - directly increment an inode's link count |
1758 | * @inode: inode | 1782 | * @inode: inode |
1759 | * | 1783 | * |
@@ -1763,7 +1787,7 @@ static inline void mark_inode_dirty_sync(struct inode *inode) | |||
1763 | */ | 1787 | */ |
1764 | static inline void inc_nlink(struct inode *inode) | 1788 | static inline void inc_nlink(struct inode *inode) |
1765 | { | 1789 | { |
1766 | inode->i_nlink++; | 1790 | inode->__i_nlink++; |
1767 | } | 1791 | } |
1768 | 1792 | ||
1769 | static inline void inode_inc_link_count(struct inode *inode) | 1793 | static inline void inode_inc_link_count(struct inode *inode) |
@@ -1785,7 +1809,7 @@ static inline void inode_inc_link_count(struct inode *inode) | |||
1785 | */ | 1809 | */ |
1786 | static inline void drop_nlink(struct inode *inode) | 1810 | static inline void drop_nlink(struct inode *inode) |
1787 | { | 1811 | { |
1788 | inode->i_nlink--; | 1812 | inode->__i_nlink--; |
1789 | } | 1813 | } |
1790 | 1814 | ||
1791 | /** | 1815 | /** |
@@ -1798,7 +1822,7 @@ static inline void drop_nlink(struct inode *inode) | |||
1798 | */ | 1822 | */ |
1799 | static inline void clear_nlink(struct inode *inode) | 1823 | static inline void clear_nlink(struct inode *inode) |
1800 | { | 1824 | { |
1801 | inode->i_nlink = 0; | 1825 | inode->__i_nlink = 0; |
1802 | } | 1826 | } |
1803 | 1827 | ||
1804 | static inline void inode_dec_link_count(struct inode *inode) | 1828 | static inline void inode_dec_link_count(struct inode *inode) |
@@ -1862,6 +1886,7 @@ extern struct dentry *mount_single(struct file_system_type *fs_type, | |||
1862 | extern struct dentry *mount_nodev(struct file_system_type *fs_type, | 1886 | extern struct dentry *mount_nodev(struct file_system_type *fs_type, |
1863 | int flags, void *data, | 1887 | int flags, void *data, |
1864 | int (*fill_super)(struct super_block *, void *, int)); | 1888 | int (*fill_super)(struct super_block *, void *, int)); |
1889 | extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path); | ||
1865 | void generic_shutdown_super(struct super_block *sb); | 1890 | void generic_shutdown_super(struct super_block *sb); |
1866 | void kill_block_super(struct super_block *sb); | 1891 | void kill_block_super(struct super_block *sb); |
1867 | void kill_anon_super(struct super_block *sb); | 1892 | void kill_anon_super(struct super_block *sb); |
@@ -1917,6 +1942,7 @@ extern int fd_statfs(int, struct kstatfs *); | |||
1917 | extern int statfs_by_dentry(struct dentry *, struct kstatfs *); | 1942 | extern int statfs_by_dentry(struct dentry *, struct kstatfs *); |
1918 | extern int freeze_super(struct super_block *super); | 1943 | extern int freeze_super(struct super_block *super); |
1919 | extern int thaw_super(struct super_block *super); | 1944 | extern int thaw_super(struct super_block *super); |
1945 | extern bool our_mnt(struct vfsmount *mnt); | ||
1920 | 1946 | ||
1921 | extern int current_umask(void); | 1947 | extern int current_umask(void); |
1922 | 1948 | ||
@@ -2634,8 +2660,8 @@ static const struct file_operations __fops = { \ | |||
2634 | .llseek = generic_file_llseek, \ | 2660 | .llseek = generic_file_llseek, \ |
2635 | }; | 2661 | }; |
2636 | 2662 | ||
2637 | static inline void __attribute__((format(printf, 1, 2))) | 2663 | static inline __printf(1, 2) |
2638 | __simple_attr_check_format(const char *fmt, ...) | 2664 | void __simple_attr_check_format(const char *fmt, ...) |
2639 | { | 2665 | { |
2640 | /* don't do anything, just let the compiler check the arguments; */ | 2666 | /* don't do anything, just let the compiler check the arguments; */ |
2641 | } | 2667 | } |
diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h index af095b54502e..ce31408b1e47 100644 --- a/include/linux/fscache-cache.h +++ b/include/linux/fscache-cache.h | |||
@@ -492,10 +492,10 @@ static inline void fscache_end_io(struct fscache_retrieval *op, | |||
492 | /* | 492 | /* |
493 | * out-of-line cache backend functions | 493 | * out-of-line cache backend functions |
494 | */ | 494 | */ |
495 | extern void fscache_init_cache(struct fscache_cache *cache, | 495 | extern __printf(3, 4) |
496 | const struct fscache_cache_ops *ops, | 496 | void fscache_init_cache(struct fscache_cache *cache, |
497 | const char *idfmt, | 497 | const struct fscache_cache_ops *ops, |
498 | ...) __attribute__ ((format (printf, 3, 4))); | 498 | const char *idfmt, ...); |
499 | 499 | ||
500 | extern int fscache_add_cache(struct fscache_cache *cache, | 500 | extern int fscache_add_cache(struct fscache_cache *cache, |
501 | struct fscache_object *fsdef, | 501 | struct fscache_object *fsdef, |
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index f0c0e8a47ae6..26eafcef75be 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/kallsyms.h> | 10 | #include <linux/kallsyms.h> |
11 | #include <linux/linkage.h> | 11 | #include <linux/linkage.h> |
12 | #include <linux/bitops.h> | 12 | #include <linux/bitops.h> |
13 | #include <linux/module.h> | ||
14 | #include <linux/ktime.h> | 13 | #include <linux/ktime.h> |
15 | #include <linux/sched.h> | 14 | #include <linux/sched.h> |
16 | #include <linux/types.h> | 15 | #include <linux/types.h> |
@@ -19,6 +18,7 @@ | |||
19 | 18 | ||
20 | #include <asm/ftrace.h> | 19 | #include <asm/ftrace.h> |
21 | 20 | ||
21 | struct module; | ||
22 | struct ftrace_hash; | 22 | struct ftrace_hash; |
23 | 23 | ||
24 | #ifdef CONFIG_FUNCTION_TRACER | 24 | #ifdef CONFIG_FUNCTION_TRACER |
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 96efa6794ea5..c3da42dd22ba 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -172,6 +172,7 @@ enum { | |||
172 | TRACE_EVENT_FL_FILTERED_BIT, | 172 | TRACE_EVENT_FL_FILTERED_BIT, |
173 | TRACE_EVENT_FL_RECORDED_CMD_BIT, | 173 | TRACE_EVENT_FL_RECORDED_CMD_BIT, |
174 | TRACE_EVENT_FL_CAP_ANY_BIT, | 174 | TRACE_EVENT_FL_CAP_ANY_BIT, |
175 | TRACE_EVENT_FL_NO_SET_FILTER_BIT, | ||
175 | }; | 176 | }; |
176 | 177 | ||
177 | enum { | 178 | enum { |
@@ -179,6 +180,7 @@ enum { | |||
179 | TRACE_EVENT_FL_FILTERED = (1 << TRACE_EVENT_FL_FILTERED_BIT), | 180 | TRACE_EVENT_FL_FILTERED = (1 << TRACE_EVENT_FL_FILTERED_BIT), |
180 | TRACE_EVENT_FL_RECORDED_CMD = (1 << TRACE_EVENT_FL_RECORDED_CMD_BIT), | 181 | TRACE_EVENT_FL_RECORDED_CMD = (1 << TRACE_EVENT_FL_RECORDED_CMD_BIT), |
181 | TRACE_EVENT_FL_CAP_ANY = (1 << TRACE_EVENT_FL_CAP_ANY_BIT), | 182 | TRACE_EVENT_FL_CAP_ANY = (1 << TRACE_EVENT_FL_CAP_ANY_BIT), |
183 | TRACE_EVENT_FL_NO_SET_FILTER = (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT), | ||
182 | }; | 184 | }; |
183 | 185 | ||
184 | struct ftrace_event_call { | 186 | struct ftrace_event_call { |
diff --git a/include/linux/gameport.h b/include/linux/gameport.h index b65a6f472775..b456b08d70ed 100644 --- a/include/linux/gameport.h +++ b/include/linux/gameport.h | |||
@@ -71,15 +71,14 @@ void gameport_close(struct gameport *gameport); | |||
71 | #if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE)) | 71 | #if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE)) |
72 | 72 | ||
73 | void __gameport_register_port(struct gameport *gameport, struct module *owner); | 73 | void __gameport_register_port(struct gameport *gameport, struct module *owner); |
74 | static inline void gameport_register_port(struct gameport *gameport) | 74 | /* use a define to avoid include chaining to get THIS_MODULE */ |
75 | { | 75 | #define gameport_register_port(gameport) \ |
76 | __gameport_register_port(gameport, THIS_MODULE); | 76 | __gameport_register_port(gameport, THIS_MODULE) |
77 | } | ||
78 | 77 | ||
79 | void gameport_unregister_port(struct gameport *gameport); | 78 | void gameport_unregister_port(struct gameport *gameport); |
80 | 79 | ||
81 | void gameport_set_phys(struct gameport *gameport, const char *fmt, ...) | 80 | __printf(2, 3) |
82 | __attribute__ ((format (printf, 2, 3))); | 81 | void gameport_set_phys(struct gameport *gameport, const char *fmt, ...); |
83 | 82 | ||
84 | #else | 83 | #else |
85 | 84 | ||
@@ -93,8 +92,8 @@ static inline void gameport_unregister_port(struct gameport *gameport) | |||
93 | return; | 92 | return; |
94 | } | 93 | } |
95 | 94 | ||
96 | static inline void gameport_set_phys(struct gameport *gameport, | 95 | static inline __printf(2, 3) |
97 | const char *fmt, ...) | 96 | void gameport_set_phys(struct gameport *gameport, const char *fmt, ...) |
98 | { | 97 | { |
99 | return; | 98 | return; |
100 | } | 99 | } |
@@ -145,12 +144,12 @@ static inline void gameport_unpin_driver(struct gameport *gameport) | |||
145 | mutex_unlock(&gameport->drv_mutex); | 144 | mutex_unlock(&gameport->drv_mutex); |
146 | } | 145 | } |
147 | 146 | ||
148 | int __gameport_register_driver(struct gameport_driver *drv, | 147 | int __must_check __gameport_register_driver(struct gameport_driver *drv, |
149 | struct module *owner, const char *mod_name); | 148 | struct module *owner, const char *mod_name); |
150 | static inline int __must_check gameport_register_driver(struct gameport_driver *drv) | 149 | |
151 | { | 150 | /* use a define to avoid include chaining to get THIS_MODULE & friends */ |
152 | return __gameport_register_driver(drv, THIS_MODULE, KBUILD_MODNAME); | 151 | #define gameport_register_driver(drv) \ |
153 | } | 152 | __gameport_register_driver(drv, THIS_MODULE, KBUILD_MODNAME) |
154 | 153 | ||
155 | void gameport_unregister_driver(struct gameport_driver *drv); | 154 | void gameport_unregister_driver(struct gameport_driver *drv); |
156 | 155 | ||
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 6957350e122f..6d18f3531f18 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -21,8 +21,6 @@ | |||
21 | #define dev_to_part(device) container_of((device), struct hd_struct, __dev) | 21 | #define dev_to_part(device) container_of((device), struct hd_struct, __dev) |
22 | #define disk_to_dev(disk) (&(disk)->part0.__dev) | 22 | #define disk_to_dev(disk) (&(disk)->part0.__dev) |
23 | #define part_to_dev(part) (&((part)->__dev)) | 23 | #define part_to_dev(part) (&((part)->__dev)) |
24 | #define alias_name(disk) ((disk)->alias ? (disk)->alias : \ | ||
25 | (disk)->disk_name) | ||
26 | 24 | ||
27 | extern struct device_type part_type; | 25 | extern struct device_type part_type; |
28 | extern struct kobject *block_depr; | 26 | extern struct kobject *block_depr; |
@@ -60,7 +58,6 @@ enum { | |||
60 | 58 | ||
61 | #define DISK_MAX_PARTS 256 | 59 | #define DISK_MAX_PARTS 256 |
62 | #define DISK_NAME_LEN 32 | 60 | #define DISK_NAME_LEN 32 |
63 | #define ALIAS_LEN 256 | ||
64 | 61 | ||
65 | #include <linux/major.h> | 62 | #include <linux/major.h> |
66 | #include <linux/device.h> | 63 | #include <linux/device.h> |
@@ -131,6 +128,7 @@ struct hd_struct { | |||
131 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ | 128 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ |
132 | #define GENHD_FL_NATIVE_CAPACITY 128 | 129 | #define GENHD_FL_NATIVE_CAPACITY 128 |
133 | #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 256 | 130 | #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 256 |
131 | #define GENHD_FL_NO_PART_SCAN 512 | ||
134 | 132 | ||
135 | enum { | 133 | enum { |
136 | DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ | 134 | DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ |
@@ -165,7 +163,6 @@ struct gendisk { | |||
165 | * disks that can't be partitioned. */ | 163 | * disks that can't be partitioned. */ |
166 | 164 | ||
167 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ | 165 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ |
168 | char *alias; /* alias name of disk */ | ||
169 | char *(*devnode)(struct gendisk *gd, mode_t *mode); | 166 | char *(*devnode)(struct gendisk *gd, mode_t *mode); |
170 | 167 | ||
171 | unsigned int events; /* supported events */ | 168 | unsigned int events; /* supported events */ |
@@ -238,9 +235,10 @@ static inline int disk_max_parts(struct gendisk *disk) | |||
238 | return disk->minors; | 235 | return disk->minors; |
239 | } | 236 | } |
240 | 237 | ||
241 | static inline bool disk_partitionable(struct gendisk *disk) | 238 | static inline bool disk_part_scan_enabled(struct gendisk *disk) |
242 | { | 239 | { |
243 | return disk_max_parts(disk) > 1; | 240 | return disk_max_parts(disk) > 1 && |
241 | !(disk->flags & GENHD_FL_NO_PART_SCAN); | ||
244 | } | 242 | } |
245 | 243 | ||
246 | static inline dev_t disk_devt(struct gendisk *disk) | 244 | static inline dev_t disk_devt(struct gendisk *disk) |
diff --git a/include/linux/hid.h b/include/linux/hid.h index deed5f9a1e1c..c235e4e8767c 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
@@ -697,10 +697,11 @@ extern void hid_destroy_device(struct hid_device *); | |||
697 | 697 | ||
698 | extern int __must_check __hid_register_driver(struct hid_driver *, | 698 | extern int __must_check __hid_register_driver(struct hid_driver *, |
699 | struct module *, const char *mod_name); | 699 | struct module *, const char *mod_name); |
700 | static inline int __must_check hid_register_driver(struct hid_driver *driver) | 700 | |
701 | { | 701 | /* use a define to avoid include chaining to get THIS_MODULE & friends */ |
702 | return __hid_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); | 702 | #define hid_register_driver(driver) \ |
703 | } | 703 | __hid_register_driver(driver, THIS_MODULE, KBUILD_MODNAME) |
704 | |||
704 | extern void hid_unregister_driver(struct hid_driver *); | 705 | extern void hid_unregister_driver(struct hid_driver *); |
705 | 706 | ||
706 | extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32); | 707 | extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32); |
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 48c32ebf65a7..a9ace9c32507 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h | |||
@@ -22,6 +22,11 @@ extern int zap_huge_pmd(struct mmu_gather *tlb, | |||
22 | extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, | 22 | extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, |
23 | unsigned long addr, unsigned long end, | 23 | unsigned long addr, unsigned long end, |
24 | unsigned char *vec); | 24 | unsigned char *vec); |
25 | extern int move_huge_pmd(struct vm_area_struct *vma, | ||
26 | struct vm_area_struct *new_vma, | ||
27 | unsigned long old_addr, | ||
28 | unsigned long new_addr, unsigned long old_end, | ||
29 | pmd_t *old_pmd, pmd_t *new_pmd); | ||
25 | extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, | 30 | extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, |
26 | unsigned long addr, pgprot_t newprot); | 31 | unsigned long addr, pgprot_t newprot); |
27 | 32 | ||
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 19644e0016bd..d9d6c868b86b 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -110,11 +110,6 @@ static inline void copy_huge_page(struct page *dst, struct page *src) | |||
110 | 110 | ||
111 | #define hugetlb_change_protection(vma, address, end, newprot) | 111 | #define hugetlb_change_protection(vma, address, end, newprot) |
112 | 112 | ||
113 | #ifndef HPAGE_MASK | ||
114 | #define HPAGE_MASK PAGE_MASK /* Keep the compiler happy */ | ||
115 | #define HPAGE_SIZE PAGE_SIZE | ||
116 | #endif | ||
117 | |||
118 | #endif /* !CONFIG_HUGETLB_PAGE */ | 113 | #endif /* !CONFIG_HUGETLB_PAGE */ |
119 | 114 | ||
120 | #define HUGETLB_ANON_FILE "anon_hugepage" | 115 | #define HUGETLB_ANON_FILE "anon_hugepage" |
diff --git a/include/linux/hwspinlock.h b/include/linux/hwspinlock.h index 8390efc457eb..aad6bd4b3efd 100644 --- a/include/linux/hwspinlock.h +++ b/include/linux/hwspinlock.h | |||
@@ -20,17 +20,49 @@ | |||
20 | 20 | ||
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/sched.h> | 22 | #include <linux/sched.h> |
23 | #include <linux/device.h> | ||
23 | 24 | ||
24 | /* hwspinlock mode argument */ | 25 | /* hwspinlock mode argument */ |
25 | #define HWLOCK_IRQSTATE 0x01 /* Disable interrupts, save state */ | 26 | #define HWLOCK_IRQSTATE 0x01 /* Disable interrupts, save state */ |
26 | #define HWLOCK_IRQ 0x02 /* Disable interrupts, don't save state */ | 27 | #define HWLOCK_IRQ 0x02 /* Disable interrupts, don't save state */ |
27 | 28 | ||
28 | struct hwspinlock; | 29 | struct hwspinlock; |
30 | struct hwspinlock_device; | ||
31 | struct hwspinlock_ops; | ||
32 | |||
33 | /** | ||
34 | * struct hwspinlock_pdata - platform data for hwspinlock drivers | ||
35 | * @base_id: base id for this hwspinlock device | ||
36 | * | ||
37 | * hwspinlock devices provide system-wide hardware locks that are used | ||
38 | * by remote processors that have no other way to achieve synchronization. | ||
39 | * | ||
40 | * To achieve that, each physical lock must have a system-wide id number | ||
41 | * that is agreed upon, otherwise remote processors can't possibly assume | ||
42 | * they're using the same hardware lock. | ||
43 | * | ||
44 | * Usually boards have a single hwspinlock device, which provides several | ||
45 | * hwspinlocks, and in this case, they can be trivially numbered 0 to | ||
46 | * (num-of-locks - 1). | ||
47 | * | ||
48 | * In case boards have several hwspinlocks devices, a different base id | ||
49 | * should be used for each hwspinlock device (they can't all use 0 as | ||
50 | * a starting id!). | ||
51 | * | ||
52 | * This platform data structure should be used to provide the base id | ||
53 | * for each device (which is trivially 0 when only a single hwspinlock | ||
54 | * device exists). It can be shared between different platforms, hence | ||
55 | * its location. | ||
56 | */ | ||
57 | struct hwspinlock_pdata { | ||
58 | int base_id; | ||
59 | }; | ||
29 | 60 | ||
30 | #if defined(CONFIG_HWSPINLOCK) || defined(CONFIG_HWSPINLOCK_MODULE) | 61 | #if defined(CONFIG_HWSPINLOCK) || defined(CONFIG_HWSPINLOCK_MODULE) |
31 | 62 | ||
32 | int hwspin_lock_register(struct hwspinlock *lock); | 63 | int hwspin_lock_register(struct hwspinlock_device *bank, struct device *dev, |
33 | struct hwspinlock *hwspin_lock_unregister(unsigned int id); | 64 | const struct hwspinlock_ops *ops, int base_id, int num_locks); |
65 | int hwspin_lock_unregister(struct hwspinlock_device *bank); | ||
34 | struct hwspinlock *hwspin_lock_request(void); | 66 | struct hwspinlock *hwspin_lock_request(void); |
35 | struct hwspinlock *hwspin_lock_request_specific(unsigned int id); | 67 | struct hwspinlock *hwspin_lock_request_specific(unsigned int id); |
36 | int hwspin_lock_free(struct hwspinlock *hwlock); | 68 | int hwspin_lock_free(struct hwspinlock *hwlock); |
@@ -86,7 +118,6 @@ int __hwspin_trylock(struct hwspinlock *hwlock, int mode, unsigned long *flags) | |||
86 | static inline | 118 | static inline |
87 | void __hwspin_unlock(struct hwspinlock *hwlock, int mode, unsigned long *flags) | 119 | void __hwspin_unlock(struct hwspinlock *hwlock, int mode, unsigned long *flags) |
88 | { | 120 | { |
89 | return 0; | ||
90 | } | 121 | } |
91 | 122 | ||
92 | static inline int hwspin_lock_get_id(struct hwspinlock *hwlock) | 123 | static inline int hwspin_lock_get_id(struct hwspinlock *hwlock) |
@@ -94,16 +125,6 @@ static inline int hwspin_lock_get_id(struct hwspinlock *hwlock) | |||
94 | return 0; | 125 | return 0; |
95 | } | 126 | } |
96 | 127 | ||
97 | static inline int hwspin_lock_register(struct hwspinlock *hwlock) | ||
98 | { | ||
99 | return -ENODEV; | ||
100 | } | ||
101 | |||
102 | static inline struct hwspinlock *hwspin_lock_unregister(unsigned int id) | ||
103 | { | ||
104 | return NULL; | ||
105 | } | ||
106 | |||
107 | #endif /* !CONFIG_HWSPINLOCK */ | 128 | #endif /* !CONFIG_HWSPINLOCK */ |
108 | 129 | ||
109 | /** | 130 | /** |
diff --git a/include/linux/i2c-omap.h b/include/linux/i2c-omap.h index 0aa0cbd676f7..92a0dc75bc74 100644 --- a/include/linux/i2c-omap.h +++ b/include/linux/i2c-omap.h | |||
@@ -32,10 +32,9 @@ | |||
32 | 32 | ||
33 | struct omap_i2c_bus_platform_data { | 33 | struct omap_i2c_bus_platform_data { |
34 | u32 clkrate; | 34 | u32 clkrate; |
35 | u32 rev; | ||
36 | u32 flags; | ||
35 | void (*set_mpu_wkup_lat)(struct device *dev, long set); | 37 | void (*set_mpu_wkup_lat)(struct device *dev, long set); |
36 | int (*device_enable) (struct platform_device *pdev); | ||
37 | int (*device_shutdown) (struct platform_device *pdev); | ||
38 | int (*device_idle) (struct platform_device *pdev); | ||
39 | }; | 38 | }; |
40 | 39 | ||
41 | #endif | 40 | #endif |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 38a21c3edd2c..07d103a06d64 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <linux/types.h> | 29 | #include <linux/types.h> |
30 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
31 | #include <linux/module.h> | ||
32 | #include <linux/mod_devicetable.h> | 31 | #include <linux/mod_devicetable.h> |
33 | #include <linux/device.h> /* for struct device */ | 32 | #include <linux/device.h> /* for struct device */ |
34 | #include <linux/sched.h> /* for completion */ | 33 | #include <linux/sched.h> /* for completion */ |
@@ -49,6 +48,8 @@ struct i2c_driver; | |||
49 | union i2c_smbus_data; | 48 | union i2c_smbus_data; |
50 | struct i2c_board_info; | 49 | struct i2c_board_info; |
51 | 50 | ||
51 | struct module; | ||
52 | |||
52 | #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) | 53 | #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) |
53 | /* | 54 | /* |
54 | * The master routines are the ones normally used to transmit data to devices | 55 | * The master routines are the ones normally used to transmit data to devices |
@@ -431,9 +432,6 @@ void i2c_unlock_adapter(struct i2c_adapter *); | |||
431 | /* Internal numbers to terminate lists */ | 432 | /* Internal numbers to terminate lists */ |
432 | #define I2C_CLIENT_END 0xfffeU | 433 | #define I2C_CLIENT_END 0xfffeU |
433 | 434 | ||
434 | /* The numbers to use to set I2C bus address */ | ||
435 | #define ANY_I2C_BUS 0xffff | ||
436 | |||
437 | /* Construct an I2C_CLIENT_END-terminated array of i2c addresses */ | 435 | /* Construct an I2C_CLIENT_END-terminated array of i2c addresses */ |
438 | #define I2C_ADDRS(addr, addrs...) \ | 436 | #define I2C_ADDRS(addr, addrs...) \ |
439 | ((const unsigned short []){ addr, ## addrs, I2C_CLIENT_END }) | 437 | ((const unsigned short []){ addr, ## addrs, I2C_CLIENT_END }) |
@@ -451,10 +449,9 @@ extern int i2c_add_numbered_adapter(struct i2c_adapter *); | |||
451 | extern int i2c_register_driver(struct module *, struct i2c_driver *); | 449 | extern int i2c_register_driver(struct module *, struct i2c_driver *); |
452 | extern void i2c_del_driver(struct i2c_driver *); | 450 | extern void i2c_del_driver(struct i2c_driver *); |
453 | 451 | ||
454 | static inline int i2c_add_driver(struct i2c_driver *driver) | 452 | /* use a define to avoid include chaining to get THIS_MODULE */ |
455 | { | 453 | #define i2c_add_driver(driver) \ |
456 | return i2c_register_driver(THIS_MODULE, driver); | 454 | i2c_register_driver(THIS_MODULE, driver) |
457 | } | ||
458 | 455 | ||
459 | extern struct i2c_client *i2c_use_client(struct i2c_client *client); | 456 | extern struct i2c_client *i2c_use_client(struct i2c_client *client); |
460 | extern void i2c_release_client(struct i2c_client *client); | 457 | extern void i2c_release_client(struct i2c_client *client); |
diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/twl4030-madc.h index 6427d298fbfc..530e11ba0738 100644 --- a/include/linux/i2c/twl4030-madc.h +++ b/include/linux/i2c/twl4030-madc.h | |||
@@ -129,6 +129,10 @@ enum sample_type { | |||
129 | #define REG_BCICTL2 0x024 | 129 | #define REG_BCICTL2 0x024 |
130 | #define TWL4030_BCI_ITHSENS 0x007 | 130 | #define TWL4030_BCI_ITHSENS 0x007 |
131 | 131 | ||
132 | /* Register and bits for GPBR1 register */ | ||
133 | #define TWL4030_REG_GPBR1 0x0c | ||
134 | #define TWL4030_GPBR1_MADC_HFCLK_EN (1 << 7) | ||
135 | |||
132 | struct twl4030_madc_user_parms { | 136 | struct twl4030_madc_user_parms { |
133 | int channel; | 137 | int channel; |
134 | int average; | 138 | int average; |
diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h index 80b480c97532..abf5028db981 100644 --- a/include/linux/inet_diag.h +++ b/include/linux/inet_diag.h | |||
@@ -98,9 +98,10 @@ enum { | |||
98 | INET_DIAG_VEGASINFO, | 98 | INET_DIAG_VEGASINFO, |
99 | INET_DIAG_CONG, | 99 | INET_DIAG_CONG, |
100 | INET_DIAG_TOS, | 100 | INET_DIAG_TOS, |
101 | INET_DIAG_TCLASS, | ||
101 | }; | 102 | }; |
102 | 103 | ||
103 | #define INET_DIAG_MAX INET_DIAG_TOS | 104 | #define INET_DIAG_MAX INET_DIAG_TCLASS |
104 | 105 | ||
105 | 106 | ||
106 | /* INET_DIAG_MEM */ | 107 | /* INET_DIAG_MEM */ |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 08ffab01e76c..32574eef9394 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -126,6 +126,8 @@ extern struct cred init_cred; | |||
126 | # define INIT_PERF_EVENTS(tsk) | 126 | # define INIT_PERF_EVENTS(tsk) |
127 | #endif | 127 | #endif |
128 | 128 | ||
129 | #define INIT_TASK_COMM "swapper" | ||
130 | |||
129 | /* | 131 | /* |
130 | * INIT_TASK is used to set up the first task table, touch at | 132 | * INIT_TASK is used to set up the first task table, touch at |
131 | * your own risk!. Base=0, limit=0x1fffff (=2MB) | 133 | * your own risk!. Base=0, limit=0x1fffff (=2MB) |
@@ -162,7 +164,7 @@ extern struct cred init_cred; | |||
162 | .group_leader = &tsk, \ | 164 | .group_leader = &tsk, \ |
163 | RCU_INIT_POINTER(.real_cred, &init_cred), \ | 165 | RCU_INIT_POINTER(.real_cred, &init_cred), \ |
164 | RCU_INIT_POINTER(.cred, &init_cred), \ | 166 | RCU_INIT_POINTER(.cred, &init_cred), \ |
165 | .comm = "swapper", \ | 167 | .comm = INIT_TASK_COMM, \ |
166 | .thread = INIT_THREAD, \ | 168 | .thread = INIT_THREAD, \ |
167 | .fs = &init_fs, \ | 169 | .fs = &init_fs, \ |
168 | .files = &init_files, \ | 170 | .files = &init_files, \ |
@@ -184,7 +186,6 @@ extern struct cred init_cred; | |||
184 | [PIDTYPE_SID] = INIT_PID_LINK(PIDTYPE_SID), \ | 186 | [PIDTYPE_SID] = INIT_PID_LINK(PIDTYPE_SID), \ |
185 | }, \ | 187 | }, \ |
186 | .thread_group = LIST_HEAD_INIT(tsk.thread_group), \ | 188 | .thread_group = LIST_HEAD_INIT(tsk.thread_group), \ |
187 | .dirties = INIT_PROP_LOCAL_SINGLE(dirties), \ | ||
188 | INIT_IDS \ | 189 | INIT_IDS \ |
189 | INIT_PERF_EVENTS(tsk) \ | 190 | INIT_PERF_EVENTS(tsk) \ |
190 | INIT_TRACE_IRQFLAGS \ | 191 | INIT_TRACE_IRQFLAGS \ |
diff --git a/include/linux/ipmi.h b/include/linux/ipmi.h index ca85cf894e33..bbd156bb953b 100644 --- a/include/linux/ipmi.h +++ b/include/linux/ipmi.h | |||
@@ -220,10 +220,11 @@ struct kernel_ipmi_msg { | |||
220 | * The in-kernel interface. | 220 | * The in-kernel interface. |
221 | */ | 221 | */ |
222 | #include <linux/list.h> | 222 | #include <linux/list.h> |
223 | #include <linux/module.h> | ||
224 | #include <linux/device.h> | 223 | #include <linux/device.h> |
225 | #include <linux/proc_fs.h> | 224 | #include <linux/proc_fs.h> |
226 | 225 | ||
226 | struct module; | ||
227 | |||
227 | /* Opaque type for a IPMI message user. One of these is needed to | 228 | /* Opaque type for a IPMI message user. One of these is needed to |
228 | send and receive messages. */ | 229 | send and receive messages. */ |
229 | typedef struct ipmi_user *ipmi_user_t; | 230 | typedef struct ipmi_user *ipmi_user_t; |
diff --git a/include/linux/ipmi_smi.h b/include/linux/ipmi_smi.h index 204f9cd26c16..3ef0d8b6aa6f 100644 --- a/include/linux/ipmi_smi.h +++ b/include/linux/ipmi_smi.h | |||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | #include <linux/ipmi_msgdefs.h> | 37 | #include <linux/ipmi_msgdefs.h> |
38 | #include <linux/proc_fs.h> | 38 | #include <linux/proc_fs.h> |
39 | #include <linux/module.h> | ||
40 | #include <linux/device.h> | 39 | #include <linux/device.h> |
41 | #include <linux/platform_device.h> | 40 | #include <linux/platform_device.h> |
42 | #include <linux/ipmi.h> | 41 | #include <linux/ipmi.h> |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 59e49c80cc2c..bff29c58da23 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -23,13 +23,13 @@ | |||
23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
24 | #include <linux/topology.h> | 24 | #include <linux/topology.h> |
25 | #include <linux/wait.h> | 25 | #include <linux/wait.h> |
26 | #include <linux/module.h> | ||
27 | 26 | ||
28 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
29 | #include <asm/ptrace.h> | 28 | #include <asm/ptrace.h> |
30 | #include <asm/irq_regs.h> | 29 | #include <asm/irq_regs.h> |
31 | 30 | ||
32 | struct seq_file; | 31 | struct seq_file; |
32 | struct module; | ||
33 | struct irq_desc; | 33 | struct irq_desc; |
34 | struct irq_data; | 34 | struct irq_data; |
35 | typedef void (*irq_flow_handler_t)(unsigned int irq, | 35 | typedef void (*irq_flow_handler_t)(unsigned int irq, |
@@ -567,29 +567,21 @@ static inline struct msi_desc *irq_data_get_msi(struct irq_data *d) | |||
567 | int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, | 567 | int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, |
568 | struct module *owner); | 568 | struct module *owner); |
569 | 569 | ||
570 | static inline int irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, | 570 | /* use macros to avoid needing export.h for THIS_MODULE */ |
571 | int node) | 571 | #define irq_alloc_descs(irq, from, cnt, node) \ |
572 | { | 572 | __irq_alloc_descs(irq, from, cnt, node, THIS_MODULE) |
573 | return __irq_alloc_descs(irq, from, cnt, node, THIS_MODULE); | ||
574 | } | ||
575 | 573 | ||
576 | void irq_free_descs(unsigned int irq, unsigned int cnt); | 574 | #define irq_alloc_desc(node) \ |
577 | int irq_reserve_irqs(unsigned int from, unsigned int cnt); | 575 | irq_alloc_descs(-1, 0, 1, node) |
578 | 576 | ||
579 | static inline int irq_alloc_desc(int node) | 577 | #define irq_alloc_desc_at(at, node) \ |
580 | { | 578 | irq_alloc_descs(at, at, 1, node) |
581 | return irq_alloc_descs(-1, 0, 1, node); | ||
582 | } | ||
583 | 579 | ||
584 | static inline int irq_alloc_desc_at(unsigned int at, int node) | 580 | #define irq_alloc_desc_from(from, node) \ |
585 | { | 581 | irq_alloc_descs(-1, from, 1, node) |
586 | return irq_alloc_descs(at, at, 1, node); | ||
587 | } | ||
588 | 582 | ||
589 | static inline int irq_alloc_desc_from(unsigned int from, int node) | 583 | void irq_free_descs(unsigned int irq, unsigned int cnt); |
590 | { | 584 | int irq_reserve_irqs(unsigned int from, unsigned int cnt); |
591 | return irq_alloc_descs(-1, from, 1, node); | ||
592 | } | ||
593 | 585 | ||
594 | static inline void irq_free_desc(unsigned int irq) | 586 | static inline void irq_free_desc(unsigned int irq) |
595 | { | 587 | { |
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index 6b69c2c9dff1..f1e2527006bd 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -11,6 +11,7 @@ | |||
11 | struct irq_affinity_notify; | 11 | struct irq_affinity_notify; |
12 | struct proc_dir_entry; | 12 | struct proc_dir_entry; |
13 | struct timer_rand_state; | 13 | struct timer_rand_state; |
14 | struct module; | ||
14 | /** | 15 | /** |
15 | * struct irq_desc - interrupt descriptor | 16 | * struct irq_desc - interrupt descriptor |
16 | * @irq_data: per irq and chip data passed down to chip functions | 17 | * @irq_data: per irq and chip data passed down to chip functions |
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 3ad553e8eae2..99834e581b9e 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h | |||
@@ -47,6 +47,7 @@ struct irq_domain_ops { | |||
47 | * of the irq_domain is responsible for allocating the array of | 47 | * of the irq_domain is responsible for allocating the array of |
48 | * irq_desc structures. | 48 | * irq_desc structures. |
49 | * @nr_irq: Number of irqs managed by the irq domain | 49 | * @nr_irq: Number of irqs managed by the irq domain |
50 | * @hwirq_base: Starting number for hwirqs managed by the irq domain | ||
50 | * @ops: pointer to irq_domain methods | 51 | * @ops: pointer to irq_domain methods |
51 | * @priv: private data pointer for use by owner. Not touched by irq_domain | 52 | * @priv: private data pointer for use by owner. Not touched by irq_domain |
52 | * core code. | 53 | * core code. |
@@ -57,6 +58,7 @@ struct irq_domain { | |||
57 | struct list_head list; | 58 | struct list_head list; |
58 | unsigned int irq_base; | 59 | unsigned int irq_base; |
59 | unsigned int nr_irq; | 60 | unsigned int nr_irq; |
61 | unsigned int hwirq_base; | ||
60 | const struct irq_domain_ops *ops; | 62 | const struct irq_domain_ops *ops; |
61 | void *priv; | 63 | void *priv; |
62 | struct device_node *of_node; | 64 | struct device_node *of_node; |
@@ -72,9 +74,21 @@ struct irq_domain { | |||
72 | static inline unsigned int irq_domain_to_irq(struct irq_domain *d, | 74 | static inline unsigned int irq_domain_to_irq(struct irq_domain *d, |
73 | unsigned long hwirq) | 75 | unsigned long hwirq) |
74 | { | 76 | { |
75 | return d->ops->to_irq ? d->ops->to_irq(d, hwirq) : d->irq_base + hwirq; | 77 | if (d->ops->to_irq) |
78 | return d->ops->to_irq(d, hwirq); | ||
79 | if (WARN_ON(hwirq < d->hwirq_base)) | ||
80 | return 0; | ||
81 | return d->irq_base + hwirq - d->hwirq_base; | ||
76 | } | 82 | } |
77 | 83 | ||
84 | #define irq_domain_for_each_hwirq(d, hw) \ | ||
85 | for (hw = d->hwirq_base; hw < d->hwirq_base + d->nr_irq; hw++) | ||
86 | |||
87 | #define irq_domain_for_each_irq(d, hw, irq) \ | ||
88 | for (hw = d->hwirq_base, irq = irq_domain_to_irq(d, hw); \ | ||
89 | hw < d->hwirq_base + d->nr_irq; \ | ||
90 | hw++, irq = irq_domain_to_irq(d, hw)) | ||
91 | |||
78 | extern void irq_domain_add(struct irq_domain *domain); | 92 | extern void irq_domain_add(struct irq_domain *domain); |
79 | extern void irq_domain_del(struct irq_domain *domain); | 93 | extern void irq_domain_del(struct irq_domain *domain); |
80 | #endif /* CONFIG_IRQ_DOMAIN */ | 94 | #endif /* CONFIG_IRQ_DOMAIN */ |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index e6a5e34bed4f..c7acdde3243d 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -244,6 +244,7 @@ typedef struct journal_superblock_s | |||
244 | 244 | ||
245 | #include <linux/fs.h> | 245 | #include <linux/fs.h> |
246 | #include <linux/sched.h> | 246 | #include <linux/sched.h> |
247 | #include <linux/jbd_common.h> | ||
247 | 248 | ||
248 | #define J_ASSERT(assert) BUG_ON(!(assert)) | 249 | #define J_ASSERT(assert) BUG_ON(!(assert)) |
249 | 250 | ||
@@ -270,69 +271,6 @@ typedef struct journal_superblock_s | |||
270 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) | 271 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) |
271 | #endif | 272 | #endif |
272 | 273 | ||
273 | enum jbd_state_bits { | ||
274 | BH_JBD /* Has an attached ext3 journal_head */ | ||
275 | = BH_PrivateStart, | ||
276 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
277 | BH_Freed, /* Has been freed (truncated) */ | ||
278 | BH_Revoked, /* Has been revoked from the log */ | ||
279 | BH_RevokeValid, /* Revoked flag is valid */ | ||
280 | BH_JBDDirty, /* Is dirty but journaled */ | ||
281 | BH_State, /* Pins most journal_head state */ | ||
282 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
283 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
284 | }; | ||
285 | |||
286 | BUFFER_FNS(JBD, jbd) | ||
287 | BUFFER_FNS(JWrite, jwrite) | ||
288 | BUFFER_FNS(JBDDirty, jbddirty) | ||
289 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
290 | BUFFER_FNS(Revoked, revoked) | ||
291 | TAS_BUFFER_FNS(Revoked, revoked) | ||
292 | BUFFER_FNS(RevokeValid, revokevalid) | ||
293 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
294 | BUFFER_FNS(Freed, freed) | ||
295 | |||
296 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
297 | { | ||
298 | return jh->b_bh; | ||
299 | } | ||
300 | |||
301 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
302 | { | ||
303 | return bh->b_private; | ||
304 | } | ||
305 | |||
306 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
307 | { | ||
308 | bit_spin_lock(BH_State, &bh->b_state); | ||
309 | } | ||
310 | |||
311 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
312 | { | ||
313 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
314 | } | ||
315 | |||
316 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
317 | { | ||
318 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
319 | } | ||
320 | |||
321 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
322 | { | ||
323 | bit_spin_unlock(BH_State, &bh->b_state); | ||
324 | } | ||
325 | |||
326 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
327 | { | ||
328 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
329 | } | ||
330 | |||
331 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
332 | { | ||
333 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
334 | } | ||
335 | |||
336 | struct jbd_revoke_table_s; | 274 | struct jbd_revoke_table_s; |
337 | 275 | ||
338 | /** | 276 | /** |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 38f307b8c334..2092ea21e469 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -275,6 +275,7 @@ typedef struct journal_superblock_s | |||
275 | 275 | ||
276 | #include <linux/fs.h> | 276 | #include <linux/fs.h> |
277 | #include <linux/sched.h> | 277 | #include <linux/sched.h> |
278 | #include <linux/jbd_common.h> | ||
278 | 279 | ||
279 | #define J_ASSERT(assert) BUG_ON(!(assert)) | 280 | #define J_ASSERT(assert) BUG_ON(!(assert)) |
280 | 281 | ||
@@ -302,70 +303,6 @@ typedef struct journal_superblock_s | |||
302 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) | 303 | #define J_EXPECT_JH(jh, expr, why...) __journal_expect(expr, ## why) |
303 | #endif | 304 | #endif |
304 | 305 | ||
305 | enum jbd_state_bits { | ||
306 | BH_JBD /* Has an attached ext3 journal_head */ | ||
307 | = BH_PrivateStart, | ||
308 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
309 | BH_Freed, /* Has been freed (truncated) */ | ||
310 | BH_Revoked, /* Has been revoked from the log */ | ||
311 | BH_RevokeValid, /* Revoked flag is valid */ | ||
312 | BH_JBDDirty, /* Is dirty but journaled */ | ||
313 | BH_State, /* Pins most journal_head state */ | ||
314 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
315 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
316 | BH_JBDPrivateStart, /* First bit available for private use by FS */ | ||
317 | }; | ||
318 | |||
319 | BUFFER_FNS(JBD, jbd) | ||
320 | BUFFER_FNS(JWrite, jwrite) | ||
321 | BUFFER_FNS(JBDDirty, jbddirty) | ||
322 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
323 | BUFFER_FNS(Revoked, revoked) | ||
324 | TAS_BUFFER_FNS(Revoked, revoked) | ||
325 | BUFFER_FNS(RevokeValid, revokevalid) | ||
326 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
327 | BUFFER_FNS(Freed, freed) | ||
328 | |||
329 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
330 | { | ||
331 | return jh->b_bh; | ||
332 | } | ||
333 | |||
334 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
335 | { | ||
336 | return bh->b_private; | ||
337 | } | ||
338 | |||
339 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
340 | { | ||
341 | bit_spin_lock(BH_State, &bh->b_state); | ||
342 | } | ||
343 | |||
344 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
345 | { | ||
346 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
347 | } | ||
348 | |||
349 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
350 | { | ||
351 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
352 | } | ||
353 | |||
354 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
355 | { | ||
356 | bit_spin_unlock(BH_State, &bh->b_state); | ||
357 | } | ||
358 | |||
359 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
360 | { | ||
361 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
362 | } | ||
363 | |||
364 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
365 | { | ||
366 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
367 | } | ||
368 | |||
369 | /* Flags in jbd_inode->i_flags */ | 306 | /* Flags in jbd_inode->i_flags */ |
370 | #define __JI_COMMIT_RUNNING 0 | 307 | #define __JI_COMMIT_RUNNING 0 |
371 | /* Commit of the inode data in progress. We use this flag to protect us from | 308 | /* Commit of the inode data in progress. We use this flag to protect us from |
@@ -1106,9 +1043,9 @@ static inline handle_t *journal_current_handle(void) | |||
1106 | */ | 1043 | */ |
1107 | 1044 | ||
1108 | extern handle_t *jbd2_journal_start(journal_t *, int nblocks); | 1045 | extern handle_t *jbd2_journal_start(journal_t *, int nblocks); |
1109 | extern handle_t *jbd2__journal_start(journal_t *, int nblocks, int gfp_mask); | 1046 | extern handle_t *jbd2__journal_start(journal_t *, int nblocks, gfp_t gfp_mask); |
1110 | extern int jbd2_journal_restart(handle_t *, int nblocks); | 1047 | extern int jbd2_journal_restart(handle_t *, int nblocks); |
1111 | extern int jbd2__journal_restart(handle_t *, int nblocks, int gfp_mask); | 1048 | extern int jbd2__journal_restart(handle_t *, int nblocks, gfp_t gfp_mask); |
1112 | extern int jbd2_journal_extend (handle_t *, int nblocks); | 1049 | extern int jbd2_journal_extend (handle_t *, int nblocks); |
1113 | extern int jbd2_journal_get_write_access(handle_t *, struct buffer_head *); | 1050 | extern int jbd2_journal_get_write_access(handle_t *, struct buffer_head *); |
1114 | extern int jbd2_journal_get_create_access (handle_t *, struct buffer_head *); | 1051 | extern int jbd2_journal_get_create_access (handle_t *, struct buffer_head *); |
diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h new file mode 100644 index 000000000000..6230f8556a4e --- /dev/null +++ b/include/linux/jbd_common.h | |||
@@ -0,0 +1,68 @@ | |||
1 | #ifndef _LINUX_JBD_STATE_H | ||
2 | #define _LINUX_JBD_STATE_H | ||
3 | |||
4 | enum jbd_state_bits { | ||
5 | BH_JBD /* Has an attached ext3 journal_head */ | ||
6 | = BH_PrivateStart, | ||
7 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | ||
8 | BH_Freed, /* Has been freed (truncated) */ | ||
9 | BH_Revoked, /* Has been revoked from the log */ | ||
10 | BH_RevokeValid, /* Revoked flag is valid */ | ||
11 | BH_JBDDirty, /* Is dirty but journaled */ | ||
12 | BH_State, /* Pins most journal_head state */ | ||
13 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | ||
14 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | ||
15 | BH_JBDPrivateStart, /* First bit available for private use by FS */ | ||
16 | }; | ||
17 | |||
18 | BUFFER_FNS(JBD, jbd) | ||
19 | BUFFER_FNS(JWrite, jwrite) | ||
20 | BUFFER_FNS(JBDDirty, jbddirty) | ||
21 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | ||
22 | BUFFER_FNS(Revoked, revoked) | ||
23 | TAS_BUFFER_FNS(Revoked, revoked) | ||
24 | BUFFER_FNS(RevokeValid, revokevalid) | ||
25 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | ||
26 | BUFFER_FNS(Freed, freed) | ||
27 | |||
28 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | ||
29 | { | ||
30 | return jh->b_bh; | ||
31 | } | ||
32 | |||
33 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | ||
34 | { | ||
35 | return bh->b_private; | ||
36 | } | ||
37 | |||
38 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | ||
39 | { | ||
40 | bit_spin_lock(BH_State, &bh->b_state); | ||
41 | } | ||
42 | |||
43 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | ||
44 | { | ||
45 | return bit_spin_trylock(BH_State, &bh->b_state); | ||
46 | } | ||
47 | |||
48 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | ||
49 | { | ||
50 | return bit_spin_is_locked(BH_State, &bh->b_state); | ||
51 | } | ||
52 | |||
53 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | ||
54 | { | ||
55 | bit_spin_unlock(BH_State, &bh->b_state); | ||
56 | } | ||
57 | |||
58 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | ||
59 | { | ||
60 | bit_spin_lock(BH_JournalHead, &bh->b_state); | ||
61 | } | ||
62 | |||
63 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | ||
64 | { | ||
65 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | ||
66 | } | ||
67 | |||
68 | #endif | ||
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index 66f23dc5e76a..388b0d425b50 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h | |||
@@ -16,7 +16,7 @@ struct jump_label_key { | |||
16 | 16 | ||
17 | # include <asm/jump_label.h> | 17 | # include <asm/jump_label.h> |
18 | # define HAVE_JUMP_LABEL | 18 | # define HAVE_JUMP_LABEL |
19 | #endif | 19 | #endif /* CC_HAVE_ASM_GOTO && CONFIG_JUMP_LABEL */ |
20 | 20 | ||
21 | enum jump_label_type { | 21 | enum jump_label_type { |
22 | JUMP_LABEL_DISABLE = 0, | 22 | JUMP_LABEL_DISABLE = 0, |
@@ -28,9 +28,9 @@ struct module; | |||
28 | #ifdef HAVE_JUMP_LABEL | 28 | #ifdef HAVE_JUMP_LABEL |
29 | 29 | ||
30 | #ifdef CONFIG_MODULES | 30 | #ifdef CONFIG_MODULES |
31 | #define JUMP_LABEL_INIT {{ 0 }, NULL, NULL} | 31 | #define JUMP_LABEL_INIT {ATOMIC_INIT(0), NULL, NULL} |
32 | #else | 32 | #else |
33 | #define JUMP_LABEL_INIT {{ 0 }, NULL} | 33 | #define JUMP_LABEL_INIT {ATOMIC_INIT(0), NULL} |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | static __always_inline bool static_branch(struct jump_label_key *key) | 36 | static __always_inline bool static_branch(struct jump_label_key *key) |
@@ -41,18 +41,20 @@ static __always_inline bool static_branch(struct jump_label_key *key) | |||
41 | extern struct jump_entry __start___jump_table[]; | 41 | extern struct jump_entry __start___jump_table[]; |
42 | extern struct jump_entry __stop___jump_table[]; | 42 | extern struct jump_entry __stop___jump_table[]; |
43 | 43 | ||
44 | extern void jump_label_init(void); | ||
44 | extern void jump_label_lock(void); | 45 | extern void jump_label_lock(void); |
45 | extern void jump_label_unlock(void); | 46 | extern void jump_label_unlock(void); |
46 | extern void arch_jump_label_transform(struct jump_entry *entry, | 47 | extern void arch_jump_label_transform(struct jump_entry *entry, |
47 | enum jump_label_type type); | 48 | enum jump_label_type type); |
48 | extern void arch_jump_label_text_poke_early(jump_label_t addr); | 49 | extern void arch_jump_label_transform_static(struct jump_entry *entry, |
50 | enum jump_label_type type); | ||
49 | extern int jump_label_text_reserved(void *start, void *end); | 51 | extern int jump_label_text_reserved(void *start, void *end); |
50 | extern void jump_label_inc(struct jump_label_key *key); | 52 | extern void jump_label_inc(struct jump_label_key *key); |
51 | extern void jump_label_dec(struct jump_label_key *key); | 53 | extern void jump_label_dec(struct jump_label_key *key); |
52 | extern bool jump_label_enabled(struct jump_label_key *key); | 54 | extern bool jump_label_enabled(struct jump_label_key *key); |
53 | extern void jump_label_apply_nops(struct module *mod); | 55 | extern void jump_label_apply_nops(struct module *mod); |
54 | 56 | ||
55 | #else | 57 | #else /* !HAVE_JUMP_LABEL */ |
56 | 58 | ||
57 | #include <linux/atomic.h> | 59 | #include <linux/atomic.h> |
58 | 60 | ||
@@ -62,6 +64,10 @@ struct jump_label_key { | |||
62 | atomic_t enabled; | 64 | atomic_t enabled; |
63 | }; | 65 | }; |
64 | 66 | ||
67 | static __always_inline void jump_label_init(void) | ||
68 | { | ||
69 | } | ||
70 | |||
65 | static __always_inline bool static_branch(struct jump_label_key *key) | 71 | static __always_inline bool static_branch(struct jump_label_key *key) |
66 | { | 72 | { |
67 | if (unlikely(atomic_read(&key->enabled))) | 73 | if (unlikely(atomic_read(&key->enabled))) |
@@ -96,7 +102,6 @@ static inline int jump_label_apply_nops(struct module *mod) | |||
96 | { | 102 | { |
97 | return 0; | 103 | return 0; |
98 | } | 104 | } |
105 | #endif /* HAVE_JUMP_LABEL */ | ||
99 | 106 | ||
100 | #endif | 107 | #endif /* _LINUX_JUMP_LABEL_H */ |
101 | |||
102 | #endif | ||
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 0df513b7a9f8..387571959dd9 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h | |||
@@ -101,9 +101,8 @@ static inline int lookup_symbol_attrs(unsigned long addr, unsigned long *size, u | |||
101 | #endif /*CONFIG_KALLSYMS*/ | 101 | #endif /*CONFIG_KALLSYMS*/ |
102 | 102 | ||
103 | /* This macro allows us to keep printk typechecking */ | 103 | /* This macro allows us to keep printk typechecking */ |
104 | static void __check_printsym_format(const char *fmt, ...) | 104 | static __printf(1, 2) |
105 | __attribute__((format(printf,1,2))); | 105 | void __check_printsym_format(const char *fmt, ...) |
106 | static inline void __check_printsym_format(const char *fmt, ...) | ||
107 | { | 106 | { |
108 | } | 107 | } |
109 | 108 | ||
diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 529d9a0c75a5..064725854db8 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h | |||
@@ -114,12 +114,9 @@ typedef enum { | |||
114 | } kdb_reason_t; | 114 | } kdb_reason_t; |
115 | 115 | ||
116 | extern int kdb_trap_printk; | 116 | extern int kdb_trap_printk; |
117 | extern int vkdb_printf(const char *fmt, va_list args) | 117 | extern __printf(1, 0) int vkdb_printf(const char *fmt, va_list args); |
118 | __attribute__ ((format (printf, 1, 0))); | 118 | extern __printf(1, 2) int kdb_printf(const char *, ...); |
119 | extern int kdb_printf(const char *, ...) | 119 | typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); |
120 | __attribute__ ((format (printf, 1, 2))); | ||
121 | typedef int (*kdb_printf_t)(const char *, ...) | ||
122 | __attribute__ ((format (printf, 1, 2))); | ||
123 | 120 | ||
124 | extern void kdb_init(int level); | 121 | extern void kdb_init(int level); |
125 | 122 | ||
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 8eefcf7e95eb..e8b1597b5cf2 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -287,6 +287,8 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t | |||
287 | return kstrtoint_from_user(s, count, base, res); | 287 | return kstrtoint_from_user(s, count, base, res); |
288 | } | 288 | } |
289 | 289 | ||
290 | /* Obsolete, do not use. Use kstrto<foo> instead */ | ||
291 | |||
290 | extern unsigned long simple_strtoul(const char *,char **,unsigned int); | 292 | extern unsigned long simple_strtoul(const char *,char **,unsigned int); |
291 | extern long simple_strtol(const char *,char **,unsigned int); | 293 | extern long simple_strtol(const char *,char **,unsigned int); |
292 | extern unsigned long long simple_strtoull(const char *,char **,unsigned int); | 294 | extern unsigned long long simple_strtoull(const char *,char **,unsigned int); |
@@ -296,20 +298,20 @@ extern long long simple_strtoll(const char *,char **,unsigned int); | |||
296 | #define strict_strtoull kstrtoull | 298 | #define strict_strtoull kstrtoull |
297 | #define strict_strtoll kstrtoll | 299 | #define strict_strtoll kstrtoll |
298 | 300 | ||
299 | extern int sprintf(char * buf, const char * fmt, ...) | 301 | /* lib/printf utilities */ |
300 | __attribute__ ((format (printf, 2, 3))); | 302 | |
301 | extern int vsprintf(char *buf, const char *, va_list) | 303 | extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...); |
302 | __attribute__ ((format (printf, 2, 0))); | 304 | extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list); |
303 | extern int snprintf(char * buf, size_t size, const char * fmt, ...) | 305 | extern __printf(3, 4) |
304 | __attribute__ ((format (printf, 3, 4))); | 306 | int snprintf(char *buf, size_t size, const char *fmt, ...); |
305 | extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) | 307 | extern __printf(3, 0) |
306 | __attribute__ ((format (printf, 3, 0))); | 308 | int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); |
307 | extern int scnprintf(char * buf, size_t size, const char * fmt, ...) | 309 | extern __printf(3, 4) |
308 | __attribute__ ((format (printf, 3, 4))); | 310 | int scnprintf(char *buf, size_t size, const char *fmt, ...); |
309 | extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) | 311 | extern __printf(3, 0) |
310 | __attribute__ ((format (printf, 3, 0))); | 312 | int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); |
311 | extern char *kasprintf(gfp_t gfp, const char *fmt, ...) | 313 | extern __printf(2, 3) |
312 | __attribute__ ((format (printf, 2, 3))); | 314 | char *kasprintf(gfp_t gfp, const char *fmt, ...); |
313 | extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); | 315 | extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); |
314 | 316 | ||
315 | extern int sscanf(const char *, const char *, ...) | 317 | extern int sscanf(const char *, const char *, ...) |
@@ -369,18 +371,24 @@ extern enum system_states { | |||
369 | #define TAINT_WARN 9 | 371 | #define TAINT_WARN 9 |
370 | #define TAINT_CRAP 10 | 372 | #define TAINT_CRAP 10 |
371 | #define TAINT_FIRMWARE_WORKAROUND 11 | 373 | #define TAINT_FIRMWARE_WORKAROUND 11 |
374 | #define TAINT_OOT_MODULE 12 | ||
372 | 375 | ||
373 | extern const char hex_asc[]; | 376 | extern const char hex_asc[]; |
374 | #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] | 377 | #define hex_asc_lo(x) hex_asc[((x) & 0x0f)] |
375 | #define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] | 378 | #define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] |
376 | 379 | ||
377 | static inline char *pack_hex_byte(char *buf, u8 byte) | 380 | static inline char *hex_byte_pack(char *buf, u8 byte) |
378 | { | 381 | { |
379 | *buf++ = hex_asc_hi(byte); | 382 | *buf++ = hex_asc_hi(byte); |
380 | *buf++ = hex_asc_lo(byte); | 383 | *buf++ = hex_asc_lo(byte); |
381 | return buf; | 384 | return buf; |
382 | } | 385 | } |
383 | 386 | ||
387 | static inline char * __deprecated pack_hex_byte(char *buf, u8 byte) | ||
388 | { | ||
389 | return hex_byte_pack(buf, byte); | ||
390 | } | ||
391 | |||
384 | extern int hex_to_bin(char ch); | 392 | extern int hex_to_bin(char ch); |
385 | extern int __must_check hex2bin(u8 *dst, const char *src, size_t count); | 393 | extern int __must_check hex2bin(u8 *dst, const char *src, size_t count); |
386 | 394 | ||
@@ -427,8 +435,8 @@ extern void tracing_start(void); | |||
427 | extern void tracing_stop(void); | 435 | extern void tracing_stop(void); |
428 | extern void ftrace_off_permanent(void); | 436 | extern void ftrace_off_permanent(void); |
429 | 437 | ||
430 | static inline void __attribute__ ((format (printf, 1, 2))) | 438 | static inline __printf(1, 2) |
431 | ____trace_printk_check_format(const char *fmt, ...) | 439 | void ____trace_printk_check_format(const char *fmt, ...) |
432 | { | 440 | { |
433 | } | 441 | } |
434 | #define __trace_printk_check_format(fmt, args...) \ | 442 | #define __trace_printk_check_format(fmt, args...) \ |
@@ -467,13 +475,11 @@ do { \ | |||
467 | __trace_printk(_THIS_IP_, fmt, ##args); \ | 475 | __trace_printk(_THIS_IP_, fmt, ##args); \ |
468 | } while (0) | 476 | } while (0) |
469 | 477 | ||
470 | extern int | 478 | extern __printf(2, 3) |
471 | __trace_bprintk(unsigned long ip, const char *fmt, ...) | 479 | int __trace_bprintk(unsigned long ip, const char *fmt, ...); |
472 | __attribute__ ((format (printf, 2, 3))); | ||
473 | 480 | ||
474 | extern int | 481 | extern __printf(2, 3) |
475 | __trace_printk(unsigned long ip, const char *fmt, ...) | 482 | int __trace_printk(unsigned long ip, const char *fmt, ...); |
476 | __attribute__ ((format (printf, 2, 3))); | ||
477 | 483 | ||
478 | extern void trace_dump_stack(void); | 484 | extern void trace_dump_stack(void); |
479 | 485 | ||
@@ -502,8 +508,8 @@ __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap); | |||
502 | 508 | ||
503 | extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); | 509 | extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); |
504 | #else | 510 | #else |
505 | static inline int | 511 | static inline __printf(1, 2) |
506 | trace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); | 512 | int trace_printk(const char *fmt, ...); |
507 | 513 | ||
508 | static inline void tracing_start(void) { } | 514 | static inline void tracing_start(void) { } |
509 | static inline void tracing_stop(void) { } | 515 | static inline void tracing_stop(void) { } |
diff --git a/include/linux/kexec.h b/include/linux/kexec.h index c2478a342cd7..2fa0901219d4 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h | |||
@@ -33,6 +33,14 @@ | |||
33 | #error KEXEC_ARCH not defined | 33 | #error KEXEC_ARCH not defined |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | #ifndef KEXEC_CRASH_CONTROL_MEMORY_LIMIT | ||
37 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT KEXEC_CONTROL_MEMORY_LIMIT | ||
38 | #endif | ||
39 | |||
40 | #ifndef KEXEC_CRASH_MEM_ALIGN | ||
41 | #define KEXEC_CRASH_MEM_ALIGN PAGE_SIZE | ||
42 | #endif | ||
43 | |||
36 | #define KEXEC_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4) | 44 | #define KEXEC_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4) |
37 | #define KEXEC_CORE_NOTE_NAME "CORE" | 45 | #define KEXEC_CORE_NOTE_NAME "CORE" |
38 | #define KEXEC_CORE_NOTE_NAME_BYTES ALIGN(sizeof(KEXEC_CORE_NOTE_NAME), 4) | 46 | #define KEXEC_CORE_NOTE_NAME_BYTES ALIGN(sizeof(KEXEC_CORE_NOTE_NAME), 4) |
@@ -129,9 +137,11 @@ extern void crash_kexec(struct pt_regs *); | |||
129 | int kexec_should_crash(struct task_struct *); | 137 | int kexec_should_crash(struct task_struct *); |
130 | void crash_save_cpu(struct pt_regs *regs, int cpu); | 138 | void crash_save_cpu(struct pt_regs *regs, int cpu); |
131 | void crash_save_vmcoreinfo(void); | 139 | void crash_save_vmcoreinfo(void); |
140 | void crash_map_reserved_pages(void); | ||
141 | void crash_unmap_reserved_pages(void); | ||
132 | void arch_crash_save_vmcoreinfo(void); | 142 | void arch_crash_save_vmcoreinfo(void); |
133 | void vmcoreinfo_append_str(const char *fmt, ...) | 143 | __printf(1, 2) |
134 | __attribute__ ((format (printf, 1, 2))); | 144 | void vmcoreinfo_append_str(const char *fmt, ...); |
135 | unsigned long paddr_vmcoreinfo_note(void); | 145 | unsigned long paddr_vmcoreinfo_note(void); |
136 | 146 | ||
137 | #define VMCOREINFO_OSRELEASE(value) \ | 147 | #define VMCOREINFO_OSRELEASE(value) \ |
diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 0da38cf7db7b..b16f65390734 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h | |||
@@ -32,8 +32,8 @@ | |||
32 | extern char modprobe_path[]; /* for sysctl */ | 32 | extern char modprobe_path[]; /* for sysctl */ |
33 | /* modprobe exit status on success, -ve on error. Return value | 33 | /* modprobe exit status on success, -ve on error. Return value |
34 | * usually useless though. */ | 34 | * usually useless though. */ |
35 | extern int __request_module(bool wait, const char *name, ...) \ | 35 | extern __printf(2, 3) |
36 | __attribute__((format(printf, 2, 3))); | 36 | int __request_module(bool wait, const char *name, ...); |
37 | #define request_module(mod...) __request_module(true, mod) | 37 | #define request_module(mod...) __request_module(true, mod) |
38 | #define request_module_nowait(mod...) __request_module(false, mod) | 38 | #define request_module_nowait(mod...) __request_module(false, mod) |
39 | #define try_then_request_module(x, mod...) \ | 39 | #define try_then_request_module(x, mod...) \ |
diff --git a/include/linux/kobject.h b/include/linux/kobject.h index 668729cc0fe9..ad81e1c51487 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h | |||
@@ -72,8 +72,8 @@ struct kobject { | |||
72 | unsigned int uevent_suppress:1; | 72 | unsigned int uevent_suppress:1; |
73 | }; | 73 | }; |
74 | 74 | ||
75 | extern int kobject_set_name(struct kobject *kobj, const char *name, ...) | 75 | extern __printf(2, 3) |
76 | __attribute__((format(printf, 2, 3))); | 76 | int kobject_set_name(struct kobject *kobj, const char *name, ...); |
77 | extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, | 77 | extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, |
78 | va_list vargs); | 78 | va_list vargs); |
79 | 79 | ||
@@ -83,15 +83,13 @@ static inline const char *kobject_name(const struct kobject *kobj) | |||
83 | } | 83 | } |
84 | 84 | ||
85 | extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); | 85 | extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); |
86 | extern int __must_check kobject_add(struct kobject *kobj, | 86 | extern __printf(3, 4) __must_check |
87 | struct kobject *parent, | 87 | int kobject_add(struct kobject *kobj, struct kobject *parent, |
88 | const char *fmt, ...) | 88 | const char *fmt, ...); |
89 | __attribute__((format(printf, 3, 4))); | 89 | extern __printf(4, 5) __must_check |
90 | extern int __must_check kobject_init_and_add(struct kobject *kobj, | 90 | int kobject_init_and_add(struct kobject *kobj, |
91 | struct kobj_type *ktype, | 91 | struct kobj_type *ktype, struct kobject *parent, |
92 | struct kobject *parent, | 92 | const char *fmt, ...); |
93 | const char *fmt, ...) | ||
94 | __attribute__((format(printf, 4, 5))); | ||
95 | 93 | ||
96 | extern void kobject_del(struct kobject *kobj); | 94 | extern void kobject_del(struct kobject *kobj); |
97 | 95 | ||
@@ -212,8 +210,8 @@ int kobject_uevent(struct kobject *kobj, enum kobject_action action); | |||
212 | int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | 210 | int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, |
213 | char *envp[]); | 211 | char *envp[]); |
214 | 212 | ||
215 | int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) | 213 | __printf(2, 3) |
216 | __attribute__((format (printf, 2, 3))); | 214 | int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...); |
217 | 215 | ||
218 | int kobject_action_type(const char *buf, size_t count, | 216 | int kobject_action_type(const char *buf, size_t count, |
219 | enum kobject_action *type); | 217 | enum kobject_action *type); |
@@ -226,7 +224,7 @@ static inline int kobject_uevent_env(struct kobject *kobj, | |||
226 | char *envp[]) | 224 | char *envp[]) |
227 | { return 0; } | 225 | { return 0; } |
228 | 226 | ||
229 | static inline __attribute__((format(printf, 2, 3))) | 227 | static inline __printf(2, 3) |
230 | int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) | 228 | int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) |
231 | { return 0; } | 229 | { return 0; } |
232 | 230 | ||
diff --git a/include/linux/kthread.h b/include/linux/kthread.h index 1e923e5e88e8..5cac19b3a266 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h | |||
@@ -4,11 +4,11 @@ | |||
4 | #include <linux/err.h> | 4 | #include <linux/err.h> |
5 | #include <linux/sched.h> | 5 | #include <linux/sched.h> |
6 | 6 | ||
7 | __printf(4, 5) | ||
7 | struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), | 8 | struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), |
8 | void *data, | 9 | void *data, |
9 | int node, | 10 | int node, |
10 | const char namefmt[], ...) | 11 | const char namefmt[], ...); |
11 | __attribute__((format(printf, 4, 5))); | ||
12 | 12 | ||
13 | #define kthread_create(threadfn, data, namefmt, arg...) \ | 13 | #define kthread_create(threadfn, data, namefmt, arg...) \ |
14 | kthread_create_on_node(threadfn, data, -1, namefmt, ##arg) | 14 | kthread_create_on_node(threadfn, data, -1, namefmt, ##arg) |
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index f47fcd30273d..c3892fc1d538 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -555,7 +555,6 @@ struct kvm_ppc_pvinfo { | |||
555 | #define KVM_CAP_PPC_SMT 64 | 555 | #define KVM_CAP_PPC_SMT 64 |
556 | #define KVM_CAP_PPC_RMA 65 | 556 | #define KVM_CAP_PPC_RMA 65 |
557 | #define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */ | 557 | #define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */ |
558 | #define KVM_CAP_PPC_HIOR 67 | ||
559 | #define KVM_CAP_PPC_PAPR 68 | 558 | #define KVM_CAP_PPC_PAPR 68 |
560 | #define KVM_CAP_S390_GMAP 71 | 559 | #define KVM_CAP_S390_GMAP 71 |
561 | 560 | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index 23fa829bf7a3..cafc09a64fe4 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -1256,13 +1256,13 @@ static inline int sata_srst_pmp(struct ata_link *link) | |||
1256 | /* | 1256 | /* |
1257 | * printk helpers | 1257 | * printk helpers |
1258 | */ | 1258 | */ |
1259 | __attribute__((format (printf, 3, 4))) | 1259 | __printf(3, 4) |
1260 | int ata_port_printk(const struct ata_port *ap, const char *level, | 1260 | int ata_port_printk(const struct ata_port *ap, const char *level, |
1261 | const char *fmt, ...); | 1261 | const char *fmt, ...); |
1262 | __attribute__((format (printf, 3, 4))) | 1262 | __printf(3, 4) |
1263 | int ata_link_printk(const struct ata_link *link, const char *level, | 1263 | int ata_link_printk(const struct ata_link *link, const char *level, |
1264 | const char *fmt, ...); | 1264 | const char *fmt, ...); |
1265 | __attribute__((format (printf, 3, 4))) | 1265 | __printf(3, 4) |
1266 | int ata_dev_printk(const struct ata_device *dev, const char *level, | 1266 | int ata_dev_printk(const struct ata_device *dev, const char *level, |
1267 | const char *fmt, ...); | 1267 | const char *fmt, ...); |
1268 | 1268 | ||
@@ -1304,10 +1304,10 @@ void ata_print_version(const struct device *dev, const char *version); | |||
1304 | /* | 1304 | /* |
1305 | * ata_eh_info helpers | 1305 | * ata_eh_info helpers |
1306 | */ | 1306 | */ |
1307 | extern void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) | 1307 | extern __printf(2, 3) |
1308 | __attribute__ ((format (printf, 2, 3))); | 1308 | void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...); |
1309 | extern void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) | 1309 | extern __printf(2, 3) |
1310 | __attribute__ ((format (printf, 2, 3))); | 1310 | void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...); |
1311 | extern void ata_ehi_clear_desc(struct ata_eh_info *ehi); | 1311 | extern void ata_ehi_clear_desc(struct ata_eh_info *ehi); |
1312 | 1312 | ||
1313 | static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi) | 1313 | static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi) |
@@ -1321,8 +1321,8 @@ static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi) | |||
1321 | /* | 1321 | /* |
1322 | * port description helpers | 1322 | * port description helpers |
1323 | */ | 1323 | */ |
1324 | extern void ata_port_desc(struct ata_port *ap, const char *fmt, ...) | 1324 | extern __printf(2, 3) |
1325 | __attribute__ ((format (printf, 2, 3))); | 1325 | void ata_port_desc(struct ata_port *ap, const char *fmt, ...); |
1326 | #ifdef CONFIG_PCI | 1326 | #ifdef CONFIG_PCI |
1327 | extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset, | 1327 | extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset, |
1328 | const char *name); | 1328 | const char *name); |
diff --git a/include/linux/lis3lv02d.h b/include/linux/lis3lv02d.h index d4292c8431e0..f1664c636af0 100644 --- a/include/linux/lis3lv02d.h +++ b/include/linux/lis3lv02d.h | |||
@@ -113,7 +113,6 @@ struct lis3lv02d_platform_data { | |||
113 | s8 axis_x; | 113 | s8 axis_x; |
114 | s8 axis_y; | 114 | s8 axis_y; |
115 | s8 axis_z; | 115 | s8 axis_z; |
116 | #define LIS3_USE_REGULATOR_CTRL 0x01 | ||
117 | #define LIS3_USE_BLOCK_READ 0x02 | 116 | #define LIS3_USE_BLOCK_READ 0x02 |
118 | u16 driver_features; | 117 | u16 driver_features; |
119 | int default_rate; | 118 | int default_rate; |
diff --git a/include/linux/llist.h b/include/linux/llist.h index 7287734e08d1..801b44b07aac 100644 --- a/include/linux/llist.h +++ b/include/linux/llist.h | |||
@@ -148,7 +148,7 @@ static inline struct llist_node *llist_next(struct llist_node *node) | |||
148 | * @new: new entry to be added | 148 | * @new: new entry to be added |
149 | * @head: the head for your lock-less list | 149 | * @head: the head for your lock-less list |
150 | * | 150 | * |
151 | * Return whether list is empty before adding. | 151 | * Returns true if the list was empty prior to adding this entry. |
152 | */ | 152 | */ |
153 | static inline bool llist_add(struct llist_node *new, struct llist_head *head) | 153 | static inline bool llist_add(struct llist_node *new, struct llist_head *head) |
154 | { | 154 | { |
diff --git a/include/linux/log2.h b/include/linux/log2.h index 25b808631cd9..fd7ff3d91e6a 100644 --- a/include/linux/log2.h +++ b/include/linux/log2.h | |||
@@ -185,7 +185,6 @@ unsigned long __rounddown_pow_of_two(unsigned long n) | |||
185 | #define rounddown_pow_of_two(n) \ | 185 | #define rounddown_pow_of_two(n) \ |
186 | ( \ | 186 | ( \ |
187 | __builtin_constant_p(n) ? ( \ | 187 | __builtin_constant_p(n) ? ( \ |
188 | (n == 1) ? 0 : \ | ||
189 | (1UL << ilog2(n))) : \ | 188 | (1UL << ilog2(n))) : \ |
190 | __rounddown_pow_of_two(n) \ | 189 | __rounddown_pow_of_two(n) \ |
191 | ) | 190 | ) |
diff --git a/include/linux/loop.h b/include/linux/loop.h index 683d69890119..11a41a8f08eb 100644 --- a/include/linux/loop.h +++ b/include/linux/loop.h | |||
@@ -73,8 +73,8 @@ struct loop_device { | |||
73 | */ | 73 | */ |
74 | enum { | 74 | enum { |
75 | LO_FLAGS_READ_ONLY = 1, | 75 | LO_FLAGS_READ_ONLY = 1, |
76 | LO_FLAGS_USE_AOPS = 2, | ||
77 | LO_FLAGS_AUTOCLEAR = 4, | 76 | LO_FLAGS_AUTOCLEAR = 4, |
77 | LO_FLAGS_PARTSCAN = 8, | ||
78 | }; | 78 | }; |
79 | 79 | ||
80 | #include <asm/posix_types.h> /* for __kernel_old_dev_t */ | 80 | #include <asm/posix_types.h> /* for __kernel_old_dev_t */ |
diff --git a/include/linux/magic.h b/include/linux/magic.h index 1e5df2af8d84..2d4beab0d5b7 100644 --- a/include/linux/magic.h +++ b/include/linux/magic.h | |||
@@ -30,11 +30,11 @@ | |||
30 | #define ANON_INODE_FS_MAGIC 0x09041934 | 30 | #define ANON_INODE_FS_MAGIC 0x09041934 |
31 | #define PSTOREFS_MAGIC 0x6165676C | 31 | #define PSTOREFS_MAGIC 0x6165676C |
32 | 32 | ||
33 | #define MINIX_SUPER_MAGIC 0x137F /* original minix fs */ | 33 | #define MINIX_SUPER_MAGIC 0x137F /* minix v1 fs, 14 char names */ |
34 | #define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */ | 34 | #define MINIX_SUPER_MAGIC2 0x138F /* minix v1 fs, 30 char names */ |
35 | #define MINIX2_SUPER_MAGIC 0x2468 /* minix V2 fs */ | 35 | #define MINIX2_SUPER_MAGIC 0x2468 /* minix v2 fs, 14 char names */ |
36 | #define MINIX2_SUPER_MAGIC2 0x2478 /* minix V2 fs, 30 char names */ | 36 | #define MINIX2_SUPER_MAGIC2 0x2478 /* minix v2 fs, 30 char names */ |
37 | #define MINIX3_SUPER_MAGIC 0x4d5a /* minix V3 fs */ | 37 | #define MINIX3_SUPER_MAGIC 0x4d5a /* minix v3 fs, 60 char names */ |
38 | 38 | ||
39 | #define MSDOS_SUPER_MAGIC 0x4d44 /* MD */ | 39 | #define MSDOS_SUPER_MAGIC 0x4d44 /* MD */ |
40 | #define NCP_SUPER_MAGIC 0x564c /* Guess, what 0x564c is :-) */ | 40 | #define NCP_SUPER_MAGIC 0x564c /* Guess, what 0x564c is :-) */ |
diff --git a/include/linux/mdio-bitbang.h b/include/linux/mdio-bitbang.h index 8ea9a42a4c02..0fe00cd4c93c 100644 --- a/include/linux/mdio-bitbang.h +++ b/include/linux/mdio-bitbang.h | |||
@@ -2,7 +2,8 @@ | |||
2 | #define __LINUX_MDIO_BITBANG_H | 2 | #define __LINUX_MDIO_BITBANG_H |
3 | 3 | ||
4 | #include <linux/phy.h> | 4 | #include <linux/phy.h> |
5 | #include <linux/module.h> | 5 | |
6 | struct module; | ||
6 | 7 | ||
7 | struct mdiobb_ctrl; | 8 | struct mdiobb_ctrl; |
8 | 9 | ||
diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 7525e38c434d..e6b843e16e81 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h | |||
@@ -80,6 +80,7 @@ extern phys_addr_t __memblock_alloc_base(phys_addr_t size, | |||
80 | phys_addr_t align, | 80 | phys_addr_t align, |
81 | phys_addr_t max_addr); | 81 | phys_addr_t max_addr); |
82 | extern phys_addr_t memblock_phys_mem_size(void); | 82 | extern phys_addr_t memblock_phys_mem_size(void); |
83 | extern phys_addr_t memblock_start_of_DRAM(void); | ||
83 | extern phys_addr_t memblock_end_of_DRAM(void); | 84 | extern phys_addr_t memblock_end_of_DRAM(void); |
84 | extern void memblock_enforce_memory_limit(phys_addr_t memory_limit); | 85 | extern void memblock_enforce_memory_limit(phys_addr_t memory_limit); |
85 | extern int memblock_is_memory(phys_addr_t addr); | 86 | extern int memblock_is_memory(phys_addr_t addr); |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 343bd7661f2a..b87068a1a09e 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -35,7 +35,8 @@ enum mem_cgroup_page_stat_item { | |||
35 | extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, | 35 | extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, |
36 | struct list_head *dst, | 36 | struct list_head *dst, |
37 | unsigned long *scanned, int order, | 37 | unsigned long *scanned, int order, |
38 | int mode, struct zone *z, | 38 | isolate_mode_t mode, |
39 | struct zone *z, | ||
39 | struct mem_cgroup *mem_cont, | 40 | struct mem_cgroup *mem_cont, |
40 | int active, int file); | 41 | int active, int file); |
41 | 42 | ||
@@ -77,8 +78,8 @@ extern void mem_cgroup_uncharge_end(void); | |||
77 | extern void mem_cgroup_uncharge_page(struct page *page); | 78 | extern void mem_cgroup_uncharge_page(struct page *page); |
78 | extern void mem_cgroup_uncharge_cache_page(struct page *page); | 79 | extern void mem_cgroup_uncharge_cache_page(struct page *page); |
79 | 80 | ||
80 | extern void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask); | 81 | extern void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask); |
81 | int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem); | 82 | int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *memcg); |
82 | 83 | ||
83 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); | 84 | extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page); |
84 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); | 85 | extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p); |
@@ -87,26 +88,28 @@ extern struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm); | |||
87 | static inline | 88 | static inline |
88 | int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) | 89 | int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup) |
89 | { | 90 | { |
90 | struct mem_cgroup *mem; | 91 | struct mem_cgroup *memcg; |
91 | rcu_read_lock(); | 92 | rcu_read_lock(); |
92 | mem = mem_cgroup_from_task(rcu_dereference((mm)->owner)); | 93 | memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner)); |
93 | rcu_read_unlock(); | 94 | rcu_read_unlock(); |
94 | return cgroup == mem; | 95 | return cgroup == memcg; |
95 | } | 96 | } |
96 | 97 | ||
97 | extern struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *mem); | 98 | extern struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *memcg); |
98 | 99 | ||
99 | extern int | 100 | extern int |
100 | mem_cgroup_prepare_migration(struct page *page, | 101 | mem_cgroup_prepare_migration(struct page *page, |
101 | struct page *newpage, struct mem_cgroup **ptr, gfp_t gfp_mask); | 102 | struct page *newpage, struct mem_cgroup **ptr, gfp_t gfp_mask); |
102 | extern void mem_cgroup_end_migration(struct mem_cgroup *mem, | 103 | extern void mem_cgroup_end_migration(struct mem_cgroup *memcg, |
103 | struct page *oldpage, struct page *newpage, bool migration_ok); | 104 | struct page *oldpage, struct page *newpage, bool migration_ok); |
104 | 105 | ||
105 | /* | 106 | /* |
106 | * For memory reclaim. | 107 | * For memory reclaim. |
107 | */ | 108 | */ |
108 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg); | 109 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg, |
109 | int mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg); | 110 | struct zone *zone); |
111 | int mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg, | ||
112 | struct zone *zone); | ||
110 | int mem_cgroup_select_victim_node(struct mem_cgroup *memcg); | 113 | int mem_cgroup_select_victim_node(struct mem_cgroup *memcg); |
111 | unsigned long mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, | 114 | unsigned long mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, |
112 | int nid, int zid, unsigned int lrumask); | 115 | int nid, int zid, unsigned int lrumask); |
@@ -147,7 +150,7 @@ static inline void mem_cgroup_dec_page_stat(struct page *page, | |||
147 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, | 150 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, |
148 | gfp_t gfp_mask, | 151 | gfp_t gfp_mask, |
149 | unsigned long *total_scanned); | 152 | unsigned long *total_scanned); |
150 | u64 mem_cgroup_get_limit(struct mem_cgroup *mem); | 153 | u64 mem_cgroup_get_limit(struct mem_cgroup *memcg); |
151 | 154 | ||
152 | void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx); | 155 | void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx); |
153 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 156 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
@@ -243,18 +246,20 @@ static inline struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm | |||
243 | return NULL; | 246 | return NULL; |
244 | } | 247 | } |
245 | 248 | ||
246 | static inline int mm_match_cgroup(struct mm_struct *mm, struct mem_cgroup *mem) | 249 | static inline int mm_match_cgroup(struct mm_struct *mm, |
250 | struct mem_cgroup *memcg) | ||
247 | { | 251 | { |
248 | return 1; | 252 | return 1; |
249 | } | 253 | } |
250 | 254 | ||
251 | static inline int task_in_mem_cgroup(struct task_struct *task, | 255 | static inline int task_in_mem_cgroup(struct task_struct *task, |
252 | const struct mem_cgroup *mem) | 256 | const struct mem_cgroup *memcg) |
253 | { | 257 | { |
254 | return 1; | 258 | return 1; |
255 | } | 259 | } |
256 | 260 | ||
257 | static inline struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *mem) | 261 | static inline struct cgroup_subsys_state |
262 | *mem_cgroup_css(struct mem_cgroup *memcg) | ||
258 | { | 263 | { |
259 | return NULL; | 264 | return NULL; |
260 | } | 265 | } |
@@ -266,22 +271,22 @@ mem_cgroup_prepare_migration(struct page *page, struct page *newpage, | |||
266 | return 0; | 271 | return 0; |
267 | } | 272 | } |
268 | 273 | ||
269 | static inline void mem_cgroup_end_migration(struct mem_cgroup *mem, | 274 | static inline void mem_cgroup_end_migration(struct mem_cgroup *memcg, |
270 | struct page *oldpage, struct page *newpage, bool migration_ok) | 275 | struct page *oldpage, struct page *newpage, bool migration_ok) |
271 | { | 276 | { |
272 | } | 277 | } |
273 | 278 | ||
274 | static inline int mem_cgroup_get_reclaim_priority(struct mem_cgroup *mem) | 279 | static inline int mem_cgroup_get_reclaim_priority(struct mem_cgroup *memcg) |
275 | { | 280 | { |
276 | return 0; | 281 | return 0; |
277 | } | 282 | } |
278 | 283 | ||
279 | static inline void mem_cgroup_note_reclaim_priority(struct mem_cgroup *mem, | 284 | static inline void mem_cgroup_note_reclaim_priority(struct mem_cgroup *memcg, |
280 | int priority) | 285 | int priority) |
281 | { | 286 | { |
282 | } | 287 | } |
283 | 288 | ||
284 | static inline void mem_cgroup_record_reclaim_priority(struct mem_cgroup *mem, | 289 | static inline void mem_cgroup_record_reclaim_priority(struct mem_cgroup *memcg, |
285 | int priority) | 290 | int priority) |
286 | { | 291 | { |
287 | } | 292 | } |
@@ -292,13 +297,13 @@ static inline bool mem_cgroup_disabled(void) | |||
292 | } | 297 | } |
293 | 298 | ||
294 | static inline int | 299 | static inline int |
295 | mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg) | 300 | mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg, struct zone *zone) |
296 | { | 301 | { |
297 | return 1; | 302 | return 1; |
298 | } | 303 | } |
299 | 304 | ||
300 | static inline int | 305 | static inline int |
301 | mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg) | 306 | mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg, struct zone *zone) |
302 | { | 307 | { |
303 | return 1; | 308 | return 1; |
304 | } | 309 | } |
@@ -347,7 +352,7 @@ unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, | |||
347 | } | 352 | } |
348 | 353 | ||
349 | static inline | 354 | static inline |
350 | u64 mem_cgroup_get_limit(struct mem_cgroup *mem) | 355 | u64 mem_cgroup_get_limit(struct mem_cgroup *memcg) |
351 | { | 356 | { |
352 | return 0; | 357 | return 0; |
353 | } | 358 | } |
diff --git a/include/linux/mfd/ab5500/ab5500.h b/include/linux/mfd/ab5500/ab5500.h new file mode 100644 index 000000000000..a720051ae933 --- /dev/null +++ b/include/linux/mfd/ab5500/ab5500.h | |||
@@ -0,0 +1,140 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson 2011 | ||
3 | * | ||
4 | * License Terms: GNU General Public License v2 | ||
5 | */ | ||
6 | #ifndef MFD_AB5500_H | ||
7 | #define MFD_AB5500_H | ||
8 | |||
9 | #include <linux/device.h> | ||
10 | |||
11 | enum ab5500_devid { | ||
12 | AB5500_DEVID_ADC, | ||
13 | AB5500_DEVID_LEDS, | ||
14 | AB5500_DEVID_POWER, | ||
15 | AB5500_DEVID_REGULATORS, | ||
16 | AB5500_DEVID_SIM, | ||
17 | AB5500_DEVID_RTC, | ||
18 | AB5500_DEVID_CHARGER, | ||
19 | AB5500_DEVID_FUELGAUGE, | ||
20 | AB5500_DEVID_VIBRATOR, | ||
21 | AB5500_DEVID_CODEC, | ||
22 | AB5500_DEVID_USB, | ||
23 | AB5500_DEVID_OTP, | ||
24 | AB5500_DEVID_VIDEO, | ||
25 | AB5500_DEVID_DBIECI, | ||
26 | AB5500_DEVID_ONSWA, | ||
27 | AB5500_NUM_DEVICES, | ||
28 | }; | ||
29 | |||
30 | enum ab5500_banks { | ||
31 | AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP = 0, | ||
32 | AB5500_BANK_VDDDIG_IO_I2C_CLK_TST = 1, | ||
33 | AB5500_BANK_VDENC = 2, | ||
34 | AB5500_BANK_SIM_USBSIM = 3, | ||
35 | AB5500_BANK_LED = 4, | ||
36 | AB5500_BANK_ADC = 5, | ||
37 | AB5500_BANK_RTC = 6, | ||
38 | AB5500_BANK_STARTUP = 7, | ||
39 | AB5500_BANK_DBI_ECI = 8, | ||
40 | AB5500_BANK_CHG = 9, | ||
41 | AB5500_BANK_FG_BATTCOM_ACC = 10, | ||
42 | AB5500_BANK_USB = 11, | ||
43 | AB5500_BANK_IT = 12, | ||
44 | AB5500_BANK_VIBRA = 13, | ||
45 | AB5500_BANK_AUDIO_HEADSETUSB = 14, | ||
46 | AB5500_NUM_BANKS = 15, | ||
47 | }; | ||
48 | |||
49 | enum ab5500_banks_addr { | ||
50 | AB5500_ADDR_VIT_IO_I2C_CLK_TST_OTP = 0x4A, | ||
51 | AB5500_ADDR_VDDDIG_IO_I2C_CLK_TST = 0x4B, | ||
52 | AB5500_ADDR_VDENC = 0x06, | ||
53 | AB5500_ADDR_SIM_USBSIM = 0x04, | ||
54 | AB5500_ADDR_LED = 0x10, | ||
55 | AB5500_ADDR_ADC = 0x0A, | ||
56 | AB5500_ADDR_RTC = 0x0F, | ||
57 | AB5500_ADDR_STARTUP = 0x03, | ||
58 | AB5500_ADDR_DBI_ECI = 0x07, | ||
59 | AB5500_ADDR_CHG = 0x0B, | ||
60 | AB5500_ADDR_FG_BATTCOM_ACC = 0x0C, | ||
61 | AB5500_ADDR_USB = 0x05, | ||
62 | AB5500_ADDR_IT = 0x0E, | ||
63 | AB5500_ADDR_VIBRA = 0x02, | ||
64 | AB5500_ADDR_AUDIO_HEADSETUSB = 0x0D, | ||
65 | }; | ||
66 | |||
67 | /* | ||
68 | * Interrupt register offsets | ||
69 | * Bank : 0x0E | ||
70 | */ | ||
71 | #define AB5500_IT_SOURCE0_REG 0x20 | ||
72 | #define AB5500_IT_SOURCE1_REG 0x21 | ||
73 | #define AB5500_IT_SOURCE2_REG 0x22 | ||
74 | #define AB5500_IT_SOURCE3_REG 0x23 | ||
75 | #define AB5500_IT_SOURCE4_REG 0x24 | ||
76 | #define AB5500_IT_SOURCE5_REG 0x25 | ||
77 | #define AB5500_IT_SOURCE6_REG 0x26 | ||
78 | #define AB5500_IT_SOURCE7_REG 0x27 | ||
79 | #define AB5500_IT_SOURCE8_REG 0x28 | ||
80 | #define AB5500_IT_SOURCE9_REG 0x29 | ||
81 | #define AB5500_IT_SOURCE10_REG 0x2A | ||
82 | #define AB5500_IT_SOURCE11_REG 0x2B | ||
83 | #define AB5500_IT_SOURCE12_REG 0x2C | ||
84 | #define AB5500_IT_SOURCE13_REG 0x2D | ||
85 | #define AB5500_IT_SOURCE14_REG 0x2E | ||
86 | #define AB5500_IT_SOURCE15_REG 0x2F | ||
87 | #define AB5500_IT_SOURCE16_REG 0x30 | ||
88 | #define AB5500_IT_SOURCE17_REG 0x31 | ||
89 | #define AB5500_IT_SOURCE18_REG 0x32 | ||
90 | #define AB5500_IT_SOURCE19_REG 0x33 | ||
91 | #define AB5500_IT_SOURCE20_REG 0x34 | ||
92 | #define AB5500_IT_SOURCE21_REG 0x35 | ||
93 | #define AB5500_IT_SOURCE22_REG 0x36 | ||
94 | #define AB5500_IT_SOURCE23_REG 0x37 | ||
95 | |||
96 | #define AB5500_NUM_IRQ_REGS 23 | ||
97 | |||
98 | /** | ||
99 | * struct ab5500 | ||
100 | * @access_mutex: lock out concurrent accesses to the AB registers | ||
101 | * @dev: a pointer to the device struct for this chip driver | ||
102 | * @ab5500_irq: the analog baseband irq | ||
103 | * @irq_base: the platform configuration irq base for subdevices | ||
104 | * @chip_name: name of this chip variant | ||
105 | * @chip_id: 8 bit chip ID for this chip variant | ||
106 | * @irq_lock: a lock to protect the mask | ||
107 | * @abb_events: a local bit mask of the prcmu wakeup events | ||
108 | * @event_mask: a local copy of the mask event registers | ||
109 | * @last_event_mask: a copy of the last event_mask written to hardware | ||
110 | * @startup_events: a copy of the first reading of the event registers | ||
111 | * @startup_events_read: whether the first events have been read | ||
112 | */ | ||
113 | struct ab5500 { | ||
114 | struct mutex access_mutex; | ||
115 | struct device *dev; | ||
116 | unsigned int ab5500_irq; | ||
117 | unsigned int irq_base; | ||
118 | char chip_name[32]; | ||
119 | u8 chip_id; | ||
120 | struct mutex irq_lock; | ||
121 | u32 abb_events; | ||
122 | u8 mask[AB5500_NUM_IRQ_REGS]; | ||
123 | u8 oldmask[AB5500_NUM_IRQ_REGS]; | ||
124 | u8 startup_events[AB5500_NUM_IRQ_REGS]; | ||
125 | bool startup_events_read; | ||
126 | #ifdef CONFIG_DEBUG_FS | ||
127 | unsigned int debug_bank; | ||
128 | unsigned int debug_address; | ||
129 | #endif | ||
130 | }; | ||
131 | |||
132 | struct ab5500_platform_data { | ||
133 | struct {unsigned int base; unsigned int count; } irq; | ||
134 | void *dev_data[AB5500_NUM_DEVICES]; | ||
135 | struct abx500_init_settings *init_settings; | ||
136 | unsigned int init_settings_sz; | ||
137 | bool pm_power_off; | ||
138 | }; | ||
139 | |||
140 | #endif /* MFD_AB5500_H */ | ||
diff --git a/include/linux/mfd/ab8500/gpadc.h b/include/linux/mfd/ab8500/gpadc.h index 46b954011f16..252966769d93 100644 --- a/include/linux/mfd/ab8500/gpadc.h +++ b/include/linux/mfd/ab8500/gpadc.h | |||
@@ -27,6 +27,9 @@ | |||
27 | struct ab8500_gpadc; | 27 | struct ab8500_gpadc; |
28 | 28 | ||
29 | struct ab8500_gpadc *ab8500_gpadc_get(char *name); | 29 | struct ab8500_gpadc *ab8500_gpadc_get(char *name); |
30 | int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 input); | 30 | int ab8500_gpadc_convert(struct ab8500_gpadc *gpadc, u8 channel); |
31 | int ab8500_gpadc_read_raw(struct ab8500_gpadc *gpadc, u8 channel); | ||
32 | int ab8500_gpadc_ad_to_voltage(struct ab8500_gpadc *gpadc, | ||
33 | u8 channel, int ad_value); | ||
31 | 34 | ||
32 | #endif /* _AB8500_GPADC_H */ | 35 | #endif /* _AB8500_GPADC_H */ |
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 896b5e47f16e..9970337ff041 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * | 6 | * |
7 | * ABX500 core access functions. | 7 | * ABX500 core access functions. |
8 | * The abx500 interface is used for the Analog Baseband chip | 8 | * The abx500 interface is used for the Analog Baseband chip |
9 | * ab3100, ab3550, ab5500, and ab8500. | 9 | * ab3100, ab5500, and ab8500. |
10 | * | 10 | * |
11 | * Author: Mattias Wallin <mattias.wallin@stericsson.com> | 11 | * Author: Mattias Wallin <mattias.wallin@stericsson.com> |
12 | * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com> | 12 | * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com> |
@@ -29,17 +29,16 @@ | |||
29 | #define AB3100_P1G 0xc6 | 29 | #define AB3100_P1G 0xc6 |
30 | #define AB3100_R2A 0xc7 | 30 | #define AB3100_R2A 0xc7 |
31 | #define AB3100_R2B 0xc8 | 31 | #define AB3100_R2B 0xc8 |
32 | #define AB3550_P1A 0x10 | ||
33 | #define AB5500_1_0 0x20 | 32 | #define AB5500_1_0 0x20 |
34 | #define AB5500_2_0 0x21 | 33 | #define AB5500_1_1 0x21 |
35 | #define AB5500_2_1 0x22 | 34 | #define AB5500_2_0 0x24 |
36 | 35 | ||
37 | /* AB8500 CIDs*/ | 36 | /* AB8500 CIDs*/ |
38 | #define AB8500_CUTEARLY 0x00 | ||
39 | #define AB8500_CUT1P0 0x10 | 37 | #define AB8500_CUT1P0 0x10 |
40 | #define AB8500_CUT1P1 0x11 | 38 | #define AB8500_CUT1P1 0x11 |
41 | #define AB8500_CUT2P0 0x20 | 39 | #define AB8500_CUT2P0 0x20 |
42 | #define AB8500_CUT3P0 0x30 | 40 | #define AB8500_CUT3P0 0x30 |
41 | #define AB8500_CUT3P3 0x33 | ||
43 | 42 | ||
44 | /* | 43 | /* |
45 | * AB3100, EVENTA1, A2 and A3 event register flags | 44 | * AB3100, EVENTA1, A2 and A3 event register flags |
@@ -143,39 +142,6 @@ int ab3100_event_register(struct ab3100 *ab3100, | |||
143 | int ab3100_event_unregister(struct ab3100 *ab3100, | 142 | int ab3100_event_unregister(struct ab3100 *ab3100, |
144 | struct notifier_block *nb); | 143 | struct notifier_block *nb); |
145 | 144 | ||
146 | /* AB3550, STR register flags */ | ||
147 | #define AB3550_STR_ONSWA (0x01) | ||
148 | #define AB3550_STR_ONSWB (0x02) | ||
149 | #define AB3550_STR_ONSWC (0x04) | ||
150 | #define AB3550_STR_DCIO (0x08) | ||
151 | #define AB3550_STR_BOOT_MODE (0x10) | ||
152 | #define AB3550_STR_SIM_OFF (0x20) | ||
153 | #define AB3550_STR_BATT_REMOVAL (0x40) | ||
154 | #define AB3550_STR_VBUS (0x80) | ||
155 | |||
156 | /* Interrupt mask registers */ | ||
157 | #define AB3550_IMR1 0x29 | ||
158 | #define AB3550_IMR2 0x2a | ||
159 | #define AB3550_IMR3 0x2b | ||
160 | #define AB3550_IMR4 0x2c | ||
161 | #define AB3550_IMR5 0x2d | ||
162 | |||
163 | enum ab3550_devid { | ||
164 | AB3550_DEVID_ADC, | ||
165 | AB3550_DEVID_DAC, | ||
166 | AB3550_DEVID_LEDS, | ||
167 | AB3550_DEVID_POWER, | ||
168 | AB3550_DEVID_REGULATORS, | ||
169 | AB3550_DEVID_SIM, | ||
170 | AB3550_DEVID_UART, | ||
171 | AB3550_DEVID_RTC, | ||
172 | AB3550_DEVID_CHARGER, | ||
173 | AB3550_DEVID_FUELGAUGE, | ||
174 | AB3550_DEVID_VIBRATOR, | ||
175 | AB3550_DEVID_CODEC, | ||
176 | AB3550_NUM_DEVICES, | ||
177 | }; | ||
178 | |||
179 | /** | 145 | /** |
180 | * struct abx500_init_setting | 146 | * struct abx500_init_setting |
181 | * Initial value of the registers for driver to use during setup. | 147 | * Initial value of the registers for driver to use during setup. |
@@ -186,18 +152,6 @@ struct abx500_init_settings { | |||
186 | u8 setting; | 152 | u8 setting; |
187 | }; | 153 | }; |
188 | 154 | ||
189 | /** | ||
190 | * struct ab3550_platform_data | ||
191 | * Data supplied to initialize board connections to the AB3550 | ||
192 | */ | ||
193 | struct ab3550_platform_data { | ||
194 | struct {unsigned int base; unsigned int count; } irq; | ||
195 | void *dev_data[AB3550_NUM_DEVICES]; | ||
196 | size_t dev_data_sz[AB3550_NUM_DEVICES]; | ||
197 | struct abx500_init_settings *init_settings; | ||
198 | unsigned int init_settings_sz; | ||
199 | }; | ||
200 | |||
201 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, | 155 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, |
202 | u8 value); | 156 | u8 value); |
203 | int abx500_get_register_interruptible(struct device *dev, u8 bank, u8 reg, | 157 | int abx500_get_register_interruptible(struct device *dev, u8 bank, u8 reg, |
diff --git a/include/linux/mfd/db5500-prcmu.h b/include/linux/mfd/db5500-prcmu.h index f0977986402c..9890687f582d 100644 --- a/include/linux/mfd/db5500-prcmu.h +++ b/include/linux/mfd/db5500-prcmu.h | |||
@@ -5,21 +5,35 @@ | |||
5 | * | 5 | * |
6 | * U5500 PRCMU API. | 6 | * U5500 PRCMU API. |
7 | */ | 7 | */ |
8 | #ifndef __MACH_PRCMU_U5500_H | 8 | #ifndef __MFD_DB5500_PRCMU_H |
9 | #define __MACH_PRCMU_U5500_H | 9 | #define __MFD_DB5500_PRCMU_H |
10 | 10 | ||
11 | #ifdef CONFIG_UX500_SOC_DB5500 | 11 | #ifdef CONFIG_MFD_DB5500_PRCMU |
12 | 12 | ||
13 | void db5500_prcmu_early_init(void); | 13 | void db5500_prcmu_early_init(void); |
14 | 14 | int db5500_prcmu_set_epod(u16 epod_id, u8 epod_state); | |
15 | int db5500_prcmu_set_display_clocks(void); | ||
16 | int db5500_prcmu_disable_dsipll(void); | ||
17 | int db5500_prcmu_enable_dsipll(void); | ||
15 | int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | 18 | int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); |
16 | int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | 19 | int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); |
20 | void db5500_prcmu_enable_wakeups(u32 wakeups); | ||
21 | int db5500_prcmu_request_clock(u8 clock, bool enable); | ||
22 | void db5500_prcmu_config_abb_event_readout(u32 abb_events); | ||
23 | void db5500_prcmu_get_abb_event_buffer(void __iomem **buf); | ||
24 | int prcmu_resetout(u8 resoutn, u8 state); | ||
25 | int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
26 | bool keep_ap_pll); | ||
27 | int db5500_prcmu_config_esram0_deep_sleep(u8 state); | ||
28 | void db5500_prcmu_system_reset(u16 reset_code); | ||
29 | u16 db5500_prcmu_get_reset_code(void); | ||
30 | bool db5500_prcmu_is_ac_wake_requested(void); | ||
31 | int db5500_prcmu_set_arm_opp(u8 opp); | ||
32 | int db5500_prcmu_get_arm_opp(void); | ||
17 | 33 | ||
18 | #else /* !CONFIG_UX500_SOC_DB5500 */ | 34 | #else /* !CONFIG_UX500_SOC_DB5500 */ |
19 | 35 | ||
20 | static inline void db5500_prcmu_early_init(void) | 36 | static inline void db5500_prcmu_early_init(void) {} |
21 | { | ||
22 | } | ||
23 | 37 | ||
24 | static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) | 38 | static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) |
25 | { | 39 | { |
@@ -31,15 +45,75 @@ static inline int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | |||
31 | return -ENOSYS; | 45 | return -ENOSYS; |
32 | } | 46 | } |
33 | 47 | ||
34 | #endif /* CONFIG_UX500_SOC_DB5500 */ | 48 | static inline int db5500_prcmu_request_clock(u8 clock, bool enable) |
49 | { | ||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | static inline int db5500_prcmu_set_display_clocks(void) | ||
54 | { | ||
55 | return 0; | ||
56 | } | ||
57 | |||
58 | static inline int db5500_prcmu_disable_dsipll(void) | ||
59 | { | ||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | static inline int db5500_prcmu_enable_dsipll(void) | ||
64 | { | ||
65 | return 0; | ||
66 | } | ||
35 | 67 | ||
36 | static inline int db5500_prcmu_config_abb_event_readout(u32 abb_events) | 68 | static inline int db5500_prcmu_config_esram0_deep_sleep(u8 state) |
37 | { | 69 | { |
38 | #ifdef CONFIG_MACH_U5500_SIMULATOR | ||
39 | return 0; | 70 | return 0; |
40 | #else | ||
41 | return -1; | ||
42 | #endif | ||
43 | } | 71 | } |
44 | 72 | ||
45 | #endif /* __MACH_PRCMU_U5500_H */ | 73 | static inline void db5500_prcmu_enable_wakeups(u32 wakeups) {} |
74 | |||
75 | static inline int prcmu_resetout(u8 resoutn, u8 state) | ||
76 | { | ||
77 | return 0; | ||
78 | } | ||
79 | |||
80 | static inline int db5500_prcmu_set_epod(u16 epod_id, u8 epod_state) | ||
81 | { | ||
82 | return 0; | ||
83 | } | ||
84 | |||
85 | static inline void db5500_prcmu_get_abb_event_buffer(void __iomem **buf) {} | ||
86 | static inline void db5500_prcmu_config_abb_event_readout(u32 abb_events) {} | ||
87 | |||
88 | static inline int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
89 | bool keep_ap_pll) | ||
90 | { | ||
91 | return 0; | ||
92 | } | ||
93 | |||
94 | static inline void db5500_prcmu_system_reset(u16 reset_code) {} | ||
95 | |||
96 | static inline u16 db5500_prcmu_get_reset_code(void) | ||
97 | { | ||
98 | return 0; | ||
99 | } | ||
100 | |||
101 | static inline bool db5500_prcmu_is_ac_wake_requested(void) | ||
102 | { | ||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | static inline int db5500_prcmu_set_arm_opp(u8 opp) | ||
107 | { | ||
108 | return 0; | ||
109 | } | ||
110 | |||
111 | static inline int db5500_prcmu_get_arm_opp(void) | ||
112 | { | ||
113 | return 0; | ||
114 | } | ||
115 | |||
116 | |||
117 | #endif /* CONFIG_MFD_DB5500_PRCMU */ | ||
118 | |||
119 | #endif /* __MFD_DB5500_PRCMU_H */ | ||
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h index 917dbcab701c..60d27f7bfc1f 100644 --- a/include/linux/mfd/db8500-prcmu.h +++ b/include/linux/mfd/db8500-prcmu.h | |||
@@ -11,7 +11,6 @@ | |||
11 | #define __MFD_DB8500_PRCMU_H | 11 | #define __MFD_DB8500_PRCMU_H |
12 | 12 | ||
13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
14 | #include <linux/notifier.h> | ||
15 | 14 | ||
16 | /* This portion previously known as <mach/prcmu-fw-defs_v1.h> */ | 15 | /* This portion previously known as <mach/prcmu-fw-defs_v1.h> */ |
17 | 16 | ||
@@ -133,7 +132,7 @@ enum ap_pwrst { | |||
133 | * @APEXECUTE_TO_APIDLE: Power state transition from ApExecute to ApIdle | 132 | * @APEXECUTE_TO_APIDLE: Power state transition from ApExecute to ApIdle |
134 | */ | 133 | */ |
135 | enum ap_pwrst_trans { | 134 | enum ap_pwrst_trans { |
136 | NO_TRANSITION = 0x00, | 135 | PRCMU_AP_NO_CHANGE = 0x00, |
137 | APEXECUTE_TO_APSLEEP = 0x01, | 136 | APEXECUTE_TO_APSLEEP = 0x01, |
138 | APIDLE_TO_APSLEEP = 0x02, /* To be removed */ | 137 | APIDLE_TO_APSLEEP = 0x02, /* To be removed */ |
139 | PRCMU_AP_SLEEP = 0x01, | 138 | PRCMU_AP_SLEEP = 0x01, |
@@ -146,54 +145,6 @@ enum ap_pwrst_trans { | |||
146 | }; | 145 | }; |
147 | 146 | ||
148 | /** | 147 | /** |
149 | * enum ddr_pwrst - DDR power states definition | ||
150 | * @DDR_PWR_STATE_UNCHANGED: SDRAM and DDR controller state is unchanged | ||
151 | * @DDR_PWR_STATE_ON: | ||
152 | * @DDR_PWR_STATE_OFFLOWLAT: | ||
153 | * @DDR_PWR_STATE_OFFHIGHLAT: | ||
154 | */ | ||
155 | enum ddr_pwrst { | ||
156 | DDR_PWR_STATE_UNCHANGED = 0x00, | ||
157 | DDR_PWR_STATE_ON = 0x01, | ||
158 | DDR_PWR_STATE_OFFLOWLAT = 0x02, | ||
159 | DDR_PWR_STATE_OFFHIGHLAT = 0x03 | ||
160 | }; | ||
161 | |||
162 | /** | ||
163 | * enum arm_opp - ARM OPP states definition | ||
164 | * @ARM_OPP_INIT: | ||
165 | * @ARM_NO_CHANGE: The ARM operating point is unchanged | ||
166 | * @ARM_100_OPP: The new ARM operating point is arm100opp | ||
167 | * @ARM_50_OPP: The new ARM operating point is arm50opp | ||
168 | * @ARM_MAX_OPP: Operating point is "max" (more than 100) | ||
169 | * @ARM_MAX_FREQ100OPP: Set max opp if available, else 100 | ||
170 | * @ARM_EXTCLK: The new ARM operating point is armExtClk | ||
171 | */ | ||
172 | enum arm_opp { | ||
173 | ARM_OPP_INIT = 0x00, | ||
174 | ARM_NO_CHANGE = 0x01, | ||
175 | ARM_100_OPP = 0x02, | ||
176 | ARM_50_OPP = 0x03, | ||
177 | ARM_MAX_OPP = 0x04, | ||
178 | ARM_MAX_FREQ100OPP = 0x05, | ||
179 | ARM_EXTCLK = 0x07 | ||
180 | }; | ||
181 | |||
182 | /** | ||
183 | * enum ape_opp - APE OPP states definition | ||
184 | * @APE_OPP_INIT: | ||
185 | * @APE_NO_CHANGE: The APE operating point is unchanged | ||
186 | * @APE_100_OPP: The new APE operating point is ape100opp | ||
187 | * @APE_50_OPP: 50% | ||
188 | */ | ||
189 | enum ape_opp { | ||
190 | APE_OPP_INIT = 0x00, | ||
191 | APE_NO_CHANGE = 0x01, | ||
192 | APE_100_OPP = 0x02, | ||
193 | APE_50_OPP = 0x03 | ||
194 | }; | ||
195 | |||
196 | /** | ||
197 | * enum hw_acc_state - State definition for hardware accelerator | 148 | * enum hw_acc_state - State definition for hardware accelerator |
198 | * @HW_NO_CHANGE: The hardware accelerator state must remain unchanged | 149 | * @HW_NO_CHANGE: The hardware accelerator state must remain unchanged |
199 | * @HW_OFF: The hardware accelerator must be switched off | 150 | * @HW_OFF: The hardware accelerator must be switched off |
@@ -469,26 +420,6 @@ enum auto_enable { | |||
469 | 420 | ||
470 | /* End of file previously known as prcmu-fw-defs_v1.h */ | 421 | /* End of file previously known as prcmu-fw-defs_v1.h */ |
471 | 422 | ||
472 | /* PRCMU Wakeup defines */ | ||
473 | enum prcmu_wakeup_index { | ||
474 | PRCMU_WAKEUP_INDEX_RTC, | ||
475 | PRCMU_WAKEUP_INDEX_RTT0, | ||
476 | PRCMU_WAKEUP_INDEX_RTT1, | ||
477 | PRCMU_WAKEUP_INDEX_HSI0, | ||
478 | PRCMU_WAKEUP_INDEX_HSI1, | ||
479 | PRCMU_WAKEUP_INDEX_USB, | ||
480 | PRCMU_WAKEUP_INDEX_ABB, | ||
481 | PRCMU_WAKEUP_INDEX_ABB_FIFO, | ||
482 | PRCMU_WAKEUP_INDEX_ARM, | ||
483 | NUM_PRCMU_WAKEUP_INDICES | ||
484 | }; | ||
485 | #define PRCMU_WAKEUP(_name) (BIT(PRCMU_WAKEUP_INDEX_##_name)) | ||
486 | |||
487 | /* PRCMU QoS APE OPP class */ | ||
488 | #define PRCMU_QOS_APE_OPP 1 | ||
489 | #define PRCMU_QOS_DDR_OPP 2 | ||
490 | #define PRCMU_QOS_DEFAULT_VALUE -1 | ||
491 | |||
492 | /** | 423 | /** |
493 | * enum hw_acc_dev - enum for hw accelerators | 424 | * enum hw_acc_dev - enum for hw accelerators |
494 | * @HW_ACC_SVAMMDSP: for SVAMMDSP | 425 | * @HW_ACC_SVAMMDSP: for SVAMMDSP |
@@ -527,64 +458,6 @@ enum hw_acc_dev { | |||
527 | }; | 458 | }; |
528 | 459 | ||
529 | /* | 460 | /* |
530 | * Ids for all EPODs (power domains) | ||
531 | * - EPOD_ID_SVAMMDSP: power domain for SVA MMDSP | ||
532 | * - EPOD_ID_SVAPIPE: power domain for SVA pipe | ||
533 | * - EPOD_ID_SIAMMDSP: power domain for SIA MMDSP | ||
534 | * - EPOD_ID_SIAPIPE: power domain for SIA pipe | ||
535 | * - EPOD_ID_SGA: power domain for SGA | ||
536 | * - EPOD_ID_B2R2_MCDE: power domain for B2R2 and MCDE | ||
537 | * - EPOD_ID_ESRAM12: power domain for ESRAM 1 and 2 | ||
538 | * - EPOD_ID_ESRAM34: power domain for ESRAM 3 and 4 | ||
539 | * - NUM_EPOD_ID: number of power domains | ||
540 | */ | ||
541 | #define EPOD_ID_SVAMMDSP 0 | ||
542 | #define EPOD_ID_SVAPIPE 1 | ||
543 | #define EPOD_ID_SIAMMDSP 2 | ||
544 | #define EPOD_ID_SIAPIPE 3 | ||
545 | #define EPOD_ID_SGA 4 | ||
546 | #define EPOD_ID_B2R2_MCDE 5 | ||
547 | #define EPOD_ID_ESRAM12 6 | ||
548 | #define EPOD_ID_ESRAM34 7 | ||
549 | #define NUM_EPOD_ID 8 | ||
550 | |||
551 | /* | ||
552 | * state definition for EPOD (power domain) | ||
553 | * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged | ||
554 | * - EPOD_STATE_OFF: The EPOD is switched off | ||
555 | * - EPOD_STATE_RAMRET: The EPOD is switched off with its internal RAM in | ||
556 | * retention | ||
557 | * - EPOD_STATE_ON_CLK_OFF: The EPOD is switched on, clock is still off | ||
558 | * - EPOD_STATE_ON: Same as above, but with clock enabled | ||
559 | */ | ||
560 | #define EPOD_STATE_NO_CHANGE 0x00 | ||
561 | #define EPOD_STATE_OFF 0x01 | ||
562 | #define EPOD_STATE_RAMRET 0x02 | ||
563 | #define EPOD_STATE_ON_CLK_OFF 0x03 | ||
564 | #define EPOD_STATE_ON 0x04 | ||
565 | |||
566 | /* | ||
567 | * CLKOUT sources | ||
568 | */ | ||
569 | #define PRCMU_CLKSRC_CLK38M 0x00 | ||
570 | #define PRCMU_CLKSRC_ACLK 0x01 | ||
571 | #define PRCMU_CLKSRC_SYSCLK 0x02 | ||
572 | #define PRCMU_CLKSRC_LCDCLK 0x03 | ||
573 | #define PRCMU_CLKSRC_SDMMCCLK 0x04 | ||
574 | #define PRCMU_CLKSRC_TVCLK 0x05 | ||
575 | #define PRCMU_CLKSRC_TIMCLK 0x06 | ||
576 | #define PRCMU_CLKSRC_CLK009 0x07 | ||
577 | /* These are only valid for CLKOUT1: */ | ||
578 | #define PRCMU_CLKSRC_SIAMMDSPCLK 0x40 | ||
579 | #define PRCMU_CLKSRC_I2CCLK 0x41 | ||
580 | #define PRCMU_CLKSRC_MSP02CLK 0x42 | ||
581 | #define PRCMU_CLKSRC_ARMPLL_OBSCLK 0x43 | ||
582 | #define PRCMU_CLKSRC_HSIRXCLK 0x44 | ||
583 | #define PRCMU_CLKSRC_HSITXCLK 0x45 | ||
584 | #define PRCMU_CLKSRC_ARMCLKFIX 0x46 | ||
585 | #define PRCMU_CLKSRC_HDMICLK 0x47 | ||
586 | |||
587 | /* | ||
588 | * Definitions for autonomous power management configuration. | 461 | * Definitions for autonomous power management configuration. |
589 | */ | 462 | */ |
590 | 463 | ||
@@ -620,88 +493,12 @@ struct prcmu_auto_pm_config { | |||
620 | u8 sva_policy; | 493 | u8 sva_policy; |
621 | }; | 494 | }; |
622 | 495 | ||
623 | /** | ||
624 | * enum ddr_opp - DDR OPP states definition | ||
625 | * @DDR_100_OPP: The new DDR operating point is ddr100opp | ||
626 | * @DDR_50_OPP: The new DDR operating point is ddr50opp | ||
627 | * @DDR_25_OPP: The new DDR operating point is ddr25opp | ||
628 | */ | ||
629 | enum ddr_opp { | ||
630 | DDR_100_OPP = 0x00, | ||
631 | DDR_50_OPP = 0x01, | ||
632 | DDR_25_OPP = 0x02, | ||
633 | }; | ||
634 | |||
635 | /* | ||
636 | * Clock identifiers. | ||
637 | */ | ||
638 | enum prcmu_clock { | ||
639 | PRCMU_SGACLK, | ||
640 | PRCMU_UARTCLK, | ||
641 | PRCMU_MSP02CLK, | ||
642 | PRCMU_MSP1CLK, | ||
643 | PRCMU_I2CCLK, | ||
644 | PRCMU_SDMMCCLK, | ||
645 | PRCMU_SLIMCLK, | ||
646 | PRCMU_PER1CLK, | ||
647 | PRCMU_PER2CLK, | ||
648 | PRCMU_PER3CLK, | ||
649 | PRCMU_PER5CLK, | ||
650 | PRCMU_PER6CLK, | ||
651 | PRCMU_PER7CLK, | ||
652 | PRCMU_LCDCLK, | ||
653 | PRCMU_BMLCLK, | ||
654 | PRCMU_HSITXCLK, | ||
655 | PRCMU_HSIRXCLK, | ||
656 | PRCMU_HDMICLK, | ||
657 | PRCMU_APEATCLK, | ||
658 | PRCMU_APETRACECLK, | ||
659 | PRCMU_MCDECLK, | ||
660 | PRCMU_IPI2CCLK, | ||
661 | PRCMU_DSIALTCLK, | ||
662 | PRCMU_DMACLK, | ||
663 | PRCMU_B2R2CLK, | ||
664 | PRCMU_TVCLK, | ||
665 | PRCMU_SSPCLK, | ||
666 | PRCMU_RNGCLK, | ||
667 | PRCMU_UICCCLK, | ||
668 | PRCMU_NUM_REG_CLOCKS, | ||
669 | PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS, | ||
670 | PRCMU_TIMCLK, | ||
671 | }; | ||
672 | |||
673 | /* | ||
674 | * Definitions for controlling ESRAM0 in deep sleep. | ||
675 | */ | ||
676 | #define ESRAM0_DEEP_SLEEP_STATE_OFF 1 | ||
677 | #define ESRAM0_DEEP_SLEEP_STATE_RET 2 | ||
678 | |||
679 | #ifdef CONFIG_MFD_DB8500_PRCMU | ||
680 | void __init prcmu_early_init(void); | ||
681 | int prcmu_set_display_clocks(void); | ||
682 | int prcmu_disable_dsipll(void); | ||
683 | int prcmu_enable_dsipll(void); | ||
684 | #else | ||
685 | static inline void __init prcmu_early_init(void) {} | ||
686 | #endif | ||
687 | |||
688 | #ifdef CONFIG_MFD_DB8500_PRCMU | 496 | #ifdef CONFIG_MFD_DB8500_PRCMU |
689 | 497 | ||
498 | void db8500_prcmu_early_init(void); | ||
690 | int prcmu_set_rc_a2p(enum romcode_write); | 499 | int prcmu_set_rc_a2p(enum romcode_write); |
691 | enum romcode_read prcmu_get_rc_p2a(void); | 500 | enum romcode_read prcmu_get_rc_p2a(void); |
692 | enum ap_pwrst prcmu_get_xp70_current_state(void); | 501 | enum ap_pwrst prcmu_get_xp70_current_state(void); |
693 | int prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); | ||
694 | |||
695 | void prcmu_enable_wakeups(u32 wakeups); | ||
696 | static inline void prcmu_disable_wakeups(void) | ||
697 | { | ||
698 | prcmu_enable_wakeups(0); | ||
699 | } | ||
700 | |||
701 | void prcmu_config_abb_event_readout(u32 abb_events); | ||
702 | void prcmu_get_abb_event_buffer(void __iomem **buf); | ||
703 | int prcmu_set_arm_opp(u8 opp); | ||
704 | int prcmu_get_arm_opp(void); | ||
705 | bool prcmu_has_arm_maxopp(void); | 502 | bool prcmu_has_arm_maxopp(void); |
706 | bool prcmu_is_u8400(void); | 503 | bool prcmu_is_u8400(void); |
707 | int prcmu_set_ape_opp(u8 opp); | 504 | int prcmu_set_ape_opp(u8 opp); |
@@ -710,19 +507,14 @@ int prcmu_request_ape_opp_100_voltage(bool enable); | |||
710 | int prcmu_release_usb_wakeup_state(void); | 507 | int prcmu_release_usb_wakeup_state(void); |
711 | int prcmu_set_ddr_opp(u8 opp); | 508 | int prcmu_set_ddr_opp(u8 opp); |
712 | int prcmu_get_ddr_opp(void); | 509 | int prcmu_get_ddr_opp(void); |
713 | unsigned long prcmu_qos_get_cpufreq_opp_delay(void); | ||
714 | void prcmu_qos_set_cpufreq_opp_delay(unsigned long); | ||
715 | /* NOTE! Use regulator framework instead */ | 510 | /* NOTE! Use regulator framework instead */ |
716 | int prcmu_set_hwacc(u16 hw_acc_dev, u8 state); | 511 | int prcmu_set_hwacc(u16 hw_acc_dev, u8 state); |
717 | int prcmu_set_epod(u16 epod_id, u8 epod_state); | ||
718 | void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, | 512 | void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, |
719 | struct prcmu_auto_pm_config *idle); | 513 | struct prcmu_auto_pm_config *idle); |
720 | bool prcmu_is_auto_pm_enabled(void); | 514 | bool prcmu_is_auto_pm_enabled(void); |
721 | 515 | ||
722 | int prcmu_config_clkout(u8 clkout, u8 source, u8 div); | 516 | int prcmu_config_clkout(u8 clkout, u8 source, u8 div); |
723 | int prcmu_request_clock(u8 clock, bool enable); | ||
724 | int prcmu_set_clock_divider(u8 clock, u8 divider); | 517 | int prcmu_set_clock_divider(u8 clock, u8 divider); |
725 | int prcmu_config_esram0_deep_sleep(u8 state); | ||
726 | int prcmu_config_hotdog(u8 threshold); | 518 | int prcmu_config_hotdog(u8 threshold); |
727 | int prcmu_config_hotmon(u8 low, u8 high); | 519 | int prcmu_config_hotmon(u8 low, u8 high); |
728 | int prcmu_start_temp_sense(u16 cycles32k); | 520 | int prcmu_start_temp_sense(u16 cycles32k); |
@@ -732,14 +524,36 @@ int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | |||
732 | 524 | ||
733 | void prcmu_ac_wake_req(void); | 525 | void prcmu_ac_wake_req(void); |
734 | void prcmu_ac_sleep_req(void); | 526 | void prcmu_ac_sleep_req(void); |
735 | void prcmu_system_reset(u16 reset_code); | ||
736 | void prcmu_modem_reset(void); | 527 | void prcmu_modem_reset(void); |
737 | bool prcmu_is_ac_wake_requested(void); | ||
738 | void prcmu_enable_spi2(void); | 528 | void prcmu_enable_spi2(void); |
739 | void prcmu_disable_spi2(void); | 529 | void prcmu_disable_spi2(void); |
740 | 530 | ||
531 | int prcmu_config_a9wdog(u8 num, bool sleep_auto_off); | ||
532 | int prcmu_enable_a9wdog(u8 id); | ||
533 | int prcmu_disable_a9wdog(u8 id); | ||
534 | int prcmu_kick_a9wdog(u8 id); | ||
535 | int prcmu_load_a9wdog(u8 id, u32 val); | ||
536 | |||
537 | void db8500_prcmu_system_reset(u16 reset_code); | ||
538 | int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); | ||
539 | void db8500_prcmu_enable_wakeups(u32 wakeups); | ||
540 | int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state); | ||
541 | int db8500_prcmu_request_clock(u8 clock, bool enable); | ||
542 | int db8500_prcmu_set_display_clocks(void); | ||
543 | int db8500_prcmu_disable_dsipll(void); | ||
544 | int db8500_prcmu_enable_dsipll(void); | ||
545 | void db8500_prcmu_config_abb_event_readout(u32 abb_events); | ||
546 | void db8500_prcmu_get_abb_event_buffer(void __iomem **buf); | ||
547 | int db8500_prcmu_config_esram0_deep_sleep(u8 state); | ||
548 | u16 db8500_prcmu_get_reset_code(void); | ||
549 | bool db8500_prcmu_is_ac_wake_requested(void); | ||
550 | int db8500_prcmu_set_arm_opp(u8 opp); | ||
551 | int db8500_prcmu_get_arm_opp(void); | ||
552 | |||
741 | #else /* !CONFIG_MFD_DB8500_PRCMU */ | 553 | #else /* !CONFIG_MFD_DB8500_PRCMU */ |
742 | 554 | ||
555 | static inline void db8500_prcmu_early_init(void) {} | ||
556 | |||
743 | static inline int prcmu_set_rc_a2p(enum romcode_write code) | 557 | static inline int prcmu_set_rc_a2p(enum romcode_write code) |
744 | { | 558 | { |
745 | return 0; | 559 | return 0; |
@@ -755,34 +569,12 @@ static inline enum ap_pwrst prcmu_get_xp70_current_state(void) | |||
755 | return AP_EXECUTE; | 569 | return AP_EXECUTE; |
756 | } | 570 | } |
757 | 571 | ||
758 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | 572 | static inline bool prcmu_has_arm_maxopp(void) |
759 | bool keep_ap_pll) | ||
760 | { | ||
761 | return 0; | ||
762 | } | ||
763 | |||
764 | static inline void prcmu_enable_wakeups(u32 wakeups) {} | ||
765 | |||
766 | static inline void prcmu_disable_wakeups(void) {} | ||
767 | |||
768 | static inline void prcmu_config_abb_event_readout(u32 abb_events) {} | ||
769 | |||
770 | static inline int prcmu_set_arm_opp(u8 opp) | ||
771 | { | ||
772 | return 0; | ||
773 | } | ||
774 | |||
775 | static inline int prcmu_get_arm_opp(void) | ||
776 | { | ||
777 | return ARM_100_OPP; | ||
778 | } | ||
779 | |||
780 | static bool prcmu_has_arm_maxopp(void) | ||
781 | { | 573 | { |
782 | return false; | 574 | return false; |
783 | } | 575 | } |
784 | 576 | ||
785 | static bool prcmu_is_u8400(void) | 577 | static inline bool prcmu_is_u8400(void) |
786 | { | 578 | { |
787 | return false; | 579 | return false; |
788 | } | 580 | } |
@@ -817,13 +609,6 @@ static inline int prcmu_get_ddr_opp(void) | |||
817 | return DDR_100_OPP; | 609 | return DDR_100_OPP; |
818 | } | 610 | } |
819 | 611 | ||
820 | static inline unsigned long prcmu_qos_get_cpufreq_opp_delay(void) | ||
821 | { | ||
822 | return 0; | ||
823 | } | ||
824 | |||
825 | static inline void prcmu_qos_set_cpufreq_opp_delay(unsigned long n) {} | ||
826 | |||
827 | static inline int prcmu_set_hwacc(u16 hw_acc_dev, u8 state) | 612 | static inline int prcmu_set_hwacc(u16 hw_acc_dev, u8 state) |
828 | { | 613 | { |
829 | return 0; | 614 | return 0; |
@@ -844,21 +629,11 @@ static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div) | |||
844 | return 0; | 629 | return 0; |
845 | } | 630 | } |
846 | 631 | ||
847 | static inline int prcmu_request_clock(u8 clock, bool enable) | ||
848 | { | ||
849 | return 0; | ||
850 | } | ||
851 | |||
852 | static inline int prcmu_set_clock_divider(u8 clock, u8 divider) | 632 | static inline int prcmu_set_clock_divider(u8 clock, u8 divider) |
853 | { | 633 | { |
854 | return 0; | 634 | return 0; |
855 | } | 635 | } |
856 | 636 | ||
857 | int prcmu_config_esram0_deep_sleep(u8 state) | ||
858 | { | ||
859 | return 0; | ||
860 | } | ||
861 | |||
862 | static inline int prcmu_config_hotdog(u8 threshold) | 637 | static inline int prcmu_config_hotdog(u8 threshold) |
863 | { | 638 | { |
864 | return 0; | 639 | return 0; |
@@ -893,86 +668,107 @@ static inline void prcmu_ac_wake_req(void) {} | |||
893 | 668 | ||
894 | static inline void prcmu_ac_sleep_req(void) {} | 669 | static inline void prcmu_ac_sleep_req(void) {} |
895 | 670 | ||
896 | static inline void prcmu_system_reset(u16 reset_code) {} | ||
897 | |||
898 | static inline void prcmu_modem_reset(void) {} | 671 | static inline void prcmu_modem_reset(void) {} |
899 | 672 | ||
900 | static inline bool prcmu_is_ac_wake_requested(void) | 673 | static inline int prcmu_enable_spi2(void) |
901 | { | 674 | { |
902 | return false; | 675 | return 0; |
903 | } | 676 | } |
904 | 677 | ||
905 | #ifndef CONFIG_UX500_SOC_DB5500 | 678 | static inline int prcmu_disable_spi2(void) |
906 | static inline int prcmu_set_display_clocks(void) | ||
907 | { | 679 | { |
908 | return 0; | 680 | return 0; |
909 | } | 681 | } |
910 | 682 | ||
911 | static inline int prcmu_disable_dsipll(void) | 683 | static inline void db8500_prcmu_system_reset(u16 reset_code) {} |
684 | |||
685 | static inline int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
686 | bool keep_ap_pll) | ||
912 | { | 687 | { |
913 | return 0; | 688 | return 0; |
914 | } | 689 | } |
915 | 690 | ||
916 | static inline int prcmu_enable_dsipll(void) | 691 | static inline void db8500_prcmu_enable_wakeups(u32 wakeups) {} |
692 | |||
693 | static inline int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state) | ||
917 | { | 694 | { |
918 | return 0; | 695 | return 0; |
919 | } | 696 | } |
920 | #endif | ||
921 | 697 | ||
922 | static inline int prcmu_enable_spi2(void) | 698 | static inline int db8500_prcmu_request_clock(u8 clock, bool enable) |
923 | { | 699 | { |
924 | return 0; | 700 | return 0; |
925 | } | 701 | } |
926 | 702 | ||
927 | static inline int prcmu_disable_spi2(void) | 703 | static inline int db8500_prcmu_set_display_clocks(void) |
928 | { | 704 | { |
929 | return 0; | 705 | return 0; |
930 | } | 706 | } |
931 | 707 | ||
932 | #endif /* !CONFIG_MFD_DB8500_PRCMU */ | 708 | static inline int db8500_prcmu_disable_dsipll(void) |
709 | { | ||
710 | return 0; | ||
711 | } | ||
712 | |||
713 | static inline int db8500_prcmu_enable_dsipll(void) | ||
714 | { | ||
715 | return 0; | ||
716 | } | ||
717 | |||
718 | static inline int db8500_prcmu_config_esram0_deep_sleep(u8 state) | ||
719 | { | ||
720 | return 0; | ||
721 | } | ||
722 | |||
723 | static inline void db8500_prcmu_config_abb_event_readout(u32 abb_events) {} | ||
933 | 724 | ||
934 | #ifdef CONFIG_UX500_PRCMU_QOS_POWER | 725 | static inline void db8500_prcmu_get_abb_event_buffer(void __iomem **buf) {} |
935 | int prcmu_qos_requirement(int pm_qos_class); | 726 | |
936 | int prcmu_qos_add_requirement(int pm_qos_class, char *name, s32 value); | 727 | static inline u16 db8500_prcmu_get_reset_code(void) |
937 | int prcmu_qos_update_requirement(int pm_qos_class, char *name, s32 new_value); | ||
938 | void prcmu_qos_remove_requirement(int pm_qos_class, char *name); | ||
939 | int prcmu_qos_add_notifier(int prcmu_qos_class, | ||
940 | struct notifier_block *notifier); | ||
941 | int prcmu_qos_remove_notifier(int prcmu_qos_class, | ||
942 | struct notifier_block *notifier); | ||
943 | #else | ||
944 | static inline int prcmu_qos_requirement(int prcmu_qos_class) | ||
945 | { | 728 | { |
946 | return 0; | 729 | return 0; |
947 | } | 730 | } |
948 | 731 | ||
949 | static inline int prcmu_qos_add_requirement(int prcmu_qos_class, | 732 | static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off) |
950 | char *name, s32 value) | ||
951 | { | 733 | { |
952 | return 0; | 734 | return 0; |
953 | } | 735 | } |
954 | 736 | ||
955 | static inline int prcmu_qos_update_requirement(int prcmu_qos_class, | 737 | static inline int prcmu_enable_a9wdog(u8 id) |
956 | char *name, s32 new_value) | ||
957 | { | 738 | { |
958 | return 0; | 739 | return 0; |
959 | } | 740 | } |
960 | 741 | ||
961 | static inline void prcmu_qos_remove_requirement(int prcmu_qos_class, char *name) | 742 | static inline int prcmu_disable_a9wdog(u8 id) |
962 | { | 743 | { |
744 | return 0; | ||
963 | } | 745 | } |
964 | 746 | ||
965 | static inline int prcmu_qos_add_notifier(int prcmu_qos_class, | 747 | static inline int prcmu_kick_a9wdog(u8 id) |
966 | struct notifier_block *notifier) | ||
967 | { | 748 | { |
968 | return 0; | 749 | return 0; |
969 | } | 750 | } |
970 | static inline int prcmu_qos_remove_notifier(int prcmu_qos_class, | 751 | |
971 | struct notifier_block *notifier) | 752 | static inline int prcmu_load_a9wdog(u8 id, u32 val) |
972 | { | 753 | { |
973 | return 0; | 754 | return 0; |
974 | } | 755 | } |
975 | 756 | ||
976 | #endif | 757 | static inline bool db8500_prcmu_is_ac_wake_requested(void) |
758 | { | ||
759 | return 0; | ||
760 | } | ||
761 | |||
762 | static inline int db8500_prcmu_set_arm_opp(u8 opp) | ||
763 | { | ||
764 | return 0; | ||
765 | } | ||
766 | |||
767 | static inline int db8500_prcmu_get_arm_opp(void) | ||
768 | { | ||
769 | return 0; | ||
770 | } | ||
771 | |||
772 | #endif /* !CONFIG_MFD_DB8500_PRCMU */ | ||
977 | 773 | ||
978 | #endif /* __MFD_DB8500_PRCMU_H */ | 774 | #endif /* __MFD_DB8500_PRCMU_H */ |
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h new file mode 100644 index 000000000000..bac942f959c1 --- /dev/null +++ b/include/linux/mfd/dbx500-prcmu.h | |||
@@ -0,0 +1,549 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST Ericsson SA 2011 | ||
3 | * | ||
4 | * License Terms: GNU General Public License v2 | ||
5 | * | ||
6 | * STE Ux500 PRCMU API | ||
7 | */ | ||
8 | #ifndef __MACH_PRCMU_H | ||
9 | #define __MACH_PRCMU_H | ||
10 | |||
11 | #include <linux/interrupt.h> | ||
12 | #include <linux/notifier.h> | ||
13 | #include <asm/mach-types.h> | ||
14 | |||
15 | /* PRCMU Wakeup defines */ | ||
16 | enum prcmu_wakeup_index { | ||
17 | PRCMU_WAKEUP_INDEX_RTC, | ||
18 | PRCMU_WAKEUP_INDEX_RTT0, | ||
19 | PRCMU_WAKEUP_INDEX_RTT1, | ||
20 | PRCMU_WAKEUP_INDEX_HSI0, | ||
21 | PRCMU_WAKEUP_INDEX_HSI1, | ||
22 | PRCMU_WAKEUP_INDEX_USB, | ||
23 | PRCMU_WAKEUP_INDEX_ABB, | ||
24 | PRCMU_WAKEUP_INDEX_ABB_FIFO, | ||
25 | PRCMU_WAKEUP_INDEX_ARM, | ||
26 | PRCMU_WAKEUP_INDEX_CD_IRQ, | ||
27 | NUM_PRCMU_WAKEUP_INDICES | ||
28 | }; | ||
29 | #define PRCMU_WAKEUP(_name) (BIT(PRCMU_WAKEUP_INDEX_##_name)) | ||
30 | |||
31 | /* EPOD (power domain) IDs */ | ||
32 | |||
33 | /* | ||
34 | * DB8500 EPODs | ||
35 | * - EPOD_ID_SVAMMDSP: power domain for SVA MMDSP | ||
36 | * - EPOD_ID_SVAPIPE: power domain for SVA pipe | ||
37 | * - EPOD_ID_SIAMMDSP: power domain for SIA MMDSP | ||
38 | * - EPOD_ID_SIAPIPE: power domain for SIA pipe | ||
39 | * - EPOD_ID_SGA: power domain for SGA | ||
40 | * - EPOD_ID_B2R2_MCDE: power domain for B2R2 and MCDE | ||
41 | * - EPOD_ID_ESRAM12: power domain for ESRAM 1 and 2 | ||
42 | * - EPOD_ID_ESRAM34: power domain for ESRAM 3 and 4 | ||
43 | * - NUM_EPOD_ID: number of power domains | ||
44 | * | ||
45 | * TODO: These should be prefixed. | ||
46 | */ | ||
47 | #define EPOD_ID_SVAMMDSP 0 | ||
48 | #define EPOD_ID_SVAPIPE 1 | ||
49 | #define EPOD_ID_SIAMMDSP 2 | ||
50 | #define EPOD_ID_SIAPIPE 3 | ||
51 | #define EPOD_ID_SGA 4 | ||
52 | #define EPOD_ID_B2R2_MCDE 5 | ||
53 | #define EPOD_ID_ESRAM12 6 | ||
54 | #define EPOD_ID_ESRAM34 7 | ||
55 | #define NUM_EPOD_ID 8 | ||
56 | |||
57 | /* | ||
58 | * DB5500 EPODs | ||
59 | */ | ||
60 | #define DB5500_EPOD_ID_BASE 0x0100 | ||
61 | #define DB5500_EPOD_ID_SGA (DB5500_EPOD_ID_BASE + 0) | ||
62 | #define DB5500_EPOD_ID_HVA (DB5500_EPOD_ID_BASE + 1) | ||
63 | #define DB5500_EPOD_ID_SIA (DB5500_EPOD_ID_BASE + 2) | ||
64 | #define DB5500_EPOD_ID_DISP (DB5500_EPOD_ID_BASE + 3) | ||
65 | #define DB5500_EPOD_ID_ESRAM12 (DB5500_EPOD_ID_BASE + 6) | ||
66 | #define DB5500_NUM_EPOD_ID 7 | ||
67 | |||
68 | /* | ||
69 | * state definition for EPOD (power domain) | ||
70 | * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged | ||
71 | * - EPOD_STATE_OFF: The EPOD is switched off | ||
72 | * - EPOD_STATE_RAMRET: The EPOD is switched off with its internal RAM in | ||
73 | * retention | ||
74 | * - EPOD_STATE_ON_CLK_OFF: The EPOD is switched on, clock is still off | ||
75 | * - EPOD_STATE_ON: Same as above, but with clock enabled | ||
76 | */ | ||
77 | #define EPOD_STATE_NO_CHANGE 0x00 | ||
78 | #define EPOD_STATE_OFF 0x01 | ||
79 | #define EPOD_STATE_RAMRET 0x02 | ||
80 | #define EPOD_STATE_ON_CLK_OFF 0x03 | ||
81 | #define EPOD_STATE_ON 0x04 | ||
82 | |||
83 | /* | ||
84 | * CLKOUT sources | ||
85 | */ | ||
86 | #define PRCMU_CLKSRC_CLK38M 0x00 | ||
87 | #define PRCMU_CLKSRC_ACLK 0x01 | ||
88 | #define PRCMU_CLKSRC_SYSCLK 0x02 | ||
89 | #define PRCMU_CLKSRC_LCDCLK 0x03 | ||
90 | #define PRCMU_CLKSRC_SDMMCCLK 0x04 | ||
91 | #define PRCMU_CLKSRC_TVCLK 0x05 | ||
92 | #define PRCMU_CLKSRC_TIMCLK 0x06 | ||
93 | #define PRCMU_CLKSRC_CLK009 0x07 | ||
94 | /* These are only valid for CLKOUT1: */ | ||
95 | #define PRCMU_CLKSRC_SIAMMDSPCLK 0x40 | ||
96 | #define PRCMU_CLKSRC_I2CCLK 0x41 | ||
97 | #define PRCMU_CLKSRC_MSP02CLK 0x42 | ||
98 | #define PRCMU_CLKSRC_ARMPLL_OBSCLK 0x43 | ||
99 | #define PRCMU_CLKSRC_HSIRXCLK 0x44 | ||
100 | #define PRCMU_CLKSRC_HSITXCLK 0x45 | ||
101 | #define PRCMU_CLKSRC_ARMCLKFIX 0x46 | ||
102 | #define PRCMU_CLKSRC_HDMICLK 0x47 | ||
103 | |||
104 | /* | ||
105 | * Clock identifiers. | ||
106 | */ | ||
107 | enum prcmu_clock { | ||
108 | PRCMU_SGACLK, | ||
109 | PRCMU_UARTCLK, | ||
110 | PRCMU_MSP02CLK, | ||
111 | PRCMU_MSP1CLK, | ||
112 | PRCMU_I2CCLK, | ||
113 | PRCMU_SDMMCCLK, | ||
114 | PRCMU_SLIMCLK, | ||
115 | PRCMU_PER1CLK, | ||
116 | PRCMU_PER2CLK, | ||
117 | PRCMU_PER3CLK, | ||
118 | PRCMU_PER5CLK, | ||
119 | PRCMU_PER6CLK, | ||
120 | PRCMU_PER7CLK, | ||
121 | PRCMU_LCDCLK, | ||
122 | PRCMU_BMLCLK, | ||
123 | PRCMU_HSITXCLK, | ||
124 | PRCMU_HSIRXCLK, | ||
125 | PRCMU_HDMICLK, | ||
126 | PRCMU_APEATCLK, | ||
127 | PRCMU_APETRACECLK, | ||
128 | PRCMU_MCDECLK, | ||
129 | PRCMU_IPI2CCLK, | ||
130 | PRCMU_DSIALTCLK, | ||
131 | PRCMU_DMACLK, | ||
132 | PRCMU_B2R2CLK, | ||
133 | PRCMU_TVCLK, | ||
134 | PRCMU_SSPCLK, | ||
135 | PRCMU_RNGCLK, | ||
136 | PRCMU_UICCCLK, | ||
137 | PRCMU_PWMCLK, | ||
138 | PRCMU_IRDACLK, | ||
139 | PRCMU_IRRCCLK, | ||
140 | PRCMU_SIACLK, | ||
141 | PRCMU_SVACLK, | ||
142 | PRCMU_NUM_REG_CLOCKS, | ||
143 | PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS, | ||
144 | PRCMU_TIMCLK, | ||
145 | PRCMU_PLLSOC0, | ||
146 | PRCMU_PLLSOC1, | ||
147 | PRCMU_PLLDDR, | ||
148 | }; | ||
149 | |||
150 | /** | ||
151 | * enum ape_opp - APE OPP states definition | ||
152 | * @APE_OPP_INIT: | ||
153 | * @APE_NO_CHANGE: The APE operating point is unchanged | ||
154 | * @APE_100_OPP: The new APE operating point is ape100opp | ||
155 | * @APE_50_OPP: 50% | ||
156 | */ | ||
157 | enum ape_opp { | ||
158 | APE_OPP_INIT = 0x00, | ||
159 | APE_NO_CHANGE = 0x01, | ||
160 | APE_100_OPP = 0x02, | ||
161 | APE_50_OPP = 0x03 | ||
162 | }; | ||
163 | |||
164 | /** | ||
165 | * enum arm_opp - ARM OPP states definition | ||
166 | * @ARM_OPP_INIT: | ||
167 | * @ARM_NO_CHANGE: The ARM operating point is unchanged | ||
168 | * @ARM_100_OPP: The new ARM operating point is arm100opp | ||
169 | * @ARM_50_OPP: The new ARM operating point is arm50opp | ||
170 | * @ARM_MAX_OPP: Operating point is "max" (more than 100) | ||
171 | * @ARM_MAX_FREQ100OPP: Set max opp if available, else 100 | ||
172 | * @ARM_EXTCLK: The new ARM operating point is armExtClk | ||
173 | */ | ||
174 | enum arm_opp { | ||
175 | ARM_OPP_INIT = 0x00, | ||
176 | ARM_NO_CHANGE = 0x01, | ||
177 | ARM_100_OPP = 0x02, | ||
178 | ARM_50_OPP = 0x03, | ||
179 | ARM_MAX_OPP = 0x04, | ||
180 | ARM_MAX_FREQ100OPP = 0x05, | ||
181 | ARM_EXTCLK = 0x07 | ||
182 | }; | ||
183 | |||
184 | /** | ||
185 | * enum ddr_opp - DDR OPP states definition | ||
186 | * @DDR_100_OPP: The new DDR operating point is ddr100opp | ||
187 | * @DDR_50_OPP: The new DDR operating point is ddr50opp | ||
188 | * @DDR_25_OPP: The new DDR operating point is ddr25opp | ||
189 | */ | ||
190 | enum ddr_opp { | ||
191 | DDR_100_OPP = 0x00, | ||
192 | DDR_50_OPP = 0x01, | ||
193 | DDR_25_OPP = 0x02, | ||
194 | }; | ||
195 | |||
196 | /* | ||
197 | * Definitions for controlling ESRAM0 in deep sleep. | ||
198 | */ | ||
199 | #define ESRAM0_DEEP_SLEEP_STATE_OFF 1 | ||
200 | #define ESRAM0_DEEP_SLEEP_STATE_RET 2 | ||
201 | |||
202 | /** | ||
203 | * enum ddr_pwrst - DDR power states definition | ||
204 | * @DDR_PWR_STATE_UNCHANGED: SDRAM and DDR controller state is unchanged | ||
205 | * @DDR_PWR_STATE_ON: | ||
206 | * @DDR_PWR_STATE_OFFLOWLAT: | ||
207 | * @DDR_PWR_STATE_OFFHIGHLAT: | ||
208 | */ | ||
209 | enum ddr_pwrst { | ||
210 | DDR_PWR_STATE_UNCHANGED = 0x00, | ||
211 | DDR_PWR_STATE_ON = 0x01, | ||
212 | DDR_PWR_STATE_OFFLOWLAT = 0x02, | ||
213 | DDR_PWR_STATE_OFFHIGHLAT = 0x03 | ||
214 | }; | ||
215 | |||
216 | #include <linux/mfd/db8500-prcmu.h> | ||
217 | #include <linux/mfd/db5500-prcmu.h> | ||
218 | |||
219 | #if defined(CONFIG_UX500_SOC_DB8500) || defined(CONFIG_UX500_SOC_DB5500) | ||
220 | |||
221 | static inline void __init prcmu_early_init(void) | ||
222 | { | ||
223 | if (machine_is_u5500()) | ||
224 | return db5500_prcmu_early_init(); | ||
225 | else | ||
226 | return db8500_prcmu_early_init(); | ||
227 | } | ||
228 | |||
229 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
230 | bool keep_ap_pll) | ||
231 | { | ||
232 | if (machine_is_u5500()) | ||
233 | return db5500_prcmu_set_power_state(state, keep_ulp_clk, | ||
234 | keep_ap_pll); | ||
235 | else | ||
236 | return db8500_prcmu_set_power_state(state, keep_ulp_clk, | ||
237 | keep_ap_pll); | ||
238 | } | ||
239 | |||
240 | static inline int prcmu_set_epod(u16 epod_id, u8 epod_state) | ||
241 | { | ||
242 | if (machine_is_u5500()) | ||
243 | return -EINVAL; | ||
244 | else | ||
245 | return db8500_prcmu_set_epod(epod_id, epod_state); | ||
246 | } | ||
247 | |||
248 | static inline void prcmu_enable_wakeups(u32 wakeups) | ||
249 | { | ||
250 | if (machine_is_u5500()) | ||
251 | db5500_prcmu_enable_wakeups(wakeups); | ||
252 | else | ||
253 | db8500_prcmu_enable_wakeups(wakeups); | ||
254 | } | ||
255 | |||
256 | static inline void prcmu_disable_wakeups(void) | ||
257 | { | ||
258 | prcmu_enable_wakeups(0); | ||
259 | } | ||
260 | |||
261 | static inline void prcmu_config_abb_event_readout(u32 abb_events) | ||
262 | { | ||
263 | if (machine_is_u5500()) | ||
264 | db5500_prcmu_config_abb_event_readout(abb_events); | ||
265 | else | ||
266 | db8500_prcmu_config_abb_event_readout(abb_events); | ||
267 | } | ||
268 | |||
269 | static inline void prcmu_get_abb_event_buffer(void __iomem **buf) | ||
270 | { | ||
271 | if (machine_is_u5500()) | ||
272 | db5500_prcmu_get_abb_event_buffer(buf); | ||
273 | else | ||
274 | db8500_prcmu_get_abb_event_buffer(buf); | ||
275 | } | ||
276 | |||
277 | int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | ||
278 | int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | ||
279 | |||
280 | int prcmu_config_clkout(u8 clkout, u8 source, u8 div); | ||
281 | |||
282 | static inline int prcmu_request_clock(u8 clock, bool enable) | ||
283 | { | ||
284 | if (machine_is_u5500()) | ||
285 | return db5500_prcmu_request_clock(clock, enable); | ||
286 | else | ||
287 | return db8500_prcmu_request_clock(clock, enable); | ||
288 | } | ||
289 | |||
290 | int prcmu_set_ape_opp(u8 opp); | ||
291 | int prcmu_get_ape_opp(void); | ||
292 | int prcmu_set_ddr_opp(u8 opp); | ||
293 | int prcmu_get_ddr_opp(void); | ||
294 | |||
295 | static inline int prcmu_set_arm_opp(u8 opp) | ||
296 | { | ||
297 | if (machine_is_u5500()) | ||
298 | return -EINVAL; | ||
299 | else | ||
300 | return db8500_prcmu_set_arm_opp(opp); | ||
301 | } | ||
302 | |||
303 | static inline int prcmu_get_arm_opp(void) | ||
304 | { | ||
305 | if (machine_is_u5500()) | ||
306 | return -EINVAL; | ||
307 | else | ||
308 | return db8500_prcmu_get_arm_opp(); | ||
309 | } | ||
310 | |||
311 | static inline void prcmu_system_reset(u16 reset_code) | ||
312 | { | ||
313 | if (machine_is_u5500()) | ||
314 | return db5500_prcmu_system_reset(reset_code); | ||
315 | else | ||
316 | return db8500_prcmu_system_reset(reset_code); | ||
317 | } | ||
318 | |||
319 | static inline u16 prcmu_get_reset_code(void) | ||
320 | { | ||
321 | if (machine_is_u5500()) | ||
322 | return db5500_prcmu_get_reset_code(); | ||
323 | else | ||
324 | return db8500_prcmu_get_reset_code(); | ||
325 | } | ||
326 | |||
327 | void prcmu_ac_wake_req(void); | ||
328 | void prcmu_ac_sleep_req(void); | ||
329 | void prcmu_modem_reset(void); | ||
330 | static inline bool prcmu_is_ac_wake_requested(void) | ||
331 | { | ||
332 | if (machine_is_u5500()) | ||
333 | return db5500_prcmu_is_ac_wake_requested(); | ||
334 | else | ||
335 | return db8500_prcmu_is_ac_wake_requested(); | ||
336 | } | ||
337 | |||
338 | static inline int prcmu_set_display_clocks(void) | ||
339 | { | ||
340 | if (machine_is_u5500()) | ||
341 | return db5500_prcmu_set_display_clocks(); | ||
342 | else | ||
343 | return db8500_prcmu_set_display_clocks(); | ||
344 | } | ||
345 | |||
346 | static inline int prcmu_disable_dsipll(void) | ||
347 | { | ||
348 | if (machine_is_u5500()) | ||
349 | return db5500_prcmu_disable_dsipll(); | ||
350 | else | ||
351 | return db8500_prcmu_disable_dsipll(); | ||
352 | } | ||
353 | |||
354 | static inline int prcmu_enable_dsipll(void) | ||
355 | { | ||
356 | if (machine_is_u5500()) | ||
357 | return db5500_prcmu_enable_dsipll(); | ||
358 | else | ||
359 | return db8500_prcmu_enable_dsipll(); | ||
360 | } | ||
361 | |||
362 | static inline int prcmu_config_esram0_deep_sleep(u8 state) | ||
363 | { | ||
364 | if (machine_is_u5500()) | ||
365 | return -EINVAL; | ||
366 | else | ||
367 | return db8500_prcmu_config_esram0_deep_sleep(state); | ||
368 | } | ||
369 | #else | ||
370 | |||
371 | static inline void __init prcmu_early_init(void) {} | ||
372 | |||
373 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
374 | bool keep_ap_pll) | ||
375 | { | ||
376 | return 0; | ||
377 | } | ||
378 | |||
379 | static inline int prcmu_set_epod(u16 epod_id, u8 epod_state) | ||
380 | { | ||
381 | return 0; | ||
382 | } | ||
383 | |||
384 | static inline void prcmu_enable_wakeups(u32 wakeups) {} | ||
385 | |||
386 | static inline void prcmu_disable_wakeups(void) {} | ||
387 | |||
388 | static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) | ||
389 | { | ||
390 | return -ENOSYS; | ||
391 | } | ||
392 | |||
393 | static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | ||
394 | { | ||
395 | return -ENOSYS; | ||
396 | } | ||
397 | |||
398 | static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div) | ||
399 | { | ||
400 | return 0; | ||
401 | } | ||
402 | |||
403 | static inline int prcmu_request_clock(u8 clock, bool enable) | ||
404 | { | ||
405 | return 0; | ||
406 | } | ||
407 | |||
408 | static inline int prcmu_set_ape_opp(u8 opp) | ||
409 | { | ||
410 | return 0; | ||
411 | } | ||
412 | |||
413 | static inline int prcmu_get_ape_opp(void) | ||
414 | { | ||
415 | return APE_100_OPP; | ||
416 | } | ||
417 | |||
418 | static inline int prcmu_set_arm_opp(u8 opp) | ||
419 | { | ||
420 | return 0; | ||
421 | } | ||
422 | |||
423 | static inline int prcmu_get_arm_opp(void) | ||
424 | { | ||
425 | return ARM_100_OPP; | ||
426 | } | ||
427 | |||
428 | static inline int prcmu_set_ddr_opp(u8 opp) | ||
429 | { | ||
430 | return 0; | ||
431 | } | ||
432 | |||
433 | static inline int prcmu_get_ddr_opp(void) | ||
434 | { | ||
435 | return DDR_100_OPP; | ||
436 | } | ||
437 | |||
438 | static inline void prcmu_system_reset(u16 reset_code) {} | ||
439 | |||
440 | static inline u16 prcmu_get_reset_code(void) | ||
441 | { | ||
442 | return 0; | ||
443 | } | ||
444 | |||
445 | static inline void prcmu_ac_wake_req(void) {} | ||
446 | |||
447 | static inline void prcmu_ac_sleep_req(void) {} | ||
448 | |||
449 | static inline void prcmu_modem_reset(void) {} | ||
450 | |||
451 | static inline bool prcmu_is_ac_wake_requested(void) | ||
452 | { | ||
453 | return false; | ||
454 | } | ||
455 | |||
456 | static inline int prcmu_set_display_clocks(void) | ||
457 | { | ||
458 | return 0; | ||
459 | } | ||
460 | |||
461 | static inline int prcmu_disable_dsipll(void) | ||
462 | { | ||
463 | return 0; | ||
464 | } | ||
465 | |||
466 | static inline int prcmu_enable_dsipll(void) | ||
467 | { | ||
468 | return 0; | ||
469 | } | ||
470 | |||
471 | static inline int prcmu_config_esram0_deep_sleep(u8 state) | ||
472 | { | ||
473 | return 0; | ||
474 | } | ||
475 | |||
476 | static inline void prcmu_config_abb_event_readout(u32 abb_events) {} | ||
477 | |||
478 | static inline void prcmu_get_abb_event_buffer(void __iomem **buf) | ||
479 | { | ||
480 | *buf = NULL; | ||
481 | } | ||
482 | |||
483 | #endif | ||
484 | |||
485 | /* PRCMU QoS APE OPP class */ | ||
486 | #define PRCMU_QOS_APE_OPP 1 | ||
487 | #define PRCMU_QOS_DDR_OPP 2 | ||
488 | #define PRCMU_QOS_DEFAULT_VALUE -1 | ||
489 | |||
490 | #ifdef CONFIG_UX500_PRCMU_QOS_POWER | ||
491 | |||
492 | unsigned long prcmu_qos_get_cpufreq_opp_delay(void); | ||
493 | void prcmu_qos_set_cpufreq_opp_delay(unsigned long); | ||
494 | void prcmu_qos_force_opp(int, s32); | ||
495 | int prcmu_qos_requirement(int pm_qos_class); | ||
496 | int prcmu_qos_add_requirement(int pm_qos_class, char *name, s32 value); | ||
497 | int prcmu_qos_update_requirement(int pm_qos_class, char *name, s32 new_value); | ||
498 | void prcmu_qos_remove_requirement(int pm_qos_class, char *name); | ||
499 | int prcmu_qos_add_notifier(int prcmu_qos_class, | ||
500 | struct notifier_block *notifier); | ||
501 | int prcmu_qos_remove_notifier(int prcmu_qos_class, | ||
502 | struct notifier_block *notifier); | ||
503 | |||
504 | #else | ||
505 | |||
506 | static inline unsigned long prcmu_qos_get_cpufreq_opp_delay(void) | ||
507 | { | ||
508 | return 0; | ||
509 | } | ||
510 | |||
511 | static inline void prcmu_qos_set_cpufreq_opp_delay(unsigned long n) {} | ||
512 | |||
513 | static inline void prcmu_qos_force_opp(int prcmu_qos_class, s32 i) {} | ||
514 | |||
515 | static inline int prcmu_qos_requirement(int prcmu_qos_class) | ||
516 | { | ||
517 | return 0; | ||
518 | } | ||
519 | |||
520 | static inline int prcmu_qos_add_requirement(int prcmu_qos_class, | ||
521 | char *name, s32 value) | ||
522 | { | ||
523 | return 0; | ||
524 | } | ||
525 | |||
526 | static inline int prcmu_qos_update_requirement(int prcmu_qos_class, | ||
527 | char *name, s32 new_value) | ||
528 | { | ||
529 | return 0; | ||
530 | } | ||
531 | |||
532 | static inline void prcmu_qos_remove_requirement(int prcmu_qos_class, char *name) | ||
533 | { | ||
534 | } | ||
535 | |||
536 | static inline int prcmu_qos_add_notifier(int prcmu_qos_class, | ||
537 | struct notifier_block *notifier) | ||
538 | { | ||
539 | return 0; | ||
540 | } | ||
541 | static inline int prcmu_qos_remove_notifier(int prcmu_qos_class, | ||
542 | struct notifier_block *notifier) | ||
543 | { | ||
544 | return 0; | ||
545 | } | ||
546 | |||
547 | #endif | ||
548 | |||
549 | #endif /* __MACH_PRCMU_H */ | ||
diff --git a/include/linux/mfd/intel_msic.h b/include/linux/mfd/intel_msic.h new file mode 100644 index 000000000000..439a7a617bc9 --- /dev/null +++ b/include/linux/mfd/intel_msic.h | |||
@@ -0,0 +1,456 @@ | |||
1 | /* | ||
2 | * include/linux/mfd/intel_msic.h - Core interface for Intel MSIC | ||
3 | * | ||
4 | * Copyright (C) 2011, Intel Corporation | ||
5 | * Author: Mika Westerberg <mika.westerberg@linux.intel.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #ifndef __LINUX_MFD_INTEL_MSIC_H__ | ||
13 | #define __LINUX_MFD_INTEL_MSIC_H__ | ||
14 | |||
15 | /* ID */ | ||
16 | #define INTEL_MSIC_ID0 0x000 /* RO */ | ||
17 | #define INTEL_MSIC_ID1 0x001 /* RO */ | ||
18 | |||
19 | /* IRQ */ | ||
20 | #define INTEL_MSIC_IRQLVL1 0x002 | ||
21 | #define INTEL_MSIC_ADC1INT 0x003 | ||
22 | #define INTEL_MSIC_CCINT 0x004 | ||
23 | #define INTEL_MSIC_PWRSRCINT 0x005 | ||
24 | #define INTEL_MSIC_PWRSRCINT1 0x006 | ||
25 | #define INTEL_MSIC_CHRINT 0x007 | ||
26 | #define INTEL_MSIC_CHRINT1 0x008 | ||
27 | #define INTEL_MSIC_RTCIRQ 0x009 | ||
28 | #define INTEL_MSIC_GPIO0LVIRQ 0x00a | ||
29 | #define INTEL_MSIC_GPIO1LVIRQ 0x00b | ||
30 | #define INTEL_MSIC_GPIOHVIRQ 0x00c | ||
31 | #define INTEL_MSIC_VRINT 0x00d | ||
32 | #define INTEL_MSIC_OCAUDIO 0x00e | ||
33 | #define INTEL_MSIC_ACCDET 0x00f | ||
34 | #define INTEL_MSIC_RESETIRQ1 0x010 | ||
35 | #define INTEL_MSIC_RESETIRQ2 0x011 | ||
36 | #define INTEL_MSIC_MADC1INT 0x012 | ||
37 | #define INTEL_MSIC_MCCINT 0x013 | ||
38 | #define INTEL_MSIC_MPWRSRCINT 0x014 | ||
39 | #define INTEL_MSIC_MPWRSRCINT1 0x015 | ||
40 | #define INTEL_MSIC_MCHRINT 0x016 | ||
41 | #define INTEL_MSIC_MCHRINT1 0x017 | ||
42 | #define INTEL_MSIC_RTCIRQMASK 0x018 | ||
43 | #define INTEL_MSIC_GPIO0LVIRQMASK 0x019 | ||
44 | #define INTEL_MSIC_GPIO1LVIRQMASK 0x01a | ||
45 | #define INTEL_MSIC_GPIOHVIRQMASK 0x01b | ||
46 | #define INTEL_MSIC_VRINTMASK 0x01c | ||
47 | #define INTEL_MSIC_OCAUDIOMASK 0x01d | ||
48 | #define INTEL_MSIC_ACCDETMASK 0x01e | ||
49 | #define INTEL_MSIC_RESETIRQ1MASK 0x01f | ||
50 | #define INTEL_MSIC_RESETIRQ2MASK 0x020 | ||
51 | #define INTEL_MSIC_IRQLVL1MSK 0x021 | ||
52 | #define INTEL_MSIC_PBCONFIG 0x03e | ||
53 | #define INTEL_MSIC_PBSTATUS 0x03f /* RO */ | ||
54 | |||
55 | /* GPIO */ | ||
56 | #define INTEL_MSIC_GPIO0LV7CTLO 0x040 | ||
57 | #define INTEL_MSIC_GPIO0LV6CTLO 0x041 | ||
58 | #define INTEL_MSIC_GPIO0LV5CTLO 0x042 | ||
59 | #define INTEL_MSIC_GPIO0LV4CTLO 0x043 | ||
60 | #define INTEL_MSIC_GPIO0LV3CTLO 0x044 | ||
61 | #define INTEL_MSIC_GPIO0LV2CTLO 0x045 | ||
62 | #define INTEL_MSIC_GPIO0LV1CTLO 0x046 | ||
63 | #define INTEL_MSIC_GPIO0LV0CTLO 0x047 | ||
64 | #define INTEL_MSIC_GPIO1LV7CTLOS 0x048 | ||
65 | #define INTEL_MSIC_GPIO1LV6CTLO 0x049 | ||
66 | #define INTEL_MSIC_GPIO1LV5CTLO 0x04a | ||
67 | #define INTEL_MSIC_GPIO1LV4CTLO 0x04b | ||
68 | #define INTEL_MSIC_GPIO1LV3CTLO 0x04c | ||
69 | #define INTEL_MSIC_GPIO1LV2CTLO 0x04d | ||
70 | #define INTEL_MSIC_GPIO1LV1CTLO 0x04e | ||
71 | #define INTEL_MSIC_GPIO1LV0CTLO 0x04f | ||
72 | #define INTEL_MSIC_GPIO0LV7CTLI 0x050 | ||
73 | #define INTEL_MSIC_GPIO0LV6CTLI 0x051 | ||
74 | #define INTEL_MSIC_GPIO0LV5CTLI 0x052 | ||
75 | #define INTEL_MSIC_GPIO0LV4CTLI 0x053 | ||
76 | #define INTEL_MSIC_GPIO0LV3CTLI 0x054 | ||
77 | #define INTEL_MSIC_GPIO0LV2CTLI 0x055 | ||
78 | #define INTEL_MSIC_GPIO0LV1CTLI 0x056 | ||
79 | #define INTEL_MSIC_GPIO0LV0CTLI 0x057 | ||
80 | #define INTEL_MSIC_GPIO1LV7CTLIS 0x058 | ||
81 | #define INTEL_MSIC_GPIO1LV6CTLI 0x059 | ||
82 | #define INTEL_MSIC_GPIO1LV5CTLI 0x05a | ||
83 | #define INTEL_MSIC_GPIO1LV4CTLI 0x05b | ||
84 | #define INTEL_MSIC_GPIO1LV3CTLI 0x05c | ||
85 | #define INTEL_MSIC_GPIO1LV2CTLI 0x05d | ||
86 | #define INTEL_MSIC_GPIO1LV1CTLI 0x05e | ||
87 | #define INTEL_MSIC_GPIO1LV0CTLI 0x05f | ||
88 | #define INTEL_MSIC_PWM0CLKDIV1 0x061 | ||
89 | #define INTEL_MSIC_PWM0CLKDIV0 0x062 | ||
90 | #define INTEL_MSIC_PWM1CLKDIV1 0x063 | ||
91 | #define INTEL_MSIC_PWM1CLKDIV0 0x064 | ||
92 | #define INTEL_MSIC_PWM2CLKDIV1 0x065 | ||
93 | #define INTEL_MSIC_PWM2CLKDIV0 0x066 | ||
94 | #define INTEL_MSIC_PWM0DUTYCYCLE 0x067 | ||
95 | #define INTEL_MSIC_PWM1DUTYCYCLE 0x068 | ||
96 | #define INTEL_MSIC_PWM2DUTYCYCLE 0x069 | ||
97 | #define INTEL_MSIC_GPIO0HV3CTLO 0x06d | ||
98 | #define INTEL_MSIC_GPIO0HV2CTLO 0x06e | ||
99 | #define INTEL_MSIC_GPIO0HV1CTLO 0x06f | ||
100 | #define INTEL_MSIC_GPIO0HV0CTLO 0x070 | ||
101 | #define INTEL_MSIC_GPIO1HV3CTLO 0x071 | ||
102 | #define INTEL_MSIC_GPIO1HV2CTLO 0x072 | ||
103 | #define INTEL_MSIC_GPIO1HV1CTLO 0x073 | ||
104 | #define INTEL_MSIC_GPIO1HV0CTLO 0x074 | ||
105 | #define INTEL_MSIC_GPIO0HV3CTLI 0x075 | ||
106 | #define INTEL_MSIC_GPIO0HV2CTLI 0x076 | ||
107 | #define INTEL_MSIC_GPIO0HV1CTLI 0x077 | ||
108 | #define INTEL_MSIC_GPIO0HV0CTLI 0x078 | ||
109 | #define INTEL_MSIC_GPIO1HV3CTLI 0x079 | ||
110 | #define INTEL_MSIC_GPIO1HV2CTLI 0x07a | ||
111 | #define INTEL_MSIC_GPIO1HV1CTLI 0x07b | ||
112 | #define INTEL_MSIC_GPIO1HV0CTLI 0x07c | ||
113 | |||
114 | /* SVID */ | ||
115 | #define INTEL_MSIC_SVIDCTRL0 0x080 | ||
116 | #define INTEL_MSIC_SVIDCTRL1 0x081 | ||
117 | #define INTEL_MSIC_SVIDCTRL2 0x082 | ||
118 | #define INTEL_MSIC_SVIDTXLASTPKT3 0x083 /* RO */ | ||
119 | #define INTEL_MSIC_SVIDTXLASTPKT2 0x084 /* RO */ | ||
120 | #define INTEL_MSIC_SVIDTXLASTPKT1 0x085 /* RO */ | ||
121 | #define INTEL_MSIC_SVIDTXLASTPKT0 0x086 /* RO */ | ||
122 | #define INTEL_MSIC_SVIDPKTOUTBYTE3 0x087 | ||
123 | #define INTEL_MSIC_SVIDPKTOUTBYTE2 0x088 | ||
124 | #define INTEL_MSIC_SVIDPKTOUTBYTE1 0x089 | ||
125 | #define INTEL_MSIC_SVIDPKTOUTBYTE0 0x08a | ||
126 | #define INTEL_MSIC_SVIDRXVPDEBUG1 0x08b | ||
127 | #define INTEL_MSIC_SVIDRXVPDEBUG0 0x08c | ||
128 | #define INTEL_MSIC_SVIDRXLASTPKT3 0x08d /* RO */ | ||
129 | #define INTEL_MSIC_SVIDRXLASTPKT2 0x08e /* RO */ | ||
130 | #define INTEL_MSIC_SVIDRXLASTPKT1 0x08f /* RO */ | ||
131 | #define INTEL_MSIC_SVIDRXLASTPKT0 0x090 /* RO */ | ||
132 | #define INTEL_MSIC_SVIDRXCHKSTATUS3 0x091 /* RO */ | ||
133 | #define INTEL_MSIC_SVIDRXCHKSTATUS2 0x092 /* RO */ | ||
134 | #define INTEL_MSIC_SVIDRXCHKSTATUS1 0x093 /* RO */ | ||
135 | #define INTEL_MSIC_SVIDRXCHKSTATUS0 0x094 /* RO */ | ||
136 | |||
137 | /* VREG */ | ||
138 | #define INTEL_MSIC_VCCLATCH 0x0c0 | ||
139 | #define INTEL_MSIC_VNNLATCH 0x0c1 | ||
140 | #define INTEL_MSIC_VCCCNT 0x0c2 | ||
141 | #define INTEL_MSIC_SMPSRAMP 0x0c3 | ||
142 | #define INTEL_MSIC_VNNCNT 0x0c4 | ||
143 | #define INTEL_MSIC_VNNAONCNT 0x0c5 | ||
144 | #define INTEL_MSIC_VCC122AONCNT 0x0c6 | ||
145 | #define INTEL_MSIC_V180AONCNT 0x0c7 | ||
146 | #define INTEL_MSIC_V500CNT 0x0c8 | ||
147 | #define INTEL_MSIC_VIHFCNT 0x0c9 | ||
148 | #define INTEL_MSIC_LDORAMP1 0x0ca | ||
149 | #define INTEL_MSIC_LDORAMP2 0x0cb | ||
150 | #define INTEL_MSIC_VCC108AONCNT 0x0cc | ||
151 | #define INTEL_MSIC_VCC108ASCNT 0x0cd | ||
152 | #define INTEL_MSIC_VCC108CNT 0x0ce | ||
153 | #define INTEL_MSIC_VCCA100ASCNT 0x0cf | ||
154 | #define INTEL_MSIC_VCCA100CNT 0x0d0 | ||
155 | #define INTEL_MSIC_VCC180AONCNT 0x0d1 | ||
156 | #define INTEL_MSIC_VCC180CNT 0x0d2 | ||
157 | #define INTEL_MSIC_VCC330CNT 0x0d3 | ||
158 | #define INTEL_MSIC_VUSB330CNT 0x0d4 | ||
159 | #define INTEL_MSIC_VCCSDIOCNT 0x0d5 | ||
160 | #define INTEL_MSIC_VPROG1CNT 0x0d6 | ||
161 | #define INTEL_MSIC_VPROG2CNT 0x0d7 | ||
162 | #define INTEL_MSIC_VEMMCSCNT 0x0d8 | ||
163 | #define INTEL_MSIC_VEMMC1CNT 0x0d9 | ||
164 | #define INTEL_MSIC_VEMMC2CNT 0x0da | ||
165 | #define INTEL_MSIC_VAUDACNT 0x0db | ||
166 | #define INTEL_MSIC_VHSPCNT 0x0dc | ||
167 | #define INTEL_MSIC_VHSNCNT 0x0dd | ||
168 | #define INTEL_MSIC_VHDMICNT 0x0de | ||
169 | #define INTEL_MSIC_VOTGCNT 0x0df | ||
170 | #define INTEL_MSIC_V1P35CNT 0x0e0 | ||
171 | #define INTEL_MSIC_V330AONCNT 0x0e1 | ||
172 | |||
173 | /* RESET */ | ||
174 | #define INTEL_MSIC_CHIPCNTRL 0x100 /* WO */ | ||
175 | #define INTEL_MSIC_ERCONFIG 0x101 | ||
176 | |||
177 | /* BURST */ | ||
178 | #define INTEL_MSIC_BATCURRENTLIMIT12 0x102 | ||
179 | #define INTEL_MSIC_BATTIMELIMIT12 0x103 | ||
180 | #define INTEL_MSIC_BATTIMELIMIT3 0x104 | ||
181 | #define INTEL_MSIC_BATTIMEDB 0x105 | ||
182 | #define INTEL_MSIC_BRSTCONFIGOUTPUTS 0x106 | ||
183 | #define INTEL_MSIC_BRSTCONFIGACTIONS 0x107 | ||
184 | #define INTEL_MSIC_BURSTCONTROLSTATUS 0x108 | ||
185 | |||
186 | /* RTC */ | ||
187 | #define INTEL_MSIC_RTCB1 0x140 /* RO */ | ||
188 | #define INTEL_MSIC_RTCB2 0x141 /* RO */ | ||
189 | #define INTEL_MSIC_RTCB3 0x142 /* RO */ | ||
190 | #define INTEL_MSIC_RTCB4 0x143 /* RO */ | ||
191 | #define INTEL_MSIC_RTCOB1 0x144 | ||
192 | #define INTEL_MSIC_RTCOB2 0x145 | ||
193 | #define INTEL_MSIC_RTCOB3 0x146 | ||
194 | #define INTEL_MSIC_RTCOB4 0x147 | ||
195 | #define INTEL_MSIC_RTCAB1 0x148 | ||
196 | #define INTEL_MSIC_RTCAB2 0x149 | ||
197 | #define INTEL_MSIC_RTCAB3 0x14a | ||
198 | #define INTEL_MSIC_RTCAB4 0x14b | ||
199 | #define INTEL_MSIC_RTCWAB1 0x14c | ||
200 | #define INTEL_MSIC_RTCWAB2 0x14d | ||
201 | #define INTEL_MSIC_RTCWAB3 0x14e | ||
202 | #define INTEL_MSIC_RTCWAB4 0x14f | ||
203 | #define INTEL_MSIC_RTCSC1 0x150 | ||
204 | #define INTEL_MSIC_RTCSC2 0x151 | ||
205 | #define INTEL_MSIC_RTCSC3 0x152 | ||
206 | #define INTEL_MSIC_RTCSC4 0x153 | ||
207 | #define INTEL_MSIC_RTCSTATUS 0x154 /* RO */ | ||
208 | #define INTEL_MSIC_RTCCONFIG1 0x155 | ||
209 | #define INTEL_MSIC_RTCCONFIG2 0x156 | ||
210 | |||
211 | /* CHARGER */ | ||
212 | #define INTEL_MSIC_BDTIMER 0x180 | ||
213 | #define INTEL_MSIC_BATTRMV 0x181 | ||
214 | #define INTEL_MSIC_VBUSDET 0x182 | ||
215 | #define INTEL_MSIC_VBUSDET1 0x183 | ||
216 | #define INTEL_MSIC_ADPHVDET 0x184 | ||
217 | #define INTEL_MSIC_ADPLVDET 0x185 | ||
218 | #define INTEL_MSIC_ADPDETDBDM 0x186 | ||
219 | #define INTEL_MSIC_LOWBATTDET 0x187 | ||
220 | #define INTEL_MSIC_CHRCTRL 0x188 | ||
221 | #define INTEL_MSIC_CHRCVOLTAGE 0x189 | ||
222 | #define INTEL_MSIC_CHRCCURRENT 0x18a | ||
223 | #define INTEL_MSIC_SPCHARGER 0x18b | ||
224 | #define INTEL_MSIC_CHRTTIME 0x18c | ||
225 | #define INTEL_MSIC_CHRCTRL1 0x18d | ||
226 | #define INTEL_MSIC_PWRSRCLMT 0x18e | ||
227 | #define INTEL_MSIC_CHRSTWDT 0x18f | ||
228 | #define INTEL_MSIC_WDTWRITE 0x190 /* WO */ | ||
229 | #define INTEL_MSIC_CHRSAFELMT 0x191 | ||
230 | #define INTEL_MSIC_SPWRSRCINT 0x192 /* RO */ | ||
231 | #define INTEL_MSIC_SPWRSRCINT1 0x193 /* RO */ | ||
232 | #define INTEL_MSIC_CHRLEDPWM 0x194 | ||
233 | #define INTEL_MSIC_CHRLEDCTRL 0x195 | ||
234 | |||
235 | /* ADC */ | ||
236 | #define INTEL_MSIC_ADC1CNTL1 0x1c0 | ||
237 | #define INTEL_MSIC_ADC1CNTL2 0x1c1 | ||
238 | #define INTEL_MSIC_ADC1CNTL3 0x1c2 | ||
239 | #define INTEL_MSIC_ADC1OFFSETH 0x1c3 /* RO */ | ||
240 | #define INTEL_MSIC_ADC1OFFSETL 0x1c4 /* RO */ | ||
241 | #define INTEL_MSIC_ADC1ADDR0 0x1c5 | ||
242 | #define INTEL_MSIC_ADC1ADDR1 0x1c6 | ||
243 | #define INTEL_MSIC_ADC1ADDR2 0x1c7 | ||
244 | #define INTEL_MSIC_ADC1ADDR3 0x1c8 | ||
245 | #define INTEL_MSIC_ADC1ADDR4 0x1c9 | ||
246 | #define INTEL_MSIC_ADC1ADDR5 0x1ca | ||
247 | #define INTEL_MSIC_ADC1ADDR6 0x1cb | ||
248 | #define INTEL_MSIC_ADC1ADDR7 0x1cc | ||
249 | #define INTEL_MSIC_ADC1ADDR8 0x1cd | ||
250 | #define INTEL_MSIC_ADC1ADDR9 0x1ce | ||
251 | #define INTEL_MSIC_ADC1ADDR10 0x1cf | ||
252 | #define INTEL_MSIC_ADC1ADDR11 0x1d0 | ||
253 | #define INTEL_MSIC_ADC1ADDR12 0x1d1 | ||
254 | #define INTEL_MSIC_ADC1ADDR13 0x1d2 | ||
255 | #define INTEL_MSIC_ADC1ADDR14 0x1d3 | ||
256 | #define INTEL_MSIC_ADC1SNS0H 0x1d4 /* RO */ | ||
257 | #define INTEL_MSIC_ADC1SNS0L 0x1d5 /* RO */ | ||
258 | #define INTEL_MSIC_ADC1SNS1H 0x1d6 /* RO */ | ||
259 | #define INTEL_MSIC_ADC1SNS1L 0x1d7 /* RO */ | ||
260 | #define INTEL_MSIC_ADC1SNS2H 0x1d8 /* RO */ | ||
261 | #define INTEL_MSIC_ADC1SNS2L 0x1d9 /* RO */ | ||
262 | #define INTEL_MSIC_ADC1SNS3H 0x1da /* RO */ | ||
263 | #define INTEL_MSIC_ADC1SNS3L 0x1db /* RO */ | ||
264 | #define INTEL_MSIC_ADC1SNS4H 0x1dc /* RO */ | ||
265 | #define INTEL_MSIC_ADC1SNS4L 0x1dd /* RO */ | ||
266 | #define INTEL_MSIC_ADC1SNS5H 0x1de /* RO */ | ||
267 | #define INTEL_MSIC_ADC1SNS5L 0x1df /* RO */ | ||
268 | #define INTEL_MSIC_ADC1SNS6H 0x1e0 /* RO */ | ||
269 | #define INTEL_MSIC_ADC1SNS6L 0x1e1 /* RO */ | ||
270 | #define INTEL_MSIC_ADC1SNS7H 0x1e2 /* RO */ | ||
271 | #define INTEL_MSIC_ADC1SNS7L 0x1e3 /* RO */ | ||
272 | #define INTEL_MSIC_ADC1SNS8H 0x1e4 /* RO */ | ||
273 | #define INTEL_MSIC_ADC1SNS8L 0x1e5 /* RO */ | ||
274 | #define INTEL_MSIC_ADC1SNS9H 0x1e6 /* RO */ | ||
275 | #define INTEL_MSIC_ADC1SNS9L 0x1e7 /* RO */ | ||
276 | #define INTEL_MSIC_ADC1SNS10H 0x1e8 /* RO */ | ||
277 | #define INTEL_MSIC_ADC1SNS10L 0x1e9 /* RO */ | ||
278 | #define INTEL_MSIC_ADC1SNS11H 0x1ea /* RO */ | ||
279 | #define INTEL_MSIC_ADC1SNS11L 0x1eb /* RO */ | ||
280 | #define INTEL_MSIC_ADC1SNS12H 0x1ec /* RO */ | ||
281 | #define INTEL_MSIC_ADC1SNS12L 0x1ed /* RO */ | ||
282 | #define INTEL_MSIC_ADC1SNS13H 0x1ee /* RO */ | ||
283 | #define INTEL_MSIC_ADC1SNS13L 0x1ef /* RO */ | ||
284 | #define INTEL_MSIC_ADC1SNS14H 0x1f0 /* RO */ | ||
285 | #define INTEL_MSIC_ADC1SNS14L 0x1f1 /* RO */ | ||
286 | #define INTEL_MSIC_ADC1BV0H 0x1f2 /* RO */ | ||
287 | #define INTEL_MSIC_ADC1BV0L 0x1f3 /* RO */ | ||
288 | #define INTEL_MSIC_ADC1BV1H 0x1f4 /* RO */ | ||
289 | #define INTEL_MSIC_ADC1BV1L 0x1f5 /* RO */ | ||
290 | #define INTEL_MSIC_ADC1BV2H 0x1f6 /* RO */ | ||
291 | #define INTEL_MSIC_ADC1BV2L 0x1f7 /* RO */ | ||
292 | #define INTEL_MSIC_ADC1BV3H 0x1f8 /* RO */ | ||
293 | #define INTEL_MSIC_ADC1BV3L 0x1f9 /* RO */ | ||
294 | #define INTEL_MSIC_ADC1BI0H 0x1fa /* RO */ | ||
295 | #define INTEL_MSIC_ADC1BI0L 0x1fb /* RO */ | ||
296 | #define INTEL_MSIC_ADC1BI1H 0x1fc /* RO */ | ||
297 | #define INTEL_MSIC_ADC1BI1L 0x1fd /* RO */ | ||
298 | #define INTEL_MSIC_ADC1BI2H 0x1fe /* RO */ | ||
299 | #define INTEL_MSIC_ADC1BI2L 0x1ff /* RO */ | ||
300 | #define INTEL_MSIC_ADC1BI3H 0x200 /* RO */ | ||
301 | #define INTEL_MSIC_ADC1BI3L 0x201 /* RO */ | ||
302 | #define INTEL_MSIC_CCCNTL 0x202 | ||
303 | #define INTEL_MSIC_CCOFFSETH 0x203 /* RO */ | ||
304 | #define INTEL_MSIC_CCOFFSETL 0x204 /* RO */ | ||
305 | #define INTEL_MSIC_CCADCHA 0x205 /* RO */ | ||
306 | #define INTEL_MSIC_CCADCLA 0x206 /* RO */ | ||
307 | |||
308 | /* AUDIO */ | ||
309 | #define INTEL_MSIC_AUDPLLCTRL 0x240 | ||
310 | #define INTEL_MSIC_DMICBUF0123 0x241 | ||
311 | #define INTEL_MSIC_DMICBUF45 0x242 | ||
312 | #define INTEL_MSIC_DMICGPO 0x244 | ||
313 | #define INTEL_MSIC_DMICMUX 0x245 | ||
314 | #define INTEL_MSIC_DMICCLK 0x246 | ||
315 | #define INTEL_MSIC_MICBIAS 0x247 | ||
316 | #define INTEL_MSIC_ADCCONFIG 0x248 | ||
317 | #define INTEL_MSIC_MICAMP1 0x249 | ||
318 | #define INTEL_MSIC_MICAMP2 0x24a | ||
319 | #define INTEL_MSIC_NOISEMUX 0x24b | ||
320 | #define INTEL_MSIC_AUDIOMUX12 0x24c | ||
321 | #define INTEL_MSIC_AUDIOMUX34 0x24d | ||
322 | #define INTEL_MSIC_AUDIOSINC 0x24e | ||
323 | #define INTEL_MSIC_AUDIOTXEN 0x24f | ||
324 | #define INTEL_MSIC_HSEPRXCTRL 0x250 | ||
325 | #define INTEL_MSIC_IHFRXCTRL 0x251 | ||
326 | #define INTEL_MSIC_VOICETXVOL 0x252 | ||
327 | #define INTEL_MSIC_SIDETONEVOL 0x253 | ||
328 | #define INTEL_MSIC_MUSICSHARVOL 0x254 | ||
329 | #define INTEL_MSIC_VOICETXCTRL 0x255 | ||
330 | #define INTEL_MSIC_HSMIXER 0x256 | ||
331 | #define INTEL_MSIC_DACCONFIG 0x257 | ||
332 | #define INTEL_MSIC_SOFTMUTE 0x258 | ||
333 | #define INTEL_MSIC_HSLVOLCTRL 0x259 | ||
334 | #define INTEL_MSIC_HSRVOLCTRL 0x25a | ||
335 | #define INTEL_MSIC_IHFLVOLCTRL 0x25b | ||
336 | #define INTEL_MSIC_IHFRVOLCTRL 0x25c | ||
337 | #define INTEL_MSIC_DRIVEREN 0x25d | ||
338 | #define INTEL_MSIC_LINEOUTCTRL 0x25e | ||
339 | #define INTEL_MSIC_VIB1CTRL1 0x25f | ||
340 | #define INTEL_MSIC_VIB1CTRL2 0x260 | ||
341 | #define INTEL_MSIC_VIB1CTRL3 0x261 | ||
342 | #define INTEL_MSIC_VIB1SPIPCM_1 0x262 | ||
343 | #define INTEL_MSIC_VIB1SPIPCM_2 0x263 | ||
344 | #define INTEL_MSIC_VIB1CTRL5 0x264 | ||
345 | #define INTEL_MSIC_VIB2CTRL1 0x265 | ||
346 | #define INTEL_MSIC_VIB2CTRL2 0x266 | ||
347 | #define INTEL_MSIC_VIB2CTRL3 0x267 | ||
348 | #define INTEL_MSIC_VIB2SPIPCM_1 0x268 | ||
349 | #define INTEL_MSIC_VIB2SPIPCM_2 0x269 | ||
350 | #define INTEL_MSIC_VIB2CTRL5 0x26a | ||
351 | #define INTEL_MSIC_BTNCTRL1 0x26b | ||
352 | #define INTEL_MSIC_BTNCTRL2 0x26c | ||
353 | #define INTEL_MSIC_PCM1TXSLOT01 0x26d | ||
354 | #define INTEL_MSIC_PCM1TXSLOT23 0x26e | ||
355 | #define INTEL_MSIC_PCM1TXSLOT45 0x26f | ||
356 | #define INTEL_MSIC_PCM1RXSLOT0123 0x270 | ||
357 | #define INTEL_MSIC_PCM1RXSLOT045 0x271 | ||
358 | #define INTEL_MSIC_PCM2TXSLOT01 0x272 | ||
359 | #define INTEL_MSIC_PCM2TXSLOT23 0x273 | ||
360 | #define INTEL_MSIC_PCM2TXSLOT45 0x274 | ||
361 | #define INTEL_MSIC_PCM2RXSLOT01 0x275 | ||
362 | #define INTEL_MSIC_PCM2RXSLOT23 0x276 | ||
363 | #define INTEL_MSIC_PCM2RXSLOT45 0x277 | ||
364 | #define INTEL_MSIC_PCM1CTRL1 0x278 | ||
365 | #define INTEL_MSIC_PCM1CTRL2 0x279 | ||
366 | #define INTEL_MSIC_PCM1CTRL3 0x27a | ||
367 | #define INTEL_MSIC_PCM2CTRL1 0x27b | ||
368 | #define INTEL_MSIC_PCM2CTRL2 0x27c | ||
369 | |||
370 | /* HDMI */ | ||
371 | #define INTEL_MSIC_HDMIPUEN 0x280 | ||
372 | #define INTEL_MSIC_HDMISTATUS 0x281 /* RO */ | ||
373 | |||
374 | /* Physical address of the start of the MSIC interrupt tree in SRAM */ | ||
375 | #define INTEL_MSIC_IRQ_PHYS_BASE 0xffff7fc0 | ||
376 | |||
377 | /** | ||
378 | * struct intel_msic_gpio_pdata - platform data for the MSIC GPIO driver | ||
379 | * @gpio_base: base number for the GPIOs | ||
380 | */ | ||
381 | struct intel_msic_gpio_pdata { | ||
382 | unsigned gpio_base; | ||
383 | }; | ||
384 | |||
385 | /** | ||
386 | * struct intel_msic_ocd_pdata - platform data for the MSIC OCD driver | ||
387 | * @gpio: GPIO number used for OCD interrupts | ||
388 | * | ||
389 | * The MSIC MFD driver converts @gpio into an IRQ number and passes it to | ||
390 | * the OCD driver as %IORESOURCE_IRQ. | ||
391 | */ | ||
392 | struct intel_msic_ocd_pdata { | ||
393 | unsigned gpio; | ||
394 | }; | ||
395 | |||
396 | /* MSIC embedded blocks (subdevices) */ | ||
397 | enum intel_msic_block { | ||
398 | INTEL_MSIC_BLOCK_TOUCH, | ||
399 | INTEL_MSIC_BLOCK_ADC, | ||
400 | INTEL_MSIC_BLOCK_BATTERY, | ||
401 | INTEL_MSIC_BLOCK_GPIO, | ||
402 | INTEL_MSIC_BLOCK_AUDIO, | ||
403 | INTEL_MSIC_BLOCK_HDMI, | ||
404 | INTEL_MSIC_BLOCK_THERMAL, | ||
405 | INTEL_MSIC_BLOCK_POWER_BTN, | ||
406 | INTEL_MSIC_BLOCK_OCD, | ||
407 | |||
408 | INTEL_MSIC_BLOCK_LAST, | ||
409 | }; | ||
410 | |||
411 | /** | ||
412 | * struct intel_msic_platform_data - platform data for the MSIC driver | ||
413 | * @irq: array of interrupt numbers, one per device. If @irq is set to %0 | ||
414 | * for a given block, the corresponding platform device is not | ||
415 | * created. For devices which don't have an interrupt, use %0xff | ||
416 | * (this is same as in SFI spec). | ||
417 | * @gpio: platform data for the MSIC GPIO driver | ||
418 | * @ocd: platform data for the MSIC OCD driver | ||
419 | * | ||
420 | * Once the MSIC driver is initialized, the register interface is ready to | ||
421 | * use. All the platform devices for subdevices are created after the | ||
422 | * register interface is ready so that we can guarantee its availability to | ||
423 | * the subdevice drivers. | ||
424 | * | ||
425 | * Interrupt numbers are passed to the subdevices via %IORESOURCE_IRQ | ||
426 | * resources of the created platform device. | ||
427 | */ | ||
428 | struct intel_msic_platform_data { | ||
429 | int irq[INTEL_MSIC_BLOCK_LAST]; | ||
430 | struct intel_msic_gpio_pdata *gpio; | ||
431 | struct intel_msic_ocd_pdata *ocd; | ||
432 | }; | ||
433 | |||
434 | struct intel_msic; | ||
435 | |||
436 | extern int intel_msic_reg_read(unsigned short reg, u8 *val); | ||
437 | extern int intel_msic_reg_write(unsigned short reg, u8 val); | ||
438 | extern int intel_msic_reg_update(unsigned short reg, u8 val, u8 mask); | ||
439 | extern int intel_msic_bulk_read(unsigned short *reg, u8 *buf, size_t count); | ||
440 | extern int intel_msic_bulk_write(unsigned short *reg, u8 *buf, size_t count); | ||
441 | |||
442 | /* | ||
443 | * pdev_to_intel_msic - gets an MSIC instance from the platform device | ||
444 | * @pdev: platform device pointer | ||
445 | * | ||
446 | * The client drivers need to have pointer to the MSIC instance if they | ||
447 | * want to call intel_msic_irq_read(). This macro can be used for | ||
448 | * convenience to get the MSIC pointer from @pdev where needed. This is | ||
449 | * _only_ valid for devices which are managed by the MSIC. | ||
450 | */ | ||
451 | #define pdev_to_intel_msic(pdev) (dev_get_drvdata(pdev->dev.parent)) | ||
452 | |||
453 | extern int intel_msic_irq_read(struct intel_msic *msic, unsigned short reg, | ||
454 | u8 *val); | ||
455 | |||
456 | #endif /* __LINUX_MFD_INTEL_MSIC_H__ */ | ||
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h index 5ff2400ad46c..3f4deb62d6b0 100644 --- a/include/linux/mfd/max8997-private.h +++ b/include/linux/mfd/max8997-private.h | |||
@@ -326,7 +326,6 @@ struct max8997_dev { | |||
326 | int irq; | 326 | int irq; |
327 | int ono; | 327 | int ono; |
328 | int irq_base; | 328 | int irq_base; |
329 | bool wakeup; | ||
330 | struct mutex irqlock; | 329 | struct mutex irqlock; |
331 | int irq_masks_cur[MAX8997_IRQ_GROUP_NR]; | 330 | int irq_masks_cur[MAX8997_IRQ_GROUP_NR]; |
332 | int irq_masks_cache[MAX8997_IRQ_GROUP_NR]; | 331 | int irq_masks_cache[MAX8997_IRQ_GROUP_NR]; |
diff --git a/include/linux/mfd/mc13783.h b/include/linux/mfd/mc13783.h index 7d0f3d6a0002..a8eeda773a7b 100644 --- a/include/linux/mfd/mc13783.h +++ b/include/linux/mfd/mc13783.h | |||
@@ -12,117 +12,6 @@ | |||
12 | 12 | ||
13 | #include <linux/mfd/mc13xxx.h> | 13 | #include <linux/mfd/mc13xxx.h> |
14 | 14 | ||
15 | struct mc13783; | ||
16 | |||
17 | struct mc13xxx *mc13783_to_mc13xxx(struct mc13783 *mc13783); | ||
18 | |||
19 | static inline void mc13783_lock(struct mc13783 *mc13783) | ||
20 | { | ||
21 | mc13xxx_lock(mc13783_to_mc13xxx(mc13783)); | ||
22 | } | ||
23 | |||
24 | static inline void mc13783_unlock(struct mc13783 *mc13783) | ||
25 | { | ||
26 | mc13xxx_unlock(mc13783_to_mc13xxx(mc13783)); | ||
27 | } | ||
28 | |||
29 | static inline int mc13783_reg_read(struct mc13783 *mc13783, | ||
30 | unsigned int offset, u32 *val) | ||
31 | { | ||
32 | return mc13xxx_reg_read(mc13783_to_mc13xxx(mc13783), offset, val); | ||
33 | } | ||
34 | |||
35 | static inline int mc13783_reg_write(struct mc13783 *mc13783, | ||
36 | unsigned int offset, u32 val) | ||
37 | { | ||
38 | return mc13xxx_reg_write(mc13783_to_mc13xxx(mc13783), offset, val); | ||
39 | } | ||
40 | |||
41 | static inline int mc13783_reg_rmw(struct mc13783 *mc13783, | ||
42 | unsigned int offset, u32 mask, u32 val) | ||
43 | { | ||
44 | return mc13xxx_reg_rmw(mc13783_to_mc13xxx(mc13783), offset, mask, val); | ||
45 | } | ||
46 | |||
47 | static inline int mc13783_get_flags(struct mc13783 *mc13783) | ||
48 | { | ||
49 | return mc13xxx_get_flags(mc13783_to_mc13xxx(mc13783)); | ||
50 | } | ||
51 | |||
52 | static inline int mc13783_irq_request(struct mc13783 *mc13783, int irq, | ||
53 | irq_handler_t handler, const char *name, void *dev) | ||
54 | { | ||
55 | return mc13xxx_irq_request(mc13783_to_mc13xxx(mc13783), irq, | ||
56 | handler, name, dev); | ||
57 | } | ||
58 | |||
59 | static inline int mc13783_irq_request_nounmask(struct mc13783 *mc13783, int irq, | ||
60 | irq_handler_t handler, const char *name, void *dev) | ||
61 | { | ||
62 | return mc13xxx_irq_request_nounmask(mc13783_to_mc13xxx(mc13783), irq, | ||
63 | handler, name, dev); | ||
64 | } | ||
65 | |||
66 | static inline int mc13783_irq_free(struct mc13783 *mc13783, int irq, void *dev) | ||
67 | { | ||
68 | return mc13xxx_irq_free(mc13783_to_mc13xxx(mc13783), irq, dev); | ||
69 | } | ||
70 | |||
71 | static inline int mc13783_irq_mask(struct mc13783 *mc13783, int irq) | ||
72 | { | ||
73 | return mc13xxx_irq_mask(mc13783_to_mc13xxx(mc13783), irq); | ||
74 | } | ||
75 | |||
76 | static inline int mc13783_irq_unmask(struct mc13783 *mc13783, int irq) | ||
77 | { | ||
78 | return mc13xxx_irq_unmask(mc13783_to_mc13xxx(mc13783), irq); | ||
79 | } | ||
80 | static inline int mc13783_irq_status(struct mc13783 *mc13783, int irq, | ||
81 | int *enabled, int *pending) | ||
82 | { | ||
83 | return mc13xxx_irq_status(mc13783_to_mc13xxx(mc13783), | ||
84 | irq, enabled, pending); | ||
85 | } | ||
86 | |||
87 | static inline int mc13783_irq_ack(struct mc13783 *mc13783, int irq) | ||
88 | { | ||
89 | return mc13xxx_irq_ack(mc13783_to_mc13xxx(mc13783), irq); | ||
90 | } | ||
91 | |||
92 | #define MC13783_ADC0 43 | ||
93 | #define MC13783_ADC0_ADREFEN (1 << 10) | ||
94 | #define MC13783_ADC0_ADREFMODE (1 << 11) | ||
95 | #define MC13783_ADC0_TSMOD0 (1 << 12) | ||
96 | #define MC13783_ADC0_TSMOD1 (1 << 13) | ||
97 | #define MC13783_ADC0_TSMOD2 (1 << 14) | ||
98 | #define MC13783_ADC0_ADINC1 (1 << 16) | ||
99 | #define MC13783_ADC0_ADINC2 (1 << 17) | ||
100 | |||
101 | #define MC13783_ADC0_TSMOD_MASK (MC13783_ADC0_TSMOD0 | \ | ||
102 | MC13783_ADC0_TSMOD1 | \ | ||
103 | MC13783_ADC0_TSMOD2) | ||
104 | |||
105 | #define mc13783_regulator_init_data mc13xxx_regulator_init_data | ||
106 | #define mc13783_regulator_platform_data mc13xxx_regulator_platform_data | ||
107 | #define mc13783_led_platform_data mc13xxx_led_platform_data | ||
108 | #define mc13783_leds_platform_data mc13xxx_leds_platform_data | ||
109 | |||
110 | #define mc13783_platform_data mc13xxx_platform_data | ||
111 | #define MC13783_USE_TOUCHSCREEN MC13XXX_USE_TOUCHSCREEN | ||
112 | #define MC13783_USE_CODEC MC13XXX_USE_CODEC | ||
113 | #define MC13783_USE_ADC MC13XXX_USE_ADC | ||
114 | #define MC13783_USE_RTC MC13XXX_USE_RTC | ||
115 | #define MC13783_USE_REGULATOR MC13XXX_USE_REGULATOR | ||
116 | #define MC13783_USE_LED MC13XXX_USE_LED | ||
117 | |||
118 | #define MC13783_ADC_MODE_TS 1 | ||
119 | #define MC13783_ADC_MODE_SINGLE_CHAN 2 | ||
120 | #define MC13783_ADC_MODE_MULT_CHAN 3 | ||
121 | |||
122 | int mc13783_adc_do_conversion(struct mc13783 *mc13783, unsigned int mode, | ||
123 | unsigned int channel, unsigned int *sample); | ||
124 | |||
125 | |||
126 | #define MC13783_REG_SW1A 0 | 15 | #define MC13783_REG_SW1A 0 |
127 | #define MC13783_REG_SW1B 1 | 16 | #define MC13783_REG_SW1B 1 |
128 | #define MC13783_REG_SW2A 2 | 17 | #define MC13783_REG_SW2A 2 |
diff --git a/include/linux/mfd/mc13xxx.h b/include/linux/mfd/mc13xxx.h index c064beaaccb7..3816c2fac0ad 100644 --- a/include/linux/mfd/mc13xxx.h +++ b/include/linux/mfd/mc13xxx.h | |||
@@ -37,6 +37,9 @@ int mc13xxx_irq_ack(struct mc13xxx *mc13xxx, int irq); | |||
37 | 37 | ||
38 | int mc13xxx_get_flags(struct mc13xxx *mc13xxx); | 38 | int mc13xxx_get_flags(struct mc13xxx *mc13xxx); |
39 | 39 | ||
40 | int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, | ||
41 | unsigned int mode, unsigned int channel, unsigned int *sample); | ||
42 | |||
40 | #define MC13XXX_IRQ_ADCDONE 0 | 43 | #define MC13XXX_IRQ_ADCDONE 0 |
41 | #define MC13XXX_IRQ_ADCBISDONE 1 | 44 | #define MC13XXX_IRQ_ADCBISDONE 1 |
42 | #define MC13XXX_IRQ_TS 2 | 45 | #define MC13XXX_IRQ_TS 2 |
@@ -137,17 +140,48 @@ struct mc13xxx_leds_platform_data { | |||
137 | char tc3_period; | 140 | char tc3_period; |
138 | }; | 141 | }; |
139 | 142 | ||
143 | struct mc13xxx_buttons_platform_data { | ||
144 | #define MC13783_BUTTON_DBNC_0MS 0 | ||
145 | #define MC13783_BUTTON_DBNC_30MS 1 | ||
146 | #define MC13783_BUTTON_DBNC_150MS 2 | ||
147 | #define MC13783_BUTTON_DBNC_750MS 3 | ||
148 | #define MC13783_BUTTON_ENABLE (1 << 2) | ||
149 | #define MC13783_BUTTON_POL_INVERT (1 << 3) | ||
150 | #define MC13783_BUTTON_RESET_EN (1 << 4) | ||
151 | int b1on_flags; | ||
152 | unsigned short b1on_key; | ||
153 | int b2on_flags; | ||
154 | unsigned short b2on_key; | ||
155 | int b3on_flags; | ||
156 | unsigned short b3on_key; | ||
157 | }; | ||
158 | |||
140 | struct mc13xxx_platform_data { | 159 | struct mc13xxx_platform_data { |
141 | #define MC13XXX_USE_TOUCHSCREEN (1 << 0) | 160 | #define MC13XXX_USE_TOUCHSCREEN (1 << 0) |
142 | #define MC13XXX_USE_CODEC (1 << 1) | 161 | #define MC13XXX_USE_CODEC (1 << 1) |
143 | #define MC13XXX_USE_ADC (1 << 2) | 162 | #define MC13XXX_USE_ADC (1 << 2) |
144 | #define MC13XXX_USE_RTC (1 << 3) | 163 | #define MC13XXX_USE_RTC (1 << 3) |
145 | #define MC13XXX_USE_REGULATOR (1 << 4) | ||
146 | #define MC13XXX_USE_LED (1 << 5) | ||
147 | unsigned int flags; | 164 | unsigned int flags; |
148 | 165 | ||
149 | struct mc13xxx_regulator_platform_data regulators; | 166 | struct mc13xxx_regulator_platform_data regulators; |
150 | struct mc13xxx_leds_platform_data *leds; | 167 | struct mc13xxx_leds_platform_data *leds; |
168 | struct mc13xxx_buttons_platform_data *buttons; | ||
151 | }; | 169 | }; |
152 | 170 | ||
171 | #define MC13XXX_ADC_MODE_TS 1 | ||
172 | #define MC13XXX_ADC_MODE_SINGLE_CHAN 2 | ||
173 | #define MC13XXX_ADC_MODE_MULT_CHAN 3 | ||
174 | |||
175 | #define MC13XXX_ADC0 43 | ||
176 | #define MC13XXX_ADC0_ADREFEN (1 << 10) | ||
177 | #define MC13XXX_ADC0_TSMOD0 (1 << 12) | ||
178 | #define MC13XXX_ADC0_TSMOD1 (1 << 13) | ||
179 | #define MC13XXX_ADC0_TSMOD2 (1 << 14) | ||
180 | #define MC13XXX_ADC0_ADINC1 (1 << 16) | ||
181 | #define MC13XXX_ADC0_ADINC2 (1 << 17) | ||
182 | |||
183 | #define MC13XXX_ADC0_TSMOD_MASK (MC13XXX_ADC0_TSMOD0 | \ | ||
184 | MC13XXX_ADC0_TSMOD1 | \ | ||
185 | MC13XXX_ADC0_TSMOD2) | ||
186 | |||
153 | #endif /* ifndef __LINUX_MFD_MC13XXX_H */ | 187 | #endif /* ifndef __LINUX_MFD_MC13XXX_H */ |
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h index 50d4a047118d..a80840752b4c 100644 --- a/include/linux/mfd/pcf50633/core.h +++ b/include/linux/mfd/pcf50633/core.h | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/mfd/pcf50633/backlight.h> | 21 | #include <linux/mfd/pcf50633/backlight.h> |
22 | 22 | ||
23 | struct pcf50633; | 23 | struct pcf50633; |
24 | struct regmap; | ||
24 | 25 | ||
25 | #define PCF50633_NUM_REGULATORS 11 | 26 | #define PCF50633_NUM_REGULATORS 11 |
26 | 27 | ||
@@ -134,7 +135,7 @@ enum { | |||
134 | 135 | ||
135 | struct pcf50633 { | 136 | struct pcf50633 { |
136 | struct device *dev; | 137 | struct device *dev; |
137 | struct i2c_client *i2c_client; | 138 | struct regmap *regmap; |
138 | 139 | ||
139 | struct pcf50633_platform_data *pdata; | 140 | struct pcf50633_platform_data *pdata; |
140 | int irq; | 141 | int irq; |
diff --git a/include/linux/mfd/tps6586x.h b/include/linux/mfd/tps6586x.h index b6bab1b04e25..b19176eab44d 100644 --- a/include/linux/mfd/tps6586x.h +++ b/include/linux/mfd/tps6586x.h | |||
@@ -1,6 +1,18 @@ | |||
1 | #ifndef __LINUX_MFD_TPS6586X_H | 1 | #ifndef __LINUX_MFD_TPS6586X_H |
2 | #define __LINUX_MFD_TPS6586X_H | 2 | #define __LINUX_MFD_TPS6586X_H |
3 | 3 | ||
4 | #define TPS6586X_SLEW_RATE_INSTANTLY 0x00 | ||
5 | #define TPS6586X_SLEW_RATE_110UV 0x01 | ||
6 | #define TPS6586X_SLEW_RATE_220UV 0x02 | ||
7 | #define TPS6586X_SLEW_RATE_440UV 0x03 | ||
8 | #define TPS6586X_SLEW_RATE_880UV 0x04 | ||
9 | #define TPS6586X_SLEW_RATE_1760UV 0x05 | ||
10 | #define TPS6586X_SLEW_RATE_3520UV 0x06 | ||
11 | #define TPS6586X_SLEW_RATE_7040UV 0x07 | ||
12 | |||
13 | #define TPS6586X_SLEW_RATE_SET 0x08 | ||
14 | #define TPS6586X_SLEW_RATE_MASK 0x07 | ||
15 | |||
4 | enum { | 16 | enum { |
5 | TPS6586X_ID_SM_0, | 17 | TPS6586X_ID_SM_0, |
6 | TPS6586X_ID_SM_1, | 18 | TPS6586X_ID_SM_1, |
@@ -48,6 +60,10 @@ enum { | |||
48 | TPS6586X_INT_RTC_ALM2, | 60 | TPS6586X_INT_RTC_ALM2, |
49 | }; | 61 | }; |
50 | 62 | ||
63 | struct tps6586x_settings { | ||
64 | int slew_rate; | ||
65 | }; | ||
66 | |||
51 | struct tps6586x_subdev_info { | 67 | struct tps6586x_subdev_info { |
52 | int id; | 68 | int id; |
53 | const char *name; | 69 | const char *name; |
diff --git a/include/linux/mfd/tps65910.h b/include/linux/mfd/tps65910.h index 82b4c8801a4f..8bf2cb9502dd 100644 --- a/include/linux/mfd/tps65910.h +++ b/include/linux/mfd/tps65910.h | |||
@@ -243,7 +243,8 @@ | |||
243 | 243 | ||
244 | 244 | ||
245 | /*Registers VDD1, VDD2 voltage values definitions */ | 245 | /*Registers VDD1, VDD2 voltage values definitions */ |
246 | #define VDD1_2_NUM_VOLTS 73 | 246 | #define VDD1_2_NUM_VOLT_FINE 73 |
247 | #define VDD1_2_NUM_VOLT_COARSE 3 | ||
247 | #define VDD1_2_MIN_VOLT 6000 | 248 | #define VDD1_2_MIN_VOLT 6000 |
248 | #define VDD1_2_OFFSET 125 | 249 | #define VDD1_2_OFFSET 125 |
249 | 250 | ||
diff --git a/include/linux/mfd/wm831x/core.h b/include/linux/mfd/wm831x/core.h index ed8fe0d04097..4b1211859f74 100644 --- a/include/linux/mfd/wm831x/core.h +++ b/include/linux/mfd/wm831x/core.h | |||
@@ -382,6 +382,7 @@ struct wm831x { | |||
382 | 382 | ||
383 | /* Used by the interrupt controller code to post writes */ | 383 | /* Used by the interrupt controller code to post writes */ |
384 | int gpio_update[WM831X_NUM_GPIO_REGS]; | 384 | int gpio_update[WM831X_NUM_GPIO_REGS]; |
385 | bool gpio_level[WM831X_NUM_GPIO_REGS]; | ||
385 | 386 | ||
386 | struct mutex auxadc_lock; | 387 | struct mutex auxadc_lock; |
387 | struct list_head auxadc_pending; | 388 | struct list_head auxadc_pending; |
diff --git a/include/linux/mfd/wm8994/core.h b/include/linux/mfd/wm8994/core.h index 626809147624..f44bdb7273bd 100644 --- a/include/linux/mfd/wm8994/core.h +++ b/include/linux/mfd/wm8994/core.h | |||
@@ -59,6 +59,8 @@ struct wm8994 { | |||
59 | struct device *dev; | 59 | struct device *dev; |
60 | struct regmap *regmap; | 60 | struct regmap *regmap; |
61 | 61 | ||
62 | bool ldo_ena_always_driven; | ||
63 | |||
62 | int gpio_base; | 64 | int gpio_base; |
63 | int irq_base; | 65 | int irq_base; |
64 | 66 | ||
diff --git a/include/linux/mfd/wm8994/pdata.h b/include/linux/mfd/wm8994/pdata.h index 97cf4f27d647..ea32f306dca6 100644 --- a/include/linux/mfd/wm8994/pdata.h +++ b/include/linux/mfd/wm8994/pdata.h | |||
@@ -167,6 +167,13 @@ struct wm8994_pdata { | |||
167 | 167 | ||
168 | /* WM8958 microphone bias configuration */ | 168 | /* WM8958 microphone bias configuration */ |
169 | int micbias[2]; | 169 | int micbias[2]; |
170 | |||
171 | /* Disable the internal pull downs on the LDOs if they are | ||
172 | * always driven (eg, connected to an always on supply or | ||
173 | * GPIO that always drives an output. If they float power | ||
174 | * consumption will rise. | ||
175 | */ | ||
176 | bool ldo_ena_always_driven; | ||
170 | }; | 177 | }; |
171 | 178 | ||
172 | #endif | 179 | #endif |
diff --git a/include/linux/mfd/wm8994/registers.h b/include/linux/mfd/wm8994/registers.h index fae295048a8b..83a9caec0e43 100644 --- a/include/linux/mfd/wm8994/registers.h +++ b/include/linux/mfd/wm8994/registers.h | |||
@@ -1963,6 +1963,21 @@ | |||
1963 | #define WM8958_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */ | 1963 | #define WM8958_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */ |
1964 | 1964 | ||
1965 | /* | 1965 | /* |
1966 | * R210 (0xD2) - Mic Detect 3 | ||
1967 | */ | ||
1968 | #define WM8958_MICD_LVL_MASK 0x07FC /* MICD_LVL - [10:2] */ | ||
1969 | #define WM8958_MICD_LVL_SHIFT 2 /* MICD_LVL - [10:2] */ | ||
1970 | #define WM8958_MICD_LVL_WIDTH 9 /* MICD_LVL - [10:2] */ | ||
1971 | #define WM8958_MICD_VALID 0x0002 /* MICD_VALID */ | ||
1972 | #define WM8958_MICD_VALID_MASK 0x0002 /* MICD_VALID */ | ||
1973 | #define WM8958_MICD_VALID_SHIFT 1 /* MICD_VALID */ | ||
1974 | #define WM8958_MICD_VALID_WIDTH 1 /* MICD_VALID */ | ||
1975 | #define WM8958_MICD_STS 0x0001 /* MICD_STS */ | ||
1976 | #define WM8958_MICD_STS_MASK 0x0001 /* MICD_STS */ | ||
1977 | #define WM8958_MICD_STS_SHIFT 0 /* MICD_STS */ | ||
1978 | #define WM8958_MICD_STS_WIDTH 1 /* MICD_STS */ | ||
1979 | |||
1980 | /* | ||
1966 | * R76 (0x4C) - Charge Pump (1) | 1981 | * R76 (0x4C) - Charge Pump (1) |
1967 | */ | 1982 | */ |
1968 | #define WM8994_CP_ENA 0x8000 /* CP_ENA */ | 1983 | #define WM8994_CP_ENA 0x8000 /* CP_ENA */ |
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h index c309b1ecdc1c..c41d7270c6c6 100644 --- a/include/linux/miscdevice.h +++ b/include/linux/miscdevice.h | |||
@@ -1,7 +1,8 @@ | |||
1 | #ifndef _LINUX_MISCDEVICE_H | 1 | #ifndef _LINUX_MISCDEVICE_H |
2 | #define _LINUX_MISCDEVICE_H | 2 | #define _LINUX_MISCDEVICE_H |
3 | #include <linux/module.h> | ||
4 | #include <linux/major.h> | 3 | #include <linux/major.h> |
4 | #include <linux/list.h> | ||
5 | #include <linux/types.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * These allocations are managed by device@lanana.org. If you use an | 8 | * These allocations are managed by device@lanana.org. If you use an |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 2366f94a095a..84b0b1848f17 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -61,6 +61,7 @@ enum { | |||
61 | MLX4_DEV_CAP_FLAG_RC = 1LL << 0, | 61 | MLX4_DEV_CAP_FLAG_RC = 1LL << 0, |
62 | MLX4_DEV_CAP_FLAG_UC = 1LL << 1, | 62 | MLX4_DEV_CAP_FLAG_UC = 1LL << 1, |
63 | MLX4_DEV_CAP_FLAG_UD = 1LL << 2, | 63 | MLX4_DEV_CAP_FLAG_UD = 1LL << 2, |
64 | MLX4_DEV_CAP_FLAG_XRC = 1LL << 3, | ||
64 | MLX4_DEV_CAP_FLAG_SRQ = 1LL << 6, | 65 | MLX4_DEV_CAP_FLAG_SRQ = 1LL << 6, |
65 | MLX4_DEV_CAP_FLAG_IPOIB_CSUM = 1LL << 7, | 66 | MLX4_DEV_CAP_FLAG_IPOIB_CSUM = 1LL << 7, |
66 | MLX4_DEV_CAP_FLAG_BAD_PKEY_CNTR = 1LL << 8, | 67 | MLX4_DEV_CAP_FLAG_BAD_PKEY_CNTR = 1LL << 8, |
@@ -83,6 +84,12 @@ enum { | |||
83 | MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48 | 84 | MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48 |
84 | }; | 85 | }; |
85 | 86 | ||
87 | #define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90) | ||
88 | |||
89 | enum { | ||
90 | MLX_EXT_PORT_CAP_FLAG_EXTENDED_PORT_INFO = 1 << 0 | ||
91 | }; | ||
92 | |||
86 | enum { | 93 | enum { |
87 | MLX4_BMME_FLAG_LOCAL_INV = 1 << 6, | 94 | MLX4_BMME_FLAG_LOCAL_INV = 1 << 6, |
88 | MLX4_BMME_FLAG_REMOTE_INV = 1 << 7, | 95 | MLX4_BMME_FLAG_REMOTE_INV = 1 << 7, |
@@ -257,6 +264,8 @@ struct mlx4_caps { | |||
257 | int num_qp_per_mgm; | 264 | int num_qp_per_mgm; |
258 | int num_pds; | 265 | int num_pds; |
259 | int reserved_pds; | 266 | int reserved_pds; |
267 | int max_xrcds; | ||
268 | int reserved_xrcds; | ||
260 | int mtt_entry_sz; | 269 | int mtt_entry_sz; |
261 | u32 max_msg_sz; | 270 | u32 max_msg_sz; |
262 | u32 page_size_cap; | 271 | u32 page_size_cap; |
@@ -277,6 +286,7 @@ struct mlx4_caps { | |||
277 | u32 port_mask; | 286 | u32 port_mask; |
278 | enum mlx4_port_type possible_type[MLX4_MAX_PORTS + 1]; | 287 | enum mlx4_port_type possible_type[MLX4_MAX_PORTS + 1]; |
279 | u32 max_counters; | 288 | u32 max_counters; |
289 | u8 ext_port_cap[MLX4_MAX_PORTS + 1]; | ||
280 | }; | 290 | }; |
281 | 291 | ||
282 | struct mlx4_buf_list { | 292 | struct mlx4_buf_list { |
@@ -500,6 +510,8 @@ static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset) | |||
500 | 510 | ||
501 | int mlx4_pd_alloc(struct mlx4_dev *dev, u32 *pdn); | 511 | int mlx4_pd_alloc(struct mlx4_dev *dev, u32 *pdn); |
502 | void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn); | 512 | void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn); |
513 | int mlx4_xrcd_alloc(struct mlx4_dev *dev, u32 *xrcdn); | ||
514 | void mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn); | ||
503 | 515 | ||
504 | int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar); | 516 | int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar); |
505 | void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar); | 517 | void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar); |
@@ -539,8 +551,8 @@ void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt); | |||
539 | int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp); | 551 | int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp); |
540 | void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp); | 552 | void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp); |
541 | 553 | ||
542 | int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, struct mlx4_mtt *mtt, | 554 | int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn, |
543 | u64 db_rec, struct mlx4_srq *srq); | 555 | struct mlx4_mtt *mtt, u64 db_rec, struct mlx4_srq *srq); |
544 | void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq); | 556 | void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq); |
545 | int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark); | 557 | int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark); |
546 | int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark); | 558 | int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark); |
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index 4001c8249dbb..48cc4cb97858 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
@@ -75,6 +75,7 @@ enum { | |||
75 | MLX4_QP_ST_UC = 0x1, | 75 | MLX4_QP_ST_UC = 0x1, |
76 | MLX4_QP_ST_RD = 0x2, | 76 | MLX4_QP_ST_RD = 0x2, |
77 | MLX4_QP_ST_UD = 0x3, | 77 | MLX4_QP_ST_UD = 0x3, |
78 | MLX4_QP_ST_XRC = 0x6, | ||
78 | MLX4_QP_ST_MLX = 0x7 | 79 | MLX4_QP_ST_MLX = 0x7 |
79 | }; | 80 | }; |
80 | 81 | ||
@@ -137,7 +138,7 @@ struct mlx4_qp_context { | |||
137 | __be32 ssn; | 138 | __be32 ssn; |
138 | __be32 params2; | 139 | __be32 params2; |
139 | __be32 rnr_nextrecvpsn; | 140 | __be32 rnr_nextrecvpsn; |
140 | __be32 srcd; | 141 | __be32 xrcd; |
141 | __be32 cqn_recv; | 142 | __be32 cqn_recv; |
142 | __be64 db_rec_addr; | 143 | __be64 db_rec_addr; |
143 | __be32 qkey; | 144 | __be32 qkey; |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 7438071b44aa..4baadd18f4ad 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/mmzone.h> | 10 | #include <linux/mmzone.h> |
11 | #include <linux/rbtree.h> | 11 | #include <linux/rbtree.h> |
12 | #include <linux/prio_tree.h> | 12 | #include <linux/prio_tree.h> |
13 | #include <linux/atomic.h> | ||
13 | #include <linux/debug_locks.h> | 14 | #include <linux/debug_locks.h> |
14 | #include <linux/mm_types.h> | 15 | #include <linux/mm_types.h> |
15 | #include <linux/range.h> | 16 | #include <linux/range.h> |
@@ -356,36 +357,50 @@ static inline struct page *compound_head(struct page *page) | |||
356 | return page; | 357 | return page; |
357 | } | 358 | } |
358 | 359 | ||
360 | /* | ||
361 | * The atomic page->_mapcount, starts from -1: so that transitions | ||
362 | * both from it and to it can be tracked, using atomic_inc_and_test | ||
363 | * and atomic_add_negative(-1). | ||
364 | */ | ||
365 | static inline void reset_page_mapcount(struct page *page) | ||
366 | { | ||
367 | atomic_set(&(page)->_mapcount, -1); | ||
368 | } | ||
369 | |||
370 | static inline int page_mapcount(struct page *page) | ||
371 | { | ||
372 | return atomic_read(&(page)->_mapcount) + 1; | ||
373 | } | ||
374 | |||
359 | static inline int page_count(struct page *page) | 375 | static inline int page_count(struct page *page) |
360 | { | 376 | { |
361 | return atomic_read(&compound_head(page)->_count); | 377 | return atomic_read(&compound_head(page)->_count); |
362 | } | 378 | } |
363 | 379 | ||
380 | static inline void get_huge_page_tail(struct page *page) | ||
381 | { | ||
382 | /* | ||
383 | * __split_huge_page_refcount() cannot run | ||
384 | * from under us. | ||
385 | */ | ||
386 | VM_BUG_ON(page_mapcount(page) < 0); | ||
387 | VM_BUG_ON(atomic_read(&page->_count) != 0); | ||
388 | atomic_inc(&page->_mapcount); | ||
389 | } | ||
390 | |||
391 | extern bool __get_page_tail(struct page *page); | ||
392 | |||
364 | static inline void get_page(struct page *page) | 393 | static inline void get_page(struct page *page) |
365 | { | 394 | { |
395 | if (unlikely(PageTail(page))) | ||
396 | if (likely(__get_page_tail(page))) | ||
397 | return; | ||
366 | /* | 398 | /* |
367 | * Getting a normal page or the head of a compound page | 399 | * Getting a normal page or the head of a compound page |
368 | * requires to already have an elevated page->_count. Only if | 400 | * requires to already have an elevated page->_count. |
369 | * we're getting a tail page, the elevated page->_count is | ||
370 | * required only in the head page, so for tail pages the | ||
371 | * bugcheck only verifies that the page->_count isn't | ||
372 | * negative. | ||
373 | */ | 401 | */ |
374 | VM_BUG_ON(atomic_read(&page->_count) < !PageTail(page)); | 402 | VM_BUG_ON(atomic_read(&page->_count) <= 0); |
375 | atomic_inc(&page->_count); | 403 | atomic_inc(&page->_count); |
376 | /* | ||
377 | * Getting a tail page will elevate both the head and tail | ||
378 | * page->_count(s). | ||
379 | */ | ||
380 | if (unlikely(PageTail(page))) { | ||
381 | /* | ||
382 | * This is safe only because | ||
383 | * __split_huge_page_refcount can't run under | ||
384 | * get_page(). | ||
385 | */ | ||
386 | VM_BUG_ON(atomic_read(&page->first_page->_count) <= 0); | ||
387 | atomic_inc(&page->first_page->_count); | ||
388 | } | ||
389 | } | 404 | } |
390 | 405 | ||
391 | static inline struct page *virt_to_head_page(const void *x) | 406 | static inline struct page *virt_to_head_page(const void *x) |
@@ -804,21 +819,6 @@ static inline pgoff_t page_index(struct page *page) | |||
804 | } | 819 | } |
805 | 820 | ||
806 | /* | 821 | /* |
807 | * The atomic page->_mapcount, like _count, starts from -1: | ||
808 | * so that transitions both from it and to it can be tracked, | ||
809 | * using atomic_inc_and_test and atomic_add_negative(-1). | ||
810 | */ | ||
811 | static inline void reset_page_mapcount(struct page *page) | ||
812 | { | ||
813 | atomic_set(&(page)->_mapcount, -1); | ||
814 | } | ||
815 | |||
816 | static inline int page_mapcount(struct page *page) | ||
817 | { | ||
818 | return atomic_read(&(page)->_mapcount) + 1; | ||
819 | } | ||
820 | |||
821 | /* | ||
822 | * Return true if this page is mapped into pagetables. | 822 | * Return true if this page is mapped into pagetables. |
823 | */ | 823 | */ |
824 | static inline int page_mapped(struct page *page) | 824 | static inline int page_mapped(struct page *page) |
@@ -1334,7 +1334,8 @@ extern void si_meminfo(struct sysinfo * val); | |||
1334 | extern void si_meminfo_node(struct sysinfo *val, int nid); | 1334 | extern void si_meminfo_node(struct sysinfo *val, int nid); |
1335 | extern int after_bootmem; | 1335 | extern int after_bootmem; |
1336 | 1336 | ||
1337 | extern void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); | 1337 | extern __printf(3, 4) |
1338 | void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); | ||
1338 | 1339 | ||
1339 | extern void setup_per_cpu_pageset(void); | 1340 | extern void setup_per_cpu_pageset(void); |
1340 | 1341 | ||
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index c93d00a6e95d..5b42f1b34eb7 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -62,10 +62,23 @@ struct page { | |||
62 | struct { | 62 | struct { |
63 | 63 | ||
64 | union { | 64 | union { |
65 | atomic_t _mapcount; /* Count of ptes mapped in mms, | 65 | /* |
66 | * to show when page is mapped | 66 | * Count of ptes mapped in |
67 | * & limit reverse map searches. | 67 | * mms, to show when page is |
68 | */ | 68 | * mapped & limit reverse map |
69 | * searches. | ||
70 | * | ||
71 | * Used also for tail pages | ||
72 | * refcounting instead of | ||
73 | * _count. Tail pages cannot | ||
74 | * be mapped and keeping the | ||
75 | * tail page _count zero at | ||
76 | * all times guarantees | ||
77 | * get_page_unless_zero() will | ||
78 | * never succeed on tail | ||
79 | * pages. | ||
80 | */ | ||
81 | atomic_t _mapcount; | ||
69 | 82 | ||
70 | struct { | 83 | struct { |
71 | unsigned inuse:16; | 84 | unsigned inuse:16; |
@@ -304,8 +317,15 @@ struct mm_struct { | |||
304 | unsigned long hiwater_rss; /* High-watermark of RSS usage */ | 317 | unsigned long hiwater_rss; /* High-watermark of RSS usage */ |
305 | unsigned long hiwater_vm; /* High-water virtual memory usage */ | 318 | unsigned long hiwater_vm; /* High-water virtual memory usage */ |
306 | 319 | ||
307 | unsigned long total_vm, locked_vm, shared_vm, exec_vm; | 320 | unsigned long total_vm; /* Total pages mapped */ |
308 | unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; | 321 | unsigned long locked_vm; /* Pages that have PG_mlocked set */ |
322 | unsigned long pinned_vm; /* Refcount permanently increased */ | ||
323 | unsigned long shared_vm; /* Shared pages (files) */ | ||
324 | unsigned long exec_vm; /* VM_EXEC & ~VM_WRITE */ | ||
325 | unsigned long stack_vm; /* VM_GROWSUP/DOWN */ | ||
326 | unsigned long reserved_vm; /* VM_RESERVED|VM_IO pages */ | ||
327 | unsigned long def_flags; | ||
328 | unsigned long nr_ptes; /* Page table pages */ | ||
309 | unsigned long start_code, end_code, start_data, end_data; | 329 | unsigned long start_code, end_code, start_data, end_data; |
310 | unsigned long start_brk, brk, start_stack; | 330 | unsigned long start_brk, brk, start_stack; |
311 | unsigned long arg_start, arg_end, env_start, env_end; | 331 | unsigned long arg_start, arg_end, env_start, env_end; |
@@ -336,9 +356,6 @@ struct mm_struct { | |||
336 | unsigned int token_priority; | 356 | unsigned int token_priority; |
337 | unsigned int last_interval; | 357 | unsigned int last_interval; |
338 | 358 | ||
339 | /* How many tasks sharing this mm are OOM_DISABLE */ | ||
340 | atomic_t oom_disable_count; | ||
341 | |||
342 | unsigned long flags; /* Must use atomic bitops to access the bits */ | 359 | unsigned long flags; /* Must use atomic bitops to access the bits */ |
343 | 360 | ||
344 | struct core_state *core_state; /* coredumping support */ | 361 | struct core_state *core_state; /* coredumping support */ |
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 415f2db414e1..c8ef9bc54d50 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
@@ -218,6 +218,7 @@ struct mmc_card { | |||
218 | #define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ | 218 | #define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ |
219 | #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ | 219 | #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ |
220 | #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ | 220 | #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ |
221 | #define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ | ||
221 | /* byte mode */ | 222 | /* byte mode */ |
222 | unsigned int poweroff_notify_state; /* eMMC4.5 notify feature */ | 223 | unsigned int poweroff_notify_state; /* eMMC4.5 notify feature */ |
223 | #define MMC_NO_POWER_NOTIFICATION 0 | 224 | #define MMC_NO_POWER_NOTIFICATION 0 |
@@ -433,6 +434,11 @@ static inline int mmc_card_broken_byte_mode_512(const struct mmc_card *c) | |||
433 | return c->quirks & MMC_QUIRK_BROKEN_BYTE_MODE_512; | 434 | return c->quirks & MMC_QUIRK_BROKEN_BYTE_MODE_512; |
434 | } | 435 | } |
435 | 436 | ||
437 | static inline int mmc_card_long_read_time(const struct mmc_card *c) | ||
438 | { | ||
439 | return c->quirks & MMC_QUIRK_LONG_READ_TIME; | ||
440 | } | ||
441 | |||
436 | #define mmc_card_name(c) ((c)->cid.prod_name) | 442 | #define mmc_card_name(c) ((c)->cid.prod_name) |
437 | #define mmc_card_id(c) (dev_name(&(c)->dev)) | 443 | #define mmc_card_id(c) (dev_name(&(c)->dev)) |
438 | 444 | ||
diff --git a/include/linux/mmiotrace.h b/include/linux/mmiotrace.h index 97491f78b08c..c5d52780d6a0 100644 --- a/include/linux/mmiotrace.h +++ b/include/linux/mmiotrace.h | |||
@@ -49,8 +49,7 @@ extern void mmiotrace_ioremap(resource_size_t offset, unsigned long size, | |||
49 | extern void mmiotrace_iounmap(volatile void __iomem *addr); | 49 | extern void mmiotrace_iounmap(volatile void __iomem *addr); |
50 | 50 | ||
51 | /* For anyone to insert markers. Remember trailing newline. */ | 51 | /* For anyone to insert markers. Remember trailing newline. */ |
52 | extern int mmiotrace_printk(const char *fmt, ...) | 52 | extern __printf(1, 2) int mmiotrace_printk(const char *fmt, ...); |
53 | __attribute__ ((format (printf, 1, 2))); | ||
54 | #else /* !CONFIG_MMIOTRACE: */ | 53 | #else /* !CONFIG_MMIOTRACE: */ |
55 | static inline int is_kmmio_active(void) | 54 | static inline int is_kmmio_active(void) |
56 | { | 55 | { |
@@ -71,10 +70,7 @@ static inline void mmiotrace_iounmap(volatile void __iomem *addr) | |||
71 | { | 70 | { |
72 | } | 71 | } |
73 | 72 | ||
74 | static inline int mmiotrace_printk(const char *fmt, ...) | 73 | static inline __printf(1, 2) int mmiotrace_printk(const char *fmt, ...) |
75 | __attribute__ ((format (printf, 1, 0))); | ||
76 | |||
77 | static inline int mmiotrace_printk(const char *fmt, ...) | ||
78 | { | 74 | { |
79 | return 0; | 75 | return 0; |
80 | } | 76 | } |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index be1ac8d7789b..188cb2ffe8db 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -100,6 +100,7 @@ enum zone_stat_item { | |||
100 | NR_UNSTABLE_NFS, /* NFS unstable pages */ | 100 | NR_UNSTABLE_NFS, /* NFS unstable pages */ |
101 | NR_BOUNCE, | 101 | NR_BOUNCE, |
102 | NR_VMSCAN_WRITE, | 102 | NR_VMSCAN_WRITE, |
103 | NR_VMSCAN_IMMEDIATE, /* Prioritise for reclaim when writeback ends */ | ||
103 | NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */ | 104 | NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */ |
104 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ | 105 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ |
105 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ | 106 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ |
@@ -164,6 +165,18 @@ static inline int is_unevictable_lru(enum lru_list l) | |||
164 | #define LRU_ALL_EVICTABLE (LRU_ALL_FILE | LRU_ALL_ANON) | 165 | #define LRU_ALL_EVICTABLE (LRU_ALL_FILE | LRU_ALL_ANON) |
165 | #define LRU_ALL ((1 << NR_LRU_LISTS) - 1) | 166 | #define LRU_ALL ((1 << NR_LRU_LISTS) - 1) |
166 | 167 | ||
168 | /* Isolate inactive pages */ | ||
169 | #define ISOLATE_INACTIVE ((__force isolate_mode_t)0x1) | ||
170 | /* Isolate active pages */ | ||
171 | #define ISOLATE_ACTIVE ((__force isolate_mode_t)0x2) | ||
172 | /* Isolate clean file */ | ||
173 | #define ISOLATE_CLEAN ((__force isolate_mode_t)0x4) | ||
174 | /* Isolate unmapped file */ | ||
175 | #define ISOLATE_UNMAPPED ((__force isolate_mode_t)0x8) | ||
176 | |||
177 | /* LRU Isolation modes. */ | ||
178 | typedef unsigned __bitwise__ isolate_mode_t; | ||
179 | |||
167 | enum zone_watermarks { | 180 | enum zone_watermarks { |
168 | WMARK_MIN, | 181 | WMARK_MIN, |
169 | WMARK_LOW, | 182 | WMARK_LOW, |
diff --git a/include/linux/module.h b/include/linux/module.h index 863921637d9f..3cb7839a60b9 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/kobject.h> | 16 | #include <linux/kobject.h> |
17 | #include <linux/moduleparam.h> | 17 | #include <linux/moduleparam.h> |
18 | #include <linux/tracepoint.h> | 18 | #include <linux/tracepoint.h> |
19 | #include <linux/export.h> | ||
19 | 20 | ||
20 | #include <linux/percpu.h> | 21 | #include <linux/percpu.h> |
21 | #include <asm/module.h> | 22 | #include <asm/module.h> |
@@ -25,21 +26,8 @@ | |||
25 | /* Not Yet Implemented */ | 26 | /* Not Yet Implemented */ |
26 | #define MODULE_SUPPORTED_DEVICE(name) | 27 | #define MODULE_SUPPORTED_DEVICE(name) |
27 | 28 | ||
28 | /* Some toolchains use a `_' prefix for all user symbols. */ | ||
29 | #ifdef CONFIG_SYMBOL_PREFIX | ||
30 | #define MODULE_SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX | ||
31 | #else | ||
32 | #define MODULE_SYMBOL_PREFIX "" | ||
33 | #endif | ||
34 | |||
35 | #define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN | 29 | #define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN |
36 | 30 | ||
37 | struct kernel_symbol | ||
38 | { | ||
39 | unsigned long value; | ||
40 | const char *name; | ||
41 | }; | ||
42 | |||
43 | struct modversion_info | 31 | struct modversion_info |
44 | { | 32 | { |
45 | unsigned long crc; | 33 | unsigned long crc; |
@@ -98,11 +86,8 @@ void trim_init_extable(struct module *m); | |||
98 | extern const struct gtype##_id __mod_##gtype##_table \ | 86 | extern const struct gtype##_id __mod_##gtype##_table \ |
99 | __attribute__ ((unused, alias(__stringify(name)))) | 87 | __attribute__ ((unused, alias(__stringify(name)))) |
100 | 88 | ||
101 | extern struct module __this_module; | ||
102 | #define THIS_MODULE (&__this_module) | ||
103 | #else /* !MODULE */ | 89 | #else /* !MODULE */ |
104 | #define MODULE_GENERIC_TABLE(gtype,name) | 90 | #define MODULE_GENERIC_TABLE(gtype,name) |
105 | #define THIS_MODULE ((struct module *)0) | ||
106 | #endif | 91 | #endif |
107 | 92 | ||
108 | /* Generic info of form tag = "info" */ | 93 | /* Generic info of form tag = "info" */ |
@@ -150,11 +135,6 @@ extern struct module __this_module; | |||
150 | /* What your module does. */ | 135 | /* What your module does. */ |
151 | #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) | 136 | #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) |
152 | 137 | ||
153 | /* One for each parameter, describing how to use it. Some files do | ||
154 | multiple of these per line, so can't just use MODULE_INFO. */ | ||
155 | #define MODULE_PARM_DESC(_parm, desc) \ | ||
156 | __MODULE_INFO(parm, _parm, #_parm ":" desc) | ||
157 | |||
158 | #define MODULE_DEVICE_TABLE(type,name) \ | 138 | #define MODULE_DEVICE_TABLE(type,name) \ |
159 | MODULE_GENERIC_TABLE(type##_device,name) | 139 | MODULE_GENERIC_TABLE(type##_device,name) |
160 | 140 | ||
@@ -218,52 +198,6 @@ struct module_use { | |||
218 | struct module *source, *target; | 198 | struct module *source, *target; |
219 | }; | 199 | }; |
220 | 200 | ||
221 | #ifndef __GENKSYMS__ | ||
222 | #ifdef CONFIG_MODVERSIONS | ||
223 | /* Mark the CRC weak since genksyms apparently decides not to | ||
224 | * generate a checksums for some symbols */ | ||
225 | #define __CRC_SYMBOL(sym, sec) \ | ||
226 | extern void *__crc_##sym __attribute__((weak)); \ | ||
227 | static const unsigned long __kcrctab_##sym \ | ||
228 | __used \ | ||
229 | __attribute__((section("___kcrctab" sec "+" #sym), unused)) \ | ||
230 | = (unsigned long) &__crc_##sym; | ||
231 | #else | ||
232 | #define __CRC_SYMBOL(sym, sec) | ||
233 | #endif | ||
234 | |||
235 | /* For every exported symbol, place a struct in the __ksymtab section */ | ||
236 | #define __EXPORT_SYMBOL(sym, sec) \ | ||
237 | extern typeof(sym) sym; \ | ||
238 | __CRC_SYMBOL(sym, sec) \ | ||
239 | static const char __kstrtab_##sym[] \ | ||
240 | __attribute__((section("__ksymtab_strings"), aligned(1))) \ | ||
241 | = MODULE_SYMBOL_PREFIX #sym; \ | ||
242 | static const struct kernel_symbol __ksymtab_##sym \ | ||
243 | __used \ | ||
244 | __attribute__((section("___ksymtab" sec "+" #sym), unused)) \ | ||
245 | = { (unsigned long)&sym, __kstrtab_##sym } | ||
246 | |||
247 | #define EXPORT_SYMBOL(sym) \ | ||
248 | __EXPORT_SYMBOL(sym, "") | ||
249 | |||
250 | #define EXPORT_SYMBOL_GPL(sym) \ | ||
251 | __EXPORT_SYMBOL(sym, "_gpl") | ||
252 | |||
253 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ | ||
254 | __EXPORT_SYMBOL(sym, "_gpl_future") | ||
255 | |||
256 | |||
257 | #ifdef CONFIG_UNUSED_SYMBOLS | ||
258 | #define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused") | ||
259 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl") | ||
260 | #else | ||
261 | #define EXPORT_UNUSED_SYMBOL(sym) | ||
262 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) | ||
263 | #endif | ||
264 | |||
265 | #endif | ||
266 | |||
267 | enum module_state | 201 | enum module_state |
268 | { | 202 | { |
269 | MODULE_STATE_LIVE, | 203 | MODULE_STATE_LIVE, |
@@ -581,11 +515,6 @@ int unregister_module_notifier(struct notifier_block * nb); | |||
581 | extern void print_modules(void); | 515 | extern void print_modules(void); |
582 | 516 | ||
583 | #else /* !CONFIG_MODULES... */ | 517 | #else /* !CONFIG_MODULES... */ |
584 | #define EXPORT_SYMBOL(sym) | ||
585 | #define EXPORT_SYMBOL_GPL(sym) | ||
586 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) | ||
587 | #define EXPORT_UNUSED_SYMBOL(sym) | ||
588 | #define EXPORT_UNUSED_SYMBOL_GPL(sym) | ||
589 | 518 | ||
590 | /* Given an address, look for it in the exception tables. */ | 519 | /* Given an address, look for it in the exception tables. */ |
591 | static inline const struct exception_table_entry * | 520 | static inline const struct exception_table_entry * |
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index fffb10bd5514..7939f636c8ba 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h | |||
@@ -31,6 +31,11 @@ static const char __module_cat(name,__LINE__)[] \ | |||
31 | #define __MODULE_PARM_TYPE(name, _type) \ | 31 | #define __MODULE_PARM_TYPE(name, _type) \ |
32 | __MODULE_INFO(parmtype, name##type, #name ":" _type) | 32 | __MODULE_INFO(parmtype, name##type, #name ":" _type) |
33 | 33 | ||
34 | /* One for each parameter, describing how to use it. Some files do | ||
35 | multiple of these per line, so can't just use MODULE_INFO. */ | ||
36 | #define MODULE_PARM_DESC(_parm, desc) \ | ||
37 | __MODULE_INFO(parm, _parm, #_parm ":" desc) | ||
38 | |||
34 | struct kernel_param; | 39 | struct kernel_param; |
35 | 40 | ||
36 | struct kernel_param_ops { | 41 | struct kernel_param_ops { |
diff --git a/include/linux/mtd/bbm.h b/include/linux/mtd/bbm.h index 57cc0e63714f..c4eec228eef9 100644 --- a/include/linux/mtd/bbm.h +++ b/include/linux/mtd/bbm.h | |||
@@ -86,24 +86,39 @@ struct nand_bbt_descr { | |||
86 | #define NAND_BBT_VERSION 0x00000100 | 86 | #define NAND_BBT_VERSION 0x00000100 |
87 | /* Create a bbt if none exists */ | 87 | /* Create a bbt if none exists */ |
88 | #define NAND_BBT_CREATE 0x00000200 | 88 | #define NAND_BBT_CREATE 0x00000200 |
89 | /* | ||
90 | * Create an empty BBT with no vendor information. Vendor's information may be | ||
91 | * unavailable, for example, if the NAND controller has a different data and OOB | ||
92 | * layout or if this information is already purged. Must be used in conjunction | ||
93 | * with NAND_BBT_CREATE. | ||
94 | */ | ||
95 | #define NAND_BBT_CREATE_EMPTY 0x00000400 | ||
89 | /* Search good / bad pattern through all pages of a block */ | 96 | /* Search good / bad pattern through all pages of a block */ |
90 | #define NAND_BBT_SCANALLPAGES 0x00000400 | 97 | #define NAND_BBT_SCANALLPAGES 0x00000800 |
91 | /* Scan block empty during good / bad block scan */ | 98 | /* Scan block empty during good / bad block scan */ |
92 | #define NAND_BBT_SCANEMPTY 0x00000800 | 99 | #define NAND_BBT_SCANEMPTY 0x00001000 |
93 | /* Write bbt if neccecary */ | 100 | /* Write bbt if neccecary */ |
94 | #define NAND_BBT_WRITE 0x00001000 | 101 | #define NAND_BBT_WRITE 0x00002000 |
95 | /* Read and write back block contents when writing bbt */ | 102 | /* Read and write back block contents when writing bbt */ |
96 | #define NAND_BBT_SAVECONTENT 0x00002000 | 103 | #define NAND_BBT_SAVECONTENT 0x00004000 |
97 | /* Search good / bad pattern on the first and the second page */ | 104 | /* Search good / bad pattern on the first and the second page */ |
98 | #define NAND_BBT_SCAN2NDPAGE 0x00004000 | 105 | #define NAND_BBT_SCAN2NDPAGE 0x00008000 |
99 | /* Search good / bad pattern on the last page of the eraseblock */ | 106 | /* Search good / bad pattern on the last page of the eraseblock */ |
100 | #define NAND_BBT_SCANLASTPAGE 0x00008000 | 107 | #define NAND_BBT_SCANLASTPAGE 0x00010000 |
101 | /* Chip stores bad block marker on BOTH 1st and 6th bytes of OOB */ | 108 | /* |
102 | #define NAND_BBT_SCANBYTE1AND6 0x00100000 | 109 | * Use a flash based bad block table. By default, OOB identifier is saved in |
103 | /* The nand_bbt_descr was created dynamicaly and must be freed */ | 110 | * OOB area. This option is passed to the default bad block table function. |
104 | #define NAND_BBT_DYNAMICSTRUCT 0x00200000 | 111 | */ |
105 | /* The bad block table does not OOB for marker */ | 112 | #define NAND_BBT_USE_FLASH 0x00020000 |
106 | #define NAND_BBT_NO_OOB 0x00400000 | 113 | /* Do not store flash based bad block table in OOB area; store it in-band */ |
114 | #define NAND_BBT_NO_OOB 0x00040000 | ||
115 | |||
116 | /* | ||
117 | * Flag set by nand_create_default_bbt_descr(), marking that the nand_bbt_descr | ||
118 | * was allocated dynamicaly and must be freed in nand_release(). Has no meaning | ||
119 | * in nand_chip.bbt_options. | ||
120 | */ | ||
121 | #define NAND_BBT_DYNAMICSTRUCT 0x80000000 | ||
107 | 122 | ||
108 | /* The maximum number of blocks to scan for a bbt */ | 123 | /* The maximum number of blocks to scan for a bbt */ |
109 | #define NAND_BBT_SCAN_MAXBLOCKS 4 | 124 | #define NAND_BBT_SCAN_MAXBLOCKS 4 |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 2541fb848daa..9f5b312af783 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -21,7 +21,6 @@ | |||
21 | #define __MTD_MTD_H__ | 21 | #define __MTD_MTD_H__ |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/module.h> | ||
25 | #include <linux/uio.h> | 24 | #include <linux/uio.h> |
26 | #include <linux/notifier.h> | 25 | #include <linux/notifier.h> |
27 | #include <linux/device.h> | 26 | #include <linux/device.h> |
@@ -33,17 +32,19 @@ | |||
33 | #define MTD_CHAR_MAJOR 90 | 32 | #define MTD_CHAR_MAJOR 90 |
34 | #define MTD_BLOCK_MAJOR 31 | 33 | #define MTD_BLOCK_MAJOR 31 |
35 | 34 | ||
36 | #define MTD_ERASE_PENDING 0x01 | 35 | #define MTD_ERASE_PENDING 0x01 |
37 | #define MTD_ERASING 0x02 | 36 | #define MTD_ERASING 0x02 |
38 | #define MTD_ERASE_SUSPEND 0x04 | 37 | #define MTD_ERASE_SUSPEND 0x04 |
39 | #define MTD_ERASE_DONE 0x08 | 38 | #define MTD_ERASE_DONE 0x08 |
40 | #define MTD_ERASE_FAILED 0x10 | 39 | #define MTD_ERASE_FAILED 0x10 |
41 | 40 | ||
42 | #define MTD_FAIL_ADDR_UNKNOWN -1LL | 41 | #define MTD_FAIL_ADDR_UNKNOWN -1LL |
43 | 42 | ||
44 | /* If the erase fails, fail_addr might indicate exactly which block failed. If | 43 | /* |
45 | fail_addr = MTD_FAIL_ADDR_UNKNOWN, the failure was not at the device level or was not | 44 | * If the erase fails, fail_addr might indicate exactly which block failed. If |
46 | specific to any particular block. */ | 45 | * fail_addr = MTD_FAIL_ADDR_UNKNOWN, the failure was not at the device level |
46 | * or was not specific to any particular block. | ||
47 | */ | ||
47 | struct erase_info { | 48 | struct erase_info { |
48 | struct mtd_info *mtd; | 49 | struct mtd_info *mtd; |
49 | uint64_t addr; | 50 | uint64_t addr; |
@@ -60,26 +61,12 @@ struct erase_info { | |||
60 | }; | 61 | }; |
61 | 62 | ||
62 | struct mtd_erase_region_info { | 63 | struct mtd_erase_region_info { |
63 | uint64_t offset; /* At which this region starts, from the beginning of the MTD */ | 64 | uint64_t offset; /* At which this region starts, from the beginning of the MTD */ |
64 | uint32_t erasesize; /* For this region */ | 65 | uint32_t erasesize; /* For this region */ |
65 | uint32_t numblocks; /* Number of blocks of erasesize in this region */ | 66 | uint32_t numblocks; /* Number of blocks of erasesize in this region */ |
66 | unsigned long *lockmap; /* If keeping bitmap of locks */ | 67 | unsigned long *lockmap; /* If keeping bitmap of locks */ |
67 | }; | 68 | }; |
68 | 69 | ||
69 | /* | ||
70 | * oob operation modes | ||
71 | * | ||
72 | * MTD_OOB_PLACE: oob data are placed at the given offset | ||
73 | * MTD_OOB_AUTO: oob data are automatically placed at the free areas | ||
74 | * which are defined by the ecclayout | ||
75 | * MTD_OOB_RAW: mode to read oob and data without doing ECC checking | ||
76 | */ | ||
77 | typedef enum { | ||
78 | MTD_OOB_PLACE, | ||
79 | MTD_OOB_AUTO, | ||
80 | MTD_OOB_RAW, | ||
81 | } mtd_oob_mode_t; | ||
82 | |||
83 | /** | 70 | /** |
84 | * struct mtd_oob_ops - oob operation operands | 71 | * struct mtd_oob_ops - oob operation operands |
85 | * @mode: operation mode | 72 | * @mode: operation mode |
@@ -91,7 +78,7 @@ typedef enum { | |||
91 | * @ooblen: number of oob bytes to write/read | 78 | * @ooblen: number of oob bytes to write/read |
92 | * @oobretlen: number of oob bytes written/read | 79 | * @oobretlen: number of oob bytes written/read |
93 | * @ooboffs: offset of oob data in the oob area (only relevant when | 80 | * @ooboffs: offset of oob data in the oob area (only relevant when |
94 | * mode = MTD_OOB_PLACE) | 81 | * mode = MTD_OPS_PLACE_OOB or MTD_OPS_RAW) |
95 | * @datbuf: data buffer - if NULL only oob data are read/written | 82 | * @datbuf: data buffer - if NULL only oob data are read/written |
96 | * @oobbuf: oob data buffer | 83 | * @oobbuf: oob data buffer |
97 | * | 84 | * |
@@ -100,7 +87,7 @@ typedef enum { | |||
100 | * OOB area. | 87 | * OOB area. |
101 | */ | 88 | */ |
102 | struct mtd_oob_ops { | 89 | struct mtd_oob_ops { |
103 | mtd_oob_mode_t mode; | 90 | unsigned int mode; |
104 | size_t len; | 91 | size_t len; |
105 | size_t retlen; | 92 | size_t retlen; |
106 | size_t ooblen; | 93 | size_t ooblen; |
@@ -125,6 +112,8 @@ struct nand_ecclayout { | |||
125 | struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES_LARGE]; | 112 | struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES_LARGE]; |
126 | }; | 113 | }; |
127 | 114 | ||
115 | struct module; /* only needed for owner field in mtd_info */ | ||
116 | |||
128 | struct mtd_info { | 117 | struct mtd_info { |
129 | u_char type; | 118 | u_char type; |
130 | uint32_t flags; | 119 | uint32_t flags; |
@@ -172,7 +161,7 @@ struct mtd_info { | |||
172 | const char *name; | 161 | const char *name; |
173 | int index; | 162 | int index; |
174 | 163 | ||
175 | /* ecc layout structure pointer - read only ! */ | 164 | /* ECC layout structure pointer - read only! */ |
176 | struct nand_ecclayout *ecclayout; | 165 | struct nand_ecclayout *ecclayout; |
177 | 166 | ||
178 | /* Data for variable erase regions. If numeraseregions is zero, | 167 | /* Data for variable erase regions. If numeraseregions is zero, |
@@ -323,10 +312,15 @@ static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd) | |||
323 | /* Kernel-side ioctl definitions */ | 312 | /* Kernel-side ioctl definitions */ |
324 | 313 | ||
325 | struct mtd_partition; | 314 | struct mtd_partition; |
326 | 315 | struct mtd_part_parser_data; | |
327 | extern int mtd_device_register(struct mtd_info *master, | 316 | |
328 | const struct mtd_partition *parts, | 317 | extern int mtd_device_parse_register(struct mtd_info *mtd, |
329 | int nr_parts); | 318 | const char **part_probe_types, |
319 | struct mtd_part_parser_data *parser_data, | ||
320 | const struct mtd_partition *defparts, | ||
321 | int defnr_parts); | ||
322 | #define mtd_device_register(master, parts, nr_parts) \ | ||
323 | mtd_device_parse_register(master, NULL, NULL, parts, nr_parts) | ||
330 | extern int mtd_device_unregister(struct mtd_info *master); | 324 | extern int mtd_device_unregister(struct mtd_info *master); |
331 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); | 325 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); |
332 | extern int __get_mtd_device(struct mtd_info *mtd); | 326 | extern int __get_mtd_device(struct mtd_info *mtd); |
@@ -355,27 +349,16 @@ void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size); | |||
355 | 349 | ||
356 | void mtd_erase_callback(struct erase_info *instr); | 350 | void mtd_erase_callback(struct erase_info *instr); |
357 | 351 | ||
358 | /* | 352 | static inline int mtd_is_bitflip(int err) { |
359 | * Debugging macro and defines | 353 | return err == -EUCLEAN; |
360 | */ | 354 | } |
361 | #define MTD_DEBUG_LEVEL0 (0) /* Quiet */ | 355 | |
362 | #define MTD_DEBUG_LEVEL1 (1) /* Audible */ | 356 | static inline int mtd_is_eccerr(int err) { |
363 | #define MTD_DEBUG_LEVEL2 (2) /* Loud */ | 357 | return err == -EBADMSG; |
364 | #define MTD_DEBUG_LEVEL3 (3) /* Noisy */ | 358 | } |
365 | 359 | ||
366 | #ifdef CONFIG_MTD_DEBUG | 360 | static inline int mtd_is_bitflip_or_eccerr(int err) { |
367 | #define DEBUG(n, args...) \ | 361 | return mtd_is_bitflip(err) || mtd_is_eccerr(err); |
368 | do { \ | 362 | } |
369 | if (n <= CONFIG_MTD_DEBUG_VERBOSE) \ | ||
370 | printk(KERN_INFO args); \ | ||
371 | } while(0) | ||
372 | #else /* CONFIG_MTD_DEBUG */ | ||
373 | #define DEBUG(n, args...) \ | ||
374 | do { \ | ||
375 | if (0) \ | ||
376 | printk(KERN_INFO args); \ | ||
377 | } while(0) | ||
378 | |||
379 | #endif /* CONFIG_MTD_DEBUG */ | ||
380 | 363 | ||
381 | #endif /* __MTD_MTD_H__ */ | 364 | #endif /* __MTD_MTD_H__ */ |
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index c2b9ac4fbc4a..904131bab501 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
@@ -42,10 +42,10 @@ extern void nand_release(struct mtd_info *mtd); | |||
42 | /* Internal helper for board drivers which need to override command function */ | 42 | /* Internal helper for board drivers which need to override command function */ |
43 | extern void nand_wait_ready(struct mtd_info *mtd); | 43 | extern void nand_wait_ready(struct mtd_info *mtd); |
44 | 44 | ||
45 | /* locks all blockes present in the device */ | 45 | /* locks all blocks present in the device */ |
46 | extern int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len); | 46 | extern int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len); |
47 | 47 | ||
48 | /* unlocks specified locked blockes */ | 48 | /* unlocks specified locked blocks */ |
49 | extern int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len); | 49 | extern int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len); |
50 | 50 | ||
51 | /* The maximum number of NAND chips in an array */ | 51 | /* The maximum number of NAND chips in an array */ |
@@ -150,7 +150,7 @@ typedef enum { | |||
150 | #define NAND_ECC_READ 0 | 150 | #define NAND_ECC_READ 0 |
151 | /* Reset Hardware ECC for write */ | 151 | /* Reset Hardware ECC for write */ |
152 | #define NAND_ECC_WRITE 1 | 152 | #define NAND_ECC_WRITE 1 |
153 | /* Enable Hardware ECC before syndrom is read back from flash */ | 153 | /* Enable Hardware ECC before syndrome is read back from flash */ |
154 | #define NAND_ECC_READSYN 2 | 154 | #define NAND_ECC_READSYN 2 |
155 | 155 | ||
156 | /* Bit mask for flags passed to do_nand_read_ecc */ | 156 | /* Bit mask for flags passed to do_nand_read_ecc */ |
@@ -163,7 +163,7 @@ typedef enum { | |||
163 | */ | 163 | */ |
164 | /* Chip can not auto increment pages */ | 164 | /* Chip can not auto increment pages */ |
165 | #define NAND_NO_AUTOINCR 0x00000001 | 165 | #define NAND_NO_AUTOINCR 0x00000001 |
166 | /* Buswitdh is 16 bit */ | 166 | /* Buswidth is 16 bit */ |
167 | #define NAND_BUSWIDTH_16 0x00000002 | 167 | #define NAND_BUSWIDTH_16 0x00000002 |
168 | /* Device supports partial programming without padding */ | 168 | /* Device supports partial programming without padding */ |
169 | #define NAND_NO_PADDING 0x00000004 | 169 | #define NAND_NO_PADDING 0x00000004 |
@@ -219,27 +219,15 @@ typedef enum { | |||
219 | #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR) | 219 | #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR) |
220 | 220 | ||
221 | /* Non chip related options */ | 221 | /* Non chip related options */ |
222 | /* | ||
223 | * Use a flash based bad block table. OOB identifier is saved in OOB area. | ||
224 | * This option is passed to the default bad block table function. | ||
225 | */ | ||
226 | #define NAND_USE_FLASH_BBT 0x00010000 | ||
227 | /* This option skips the bbt scan during initialization. */ | 222 | /* This option skips the bbt scan during initialization. */ |
228 | #define NAND_SKIP_BBTSCAN 0x00020000 | 223 | #define NAND_SKIP_BBTSCAN 0x00010000 |
229 | /* | 224 | /* |
230 | * This option is defined if the board driver allocates its own buffers | 225 | * This option is defined if the board driver allocates its own buffers |
231 | * (e.g. because it needs them DMA-coherent). | 226 | * (e.g. because it needs them DMA-coherent). |
232 | */ | 227 | */ |
233 | #define NAND_OWN_BUFFERS 0x00040000 | 228 | #define NAND_OWN_BUFFERS 0x00020000 |
234 | /* Chip may not exist, so silence any errors in scan */ | 229 | /* Chip may not exist, so silence any errors in scan */ |
235 | #define NAND_SCAN_SILENT_NODEV 0x00080000 | 230 | #define NAND_SCAN_SILENT_NODEV 0x00040000 |
236 | /* | ||
237 | * If passed additionally to NAND_USE_FLASH_BBT then BBT code will not touch | ||
238 | * the OOB area. | ||
239 | */ | ||
240 | #define NAND_USE_FLASH_BBT_NO_OOB 0x00800000 | ||
241 | /* Create an empty BBT with no vendor information if the BBT is available */ | ||
242 | #define NAND_CREATE_EMPTY_BBT 0x01000000 | ||
243 | 231 | ||
244 | /* Options set by nand scan */ | 232 | /* Options set by nand scan */ |
245 | /* Nand scan has allocated controller struct */ | 233 | /* Nand scan has allocated controller struct */ |
@@ -331,27 +319,29 @@ struct nand_hw_control { | |||
331 | }; | 319 | }; |
332 | 320 | ||
333 | /** | 321 | /** |
334 | * struct nand_ecc_ctrl - Control structure for ecc | 322 | * struct nand_ecc_ctrl - Control structure for ECC |
335 | * @mode: ecc mode | 323 | * @mode: ECC mode |
336 | * @steps: number of ecc steps per page | 324 | * @steps: number of ECC steps per page |
337 | * @size: data bytes per ecc step | 325 | * @size: data bytes per ECC step |
338 | * @bytes: ecc bytes per step | 326 | * @bytes: ECC bytes per step |
339 | * @total: total number of ecc bytes per page | 327 | * @total: total number of ECC bytes per page |
340 | * @prepad: padding information for syndrome based ecc generators | 328 | * @prepad: padding information for syndrome based ECC generators |
341 | * @postpad: padding information for syndrome based ecc generators | 329 | * @postpad: padding information for syndrome based ECC generators |
342 | * @layout: ECC layout control struct pointer | 330 | * @layout: ECC layout control struct pointer |
343 | * @priv: pointer to private ecc control data | 331 | * @priv: pointer to private ECC control data |
344 | * @hwctl: function to control hardware ecc generator. Must only | 332 | * @hwctl: function to control hardware ECC generator. Must only |
345 | * be provided if an hardware ECC is available | 333 | * be provided if an hardware ECC is available |
346 | * @calculate: function for ecc calculation or readback from ecc hardware | 334 | * @calculate: function for ECC calculation or readback from ECC hardware |
347 | * @correct: function for ecc correction, matching to ecc generator (sw/hw) | 335 | * @correct: function for ECC correction, matching to ECC generator (sw/hw) |
348 | * @read_page_raw: function to read a raw page without ECC | 336 | * @read_page_raw: function to read a raw page without ECC |
349 | * @write_page_raw: function to write a raw page without ECC | 337 | * @write_page_raw: function to write a raw page without ECC |
350 | * @read_page: function to read a page according to the ecc generator | 338 | * @read_page: function to read a page according to the ECC generator |
351 | * requirements. | 339 | * requirements. |
352 | * @read_subpage: function to read parts of the page covered by ECC. | 340 | * @read_subpage: function to read parts of the page covered by ECC. |
353 | * @write_page: function to write a page according to the ecc generator | 341 | * @write_page: function to write a page according to the ECC generator |
354 | * requirements. | 342 | * requirements. |
343 | * @write_oob_raw: function to write chip OOB data without ECC | ||
344 | * @read_oob_raw: function to read chip OOB data without ECC | ||
355 | * @read_oob: function to read chip OOB data | 345 | * @read_oob: function to read chip OOB data |
356 | * @write_oob: function to write chip OOB data | 346 | * @write_oob: function to write chip OOB data |
357 | */ | 347 | */ |
@@ -380,6 +370,10 @@ struct nand_ecc_ctrl { | |||
380 | uint32_t offs, uint32_t len, uint8_t *buf); | 370 | uint32_t offs, uint32_t len, uint8_t *buf); |
381 | void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, | 371 | void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, |
382 | const uint8_t *buf); | 372 | const uint8_t *buf); |
373 | int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, | ||
374 | int page); | ||
375 | int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, | ||
376 | int page, int sndcmd); | ||
383 | int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page, | 377 | int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page, |
384 | int sndcmd); | 378 | int sndcmd); |
385 | int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip, | 379 | int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip, |
@@ -388,8 +382,8 @@ struct nand_ecc_ctrl { | |||
388 | 382 | ||
389 | /** | 383 | /** |
390 | * struct nand_buffers - buffer structure for read/write | 384 | * struct nand_buffers - buffer structure for read/write |
391 | * @ecccalc: buffer for calculated ecc | 385 | * @ecccalc: buffer for calculated ECC |
392 | * @ecccode: buffer for ecc read from flash | 386 | * @ecccode: buffer for ECC read from flash |
393 | * @databuf: buffer for data - dynamically sized | 387 | * @databuf: buffer for data - dynamically sized |
394 | * | 388 | * |
395 | * Do not change the order of buffers. databuf and oobrbuf must be in | 389 | * Do not change the order of buffers. databuf and oobrbuf must be in |
@@ -422,7 +416,7 @@ struct nand_buffers { | |||
422 | * mtd->oobsize, mtd->writesize and so on. | 416 | * mtd->oobsize, mtd->writesize and so on. |
423 | * @id_data contains the 8 bytes values of NAND_CMD_READID. | 417 | * @id_data contains the 8 bytes values of NAND_CMD_READID. |
424 | * Return with the bus width. | 418 | * Return with the bus width. |
425 | * @dev_ready: [BOARDSPECIFIC] hardwarespecific function for accesing | 419 | * @dev_ready: [BOARDSPECIFIC] hardwarespecific function for accessing |
426 | * device ready/busy line. If set to NULL no access to | 420 | * device ready/busy line. If set to NULL no access to |
427 | * ready/busy is available and the ready/busy information | 421 | * ready/busy is available and the ready/busy information |
428 | * is read from the chip status register. | 422 | * is read from the chip status register. |
@@ -430,17 +424,17 @@ struct nand_buffers { | |||
430 | * commands to the chip. | 424 | * commands to the chip. |
431 | * @waitfunc: [REPLACEABLE] hardwarespecific function for wait on | 425 | * @waitfunc: [REPLACEABLE] hardwarespecific function for wait on |
432 | * ready. | 426 | * ready. |
433 | * @ecc: [BOARDSPECIFIC] ecc control ctructure | 427 | * @ecc: [BOARDSPECIFIC] ECC control structure |
434 | * @buffers: buffer structure for read/write | 428 | * @buffers: buffer structure for read/write |
435 | * @hwcontrol: platform-specific hardware control structure | 429 | * @hwcontrol: platform-specific hardware control structure |
436 | * @ops: oob operation operands | ||
437 | * @erase_cmd: [INTERN] erase command write function, selectable due | 430 | * @erase_cmd: [INTERN] erase command write function, selectable due |
438 | * to AND support. | 431 | * to AND support. |
439 | * @scan_bbt: [REPLACEABLE] function to scan bad block table | 432 | * @scan_bbt: [REPLACEABLE] function to scan bad block table |
440 | * @chip_delay: [BOARDSPECIFIC] chip dependent delay for transferring | 433 | * @chip_delay: [BOARDSPECIFIC] chip dependent delay for transferring |
441 | * data from array to read regs (tR). | 434 | * data from array to read regs (tR). |
442 | * @state: [INTERN] the current state of the NAND device | 435 | * @state: [INTERN] the current state of the NAND device |
443 | * @oob_poi: poison value buffer | 436 | * @oob_poi: "poison value buffer," used for laying out OOB data |
437 | * before writing | ||
444 | * @page_shift: [INTERN] number of address bits in a page (column | 438 | * @page_shift: [INTERN] number of address bits in a page (column |
445 | * address bits). | 439 | * address bits). |
446 | * @phys_erase_shift: [INTERN] number of address bits in a physical eraseblock | 440 | * @phys_erase_shift: [INTERN] number of address bits in a physical eraseblock |
@@ -449,6 +443,9 @@ struct nand_buffers { | |||
449 | * @options: [BOARDSPECIFIC] various chip options. They can partly | 443 | * @options: [BOARDSPECIFIC] various chip options. They can partly |
450 | * be set to inform nand_scan about special functionality. | 444 | * be set to inform nand_scan about special functionality. |
451 | * See the defines for further explanation. | 445 | * See the defines for further explanation. |
446 | * @bbt_options: [INTERN] bad block specific options. All options used | ||
447 | * here must come from bbm.h. By default, these options | ||
448 | * will be copied to the appropriate nand_bbt_descr's. | ||
452 | * @badblockpos: [INTERN] position of the bad block marker in the oob | 449 | * @badblockpos: [INTERN] position of the bad block marker in the oob |
453 | * area. | 450 | * area. |
454 | * @badblockbits: [INTERN] number of bits to left-shift the bad block | 451 | * @badblockbits: [INTERN] number of bits to left-shift the bad block |
@@ -464,7 +461,7 @@ struct nand_buffers { | |||
464 | * non 0 if ONFI supported. | 461 | * non 0 if ONFI supported. |
465 | * @onfi_params: [INTERN] holds the ONFI page parameter when ONFI is | 462 | * @onfi_params: [INTERN] holds the ONFI page parameter when ONFI is |
466 | * supported, 0 otherwise. | 463 | * supported, 0 otherwise. |
467 | * @ecclayout: [REPLACEABLE] the default ecc placement scheme | 464 | * @ecclayout: [REPLACEABLE] the default ECC placement scheme |
468 | * @bbt: [INTERN] bad block table pointer | 465 | * @bbt: [INTERN] bad block table pointer |
469 | * @bbt_td: [REPLACEABLE] bad block table descriptor for flash | 466 | * @bbt_td: [REPLACEABLE] bad block table descriptor for flash |
470 | * lookup. | 467 | * lookup. |
@@ -472,9 +469,9 @@ struct nand_buffers { | |||
472 | * @badblock_pattern: [REPLACEABLE] bad block scan pattern used for initial | 469 | * @badblock_pattern: [REPLACEABLE] bad block scan pattern used for initial |
473 | * bad block scan. | 470 | * bad block scan. |
474 | * @controller: [REPLACEABLE] a pointer to a hardware controller | 471 | * @controller: [REPLACEABLE] a pointer to a hardware controller |
475 | * structure which is shared among multiple independend | 472 | * structure which is shared among multiple independent |
476 | * devices. | 473 | * devices. |
477 | * @priv: [OPTIONAL] pointer to private chip date | 474 | * @priv: [OPTIONAL] pointer to private chip data |
478 | * @errstat: [OPTIONAL] hardware specific function to perform | 475 | * @errstat: [OPTIONAL] hardware specific function to perform |
479 | * additional error status checks (determine if errors are | 476 | * additional error status checks (determine if errors are |
480 | * correctable). | 477 | * correctable). |
@@ -509,6 +506,7 @@ struct nand_chip { | |||
509 | 506 | ||
510 | int chip_delay; | 507 | int chip_delay; |
511 | unsigned int options; | 508 | unsigned int options; |
509 | unsigned int bbt_options; | ||
512 | 510 | ||
513 | int page_shift; | 511 | int page_shift; |
514 | int phys_erase_shift; | 512 | int phys_erase_shift; |
@@ -536,8 +534,6 @@ struct nand_chip { | |||
536 | struct nand_buffers *buffers; | 534 | struct nand_buffers *buffers; |
537 | struct nand_hw_control hwcontrol; | 535 | struct nand_hw_control hwcontrol; |
538 | 536 | ||
539 | struct mtd_oob_ops ops; | ||
540 | |||
541 | uint8_t *bbt; | 537 | uint8_t *bbt; |
542 | struct nand_bbt_descr *bbt_td; | 538 | struct nand_bbt_descr *bbt_td; |
543 | struct nand_bbt_descr *bbt_md; | 539 | struct nand_bbt_descr *bbt_md; |
@@ -611,10 +607,9 @@ extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
611 | * @partitions: mtd partition list | 607 | * @partitions: mtd partition list |
612 | * @chip_delay: R/B delay value in us | 608 | * @chip_delay: R/B delay value in us |
613 | * @options: Option flags, e.g. 16bit buswidth | 609 | * @options: Option flags, e.g. 16bit buswidth |
614 | * @ecclayout: ecc layout info structure | 610 | * @bbt_options: BBT option flags, e.g. NAND_BBT_USE_FLASH |
611 | * @ecclayout: ECC layout info structure | ||
615 | * @part_probe_types: NULL-terminated array of probe types | 612 | * @part_probe_types: NULL-terminated array of probe types |
616 | * @set_parts: platform specific function to set partitions | ||
617 | * @priv: hardware controller specific settings | ||
618 | */ | 613 | */ |
619 | struct platform_nand_chip { | 614 | struct platform_nand_chip { |
620 | int nr_chips; | 615 | int nr_chips; |
@@ -624,9 +619,8 @@ struct platform_nand_chip { | |||
624 | struct nand_ecclayout *ecclayout; | 619 | struct nand_ecclayout *ecclayout; |
625 | int chip_delay; | 620 | int chip_delay; |
626 | unsigned int options; | 621 | unsigned int options; |
622 | unsigned int bbt_options; | ||
627 | const char **part_probe_types; | 623 | const char **part_probe_types; |
628 | void (*set_parts)(uint64_t size, struct platform_nand_chip *chip); | ||
629 | void *priv; | ||
630 | }; | 624 | }; |
631 | 625 | ||
632 | /* Keep gcc happy */ | 626 | /* Keep gcc happy */ |
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h index 52b6f187bf49..4596503c9da9 100644 --- a/include/linux/mtd/onenand.h +++ b/include/linux/mtd/onenand.h | |||
@@ -184,6 +184,9 @@ struct onenand_chip { | |||
184 | #define ONENAND_IS_CACHE_PROGRAM(this) \ | 184 | #define ONENAND_IS_CACHE_PROGRAM(this) \ |
185 | (this->options & ONENAND_HAS_CACHE_PROGRAM) | 185 | (this->options & ONENAND_HAS_CACHE_PROGRAM) |
186 | 186 | ||
187 | #define ONENAND_IS_NOP_1(this) \ | ||
188 | (this->options & ONENAND_HAS_NOP_1) | ||
189 | |||
187 | /* Check byte access in OneNAND */ | 190 | /* Check byte access in OneNAND */ |
188 | #define ONENAND_CHECK_BYTE_ACCESS(addr) (addr & 0x1) | 191 | #define ONENAND_CHECK_BYTE_ACCESS(addr) (addr & 0x1) |
189 | 192 | ||
@@ -195,6 +198,7 @@ struct onenand_chip { | |||
195 | #define ONENAND_HAS_2PLANE (0x0004) | 198 | #define ONENAND_HAS_2PLANE (0x0004) |
196 | #define ONENAND_HAS_4KB_PAGE (0x0008) | 199 | #define ONENAND_HAS_4KB_PAGE (0x0008) |
197 | #define ONENAND_HAS_CACHE_PROGRAM (0x0010) | 200 | #define ONENAND_HAS_CACHE_PROGRAM (0x0010) |
201 | #define ONENAND_HAS_NOP_1 (0x0020) | ||
198 | #define ONENAND_SKIP_UNLOCK_CHECK (0x0100) | 202 | #define ONENAND_SKIP_UNLOCK_CHECK (0x0100) |
199 | #define ONENAND_PAGEBUF_ALLOC (0x1000) | 203 | #define ONENAND_PAGEBUF_ALLOC (0x1000) |
200 | #define ONENAND_OOBBUF_ALLOC (0x2000) | 204 | #define ONENAND_OOBBUF_ALLOC (0x2000) |
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index 3a6f0372fc96..2475228c1158 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
@@ -24,7 +24,9 @@ | |||
24 | * will extend to the end of the master MTD device. | 24 | * will extend to the end of the master MTD device. |
25 | * offset: absolute starting position within the master MTD device; if | 25 | * offset: absolute starting position within the master MTD device; if |
26 | * defined as MTDPART_OFS_APPEND, the partition will start where the | 26 | * defined as MTDPART_OFS_APPEND, the partition will start where the |
27 | * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block. | 27 | * previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block; |
28 | * if MTDPART_OFS_RETAIN, consume as much as possible, leaving size | ||
29 | * after the end of partition. | ||
28 | * mask_flags: contains flags that have to be masked (removed) from the | 30 | * mask_flags: contains flags that have to be masked (removed) from the |
29 | * master MTD flag set for the corresponding MTD partition. | 31 | * master MTD flag set for the corresponding MTD partition. |
30 | * For example, to force a read-only partition, simply adding | 32 | * For example, to force a read-only partition, simply adding |
@@ -42,12 +44,25 @@ struct mtd_partition { | |||
42 | struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only) */ | 44 | struct nand_ecclayout *ecclayout; /* out of band layout for this partition (NAND only) */ |
43 | }; | 45 | }; |
44 | 46 | ||
47 | #define MTDPART_OFS_RETAIN (-3) | ||
45 | #define MTDPART_OFS_NXTBLK (-2) | 48 | #define MTDPART_OFS_NXTBLK (-2) |
46 | #define MTDPART_OFS_APPEND (-1) | 49 | #define MTDPART_OFS_APPEND (-1) |
47 | #define MTDPART_SIZ_FULL (0) | 50 | #define MTDPART_SIZ_FULL (0) |
48 | 51 | ||
49 | 52 | ||
50 | struct mtd_info; | 53 | struct mtd_info; |
54 | struct device_node; | ||
55 | |||
56 | /** | ||
57 | * struct mtd_part_parser_data - used to pass data to MTD partition parsers. | ||
58 | * @origin: for RedBoot, start address of MTD device | ||
59 | * @of_node: for OF parsers, device node containing partitioning information | ||
60 | */ | ||
61 | struct mtd_part_parser_data { | ||
62 | unsigned long origin; | ||
63 | struct device_node *of_node; | ||
64 | }; | ||
65 | |||
51 | 66 | ||
52 | /* | 67 | /* |
53 | * Functions dealing with the various ways of partitioning the space | 68 | * Functions dealing with the various ways of partitioning the space |
@@ -57,37 +72,12 @@ struct mtd_part_parser { | |||
57 | struct list_head list; | 72 | struct list_head list; |
58 | struct module *owner; | 73 | struct module *owner; |
59 | const char *name; | 74 | const char *name; |
60 | int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long); | 75 | int (*parse_fn)(struct mtd_info *, struct mtd_partition **, |
76 | struct mtd_part_parser_data *); | ||
61 | }; | 77 | }; |
62 | 78 | ||
63 | extern int register_mtd_parser(struct mtd_part_parser *parser); | 79 | extern int register_mtd_parser(struct mtd_part_parser *parser); |
64 | extern int deregister_mtd_parser(struct mtd_part_parser *parser); | 80 | extern int deregister_mtd_parser(struct mtd_part_parser *parser); |
65 | extern int parse_mtd_partitions(struct mtd_info *master, const char **types, | ||
66 | struct mtd_partition **pparts, unsigned long origin); | ||
67 | |||
68 | #define put_partition_parser(p) do { module_put((p)->owner); } while(0) | ||
69 | |||
70 | struct device; | ||
71 | struct device_node; | ||
72 | |||
73 | #ifdef CONFIG_MTD_OF_PARTS | ||
74 | int __devinit of_mtd_parse_partitions(struct device *dev, | ||
75 | struct device_node *node, | ||
76 | struct mtd_partition **pparts); | ||
77 | #else | ||
78 | static inline int of_mtd_parse_partitions(struct device *dev, | ||
79 | struct device_node *node, | ||
80 | struct mtd_partition **pparts) | ||
81 | { | ||
82 | return 0; | ||
83 | } | ||
84 | #endif | ||
85 | |||
86 | #ifdef CONFIG_MTD_CMDLINE_PARTS | ||
87 | static inline int mtd_has_cmdlinepart(void) { return 1; } | ||
88 | #else | ||
89 | static inline int mtd_has_cmdlinepart(void) { return 0; } | ||
90 | #endif | ||
91 | 81 | ||
92 | int mtd_is_partition(struct mtd_info *mtd); | 82 | int mtd_is_partition(struct mtd_info *mtd); |
93 | int mtd_add_partition(struct mtd_info *master, char *name, | 83 | int mtd_add_partition(struct mtd_info *master, char *name, |
diff --git a/include/linux/mtd/physmap.h b/include/linux/mtd/physmap.h index e5f21d293c70..04e018160e2b 100644 --- a/include/linux/mtd/physmap.h +++ b/include/linux/mtd/physmap.h | |||
@@ -32,21 +32,4 @@ struct physmap_flash_data { | |||
32 | struct mtd_partition *parts; | 32 | struct mtd_partition *parts; |
33 | }; | 33 | }; |
34 | 34 | ||
35 | /* | ||
36 | * Board needs to specify the exact mapping during their setup time. | ||
37 | */ | ||
38 | void physmap_configure(unsigned long addr, unsigned long size, | ||
39 | int bankwidth, void (*set_vpp)(struct map_info *, int) ); | ||
40 | |||
41 | /* | ||
42 | * Machines that wish to do flash partition may want to call this function in | ||
43 | * their setup routine. | ||
44 | * | ||
45 | * physmap_set_partitions(mypartitions, num_parts); | ||
46 | * | ||
47 | * Note that one can always override this hard-coded partition with | ||
48 | * command line partition (you need to enable CONFIG_MTD_CMDLINE_PARTS). | ||
49 | */ | ||
50 | void physmap_set_partitions(struct mtd_partition *parts, int num_parts); | ||
51 | |||
52 | #endif /* __LINUX_MTD_PHYSMAP__ */ | 35 | #endif /* __LINUX_MTD_PHYSMAP__ */ |
diff --git a/include/linux/namei.h b/include/linux/namei.h index 409328d1cbbb..ffc02135c483 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h | |||
@@ -67,6 +67,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; | |||
67 | #define LOOKUP_EMPTY 0x4000 | 67 | #define LOOKUP_EMPTY 0x4000 |
68 | 68 | ||
69 | extern int user_path_at(int, const char __user *, unsigned, struct path *); | 69 | extern int user_path_at(int, const char __user *, unsigned, struct path *); |
70 | extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty); | ||
70 | 71 | ||
71 | #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path) | 72 | #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path) |
72 | #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path) | 73 | #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path) |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index df1c836e6948..a82ad4dd306a 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -2536,6 +2536,8 @@ extern void net_disable_timestamp(void); | |||
2536 | extern void *dev_seq_start(struct seq_file *seq, loff_t *pos); | 2536 | extern void *dev_seq_start(struct seq_file *seq, loff_t *pos); |
2537 | extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos); | 2537 | extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos); |
2538 | extern void dev_seq_stop(struct seq_file *seq, void *v); | 2538 | extern void dev_seq_stop(struct seq_file *seq, void *v); |
2539 | extern int dev_seq_open_ops(struct inode *inode, struct file *file, | ||
2540 | const struct seq_operations *ops); | ||
2539 | #endif | 2541 | #endif |
2540 | 2542 | ||
2541 | extern int netdev_class_create_file(struct class_attribute *class_attr); | 2543 | extern int netdev_class_create_file(struct class_attribute *class_attr); |
@@ -2622,23 +2624,23 @@ static inline const char *netdev_name(const struct net_device *dev) | |||
2622 | extern int __netdev_printk(const char *level, const struct net_device *dev, | 2624 | extern int __netdev_printk(const char *level, const struct net_device *dev, |
2623 | struct va_format *vaf); | 2625 | struct va_format *vaf); |
2624 | 2626 | ||
2625 | extern int netdev_printk(const char *level, const struct net_device *dev, | 2627 | extern __printf(3, 4) |
2626 | const char *format, ...) | 2628 | int netdev_printk(const char *level, const struct net_device *dev, |
2627 | __attribute__ ((format (printf, 3, 4))); | 2629 | const char *format, ...); |
2628 | extern int netdev_emerg(const struct net_device *dev, const char *format, ...) | 2630 | extern __printf(2, 3) |
2629 | __attribute__ ((format (printf, 2, 3))); | 2631 | int netdev_emerg(const struct net_device *dev, const char *format, ...); |
2630 | extern int netdev_alert(const struct net_device *dev, const char *format, ...) | 2632 | extern __printf(2, 3) |
2631 | __attribute__ ((format (printf, 2, 3))); | 2633 | int netdev_alert(const struct net_device *dev, const char *format, ...); |
2632 | extern int netdev_crit(const struct net_device *dev, const char *format, ...) | 2634 | extern __printf(2, 3) |
2633 | __attribute__ ((format (printf, 2, 3))); | 2635 | int netdev_crit(const struct net_device *dev, const char *format, ...); |
2634 | extern int netdev_err(const struct net_device *dev, const char *format, ...) | 2636 | extern __printf(2, 3) |
2635 | __attribute__ ((format (printf, 2, 3))); | 2637 | int netdev_err(const struct net_device *dev, const char *format, ...); |
2636 | extern int netdev_warn(const struct net_device *dev, const char *format, ...) | 2638 | extern __printf(2, 3) |
2637 | __attribute__ ((format (printf, 2, 3))); | 2639 | int netdev_warn(const struct net_device *dev, const char *format, ...); |
2638 | extern int netdev_notice(const struct net_device *dev, const char *format, ...) | 2640 | extern __printf(2, 3) |
2639 | __attribute__ ((format (printf, 2, 3))); | 2641 | int netdev_notice(const struct net_device *dev, const char *format, ...); |
2640 | extern int netdev_info(const struct net_device *dev, const char *format, ...) | 2642 | extern __printf(2, 3) |
2641 | __attribute__ ((format (printf, 2, 3))); | 2643 | int netdev_info(const struct net_device *dev, const char *format, ...); |
2642 | 2644 | ||
2643 | #define MODULE_ALIAS_NETDEV(device) \ | 2645 | #define MODULE_ALIAS_NETDEV(device) \ |
2644 | MODULE_ALIAS("netdev-" device) | 2646 | MODULE_ALIAS("netdev-" device) |
diff --git a/include/linux/netfilter_ipv4/Kbuild b/include/linux/netfilter_ipv4/Kbuild index f9930c87fff3..c3b45480ecf7 100644 --- a/include/linux/netfilter_ipv4/Kbuild +++ b/include/linux/netfilter_ipv4/Kbuild | |||
@@ -12,3 +12,4 @@ header-y += ipt_ah.h | |||
12 | header-y += ipt_ecn.h | 12 | header-y += ipt_ecn.h |
13 | header-y += ipt_realm.h | 13 | header-y += ipt_realm.h |
14 | header-y += ipt_ttl.h | 14 | header-y += ipt_ttl.h |
15 | header-y += nf_nat.h | ||
diff --git a/include/linux/netfilter_ipv4/nf_nat.h b/include/linux/netfilter_ipv4/nf_nat.h new file mode 100644 index 000000000000..7a861d09fc86 --- /dev/null +++ b/include/linux/netfilter_ipv4/nf_nat.h | |||
@@ -0,0 +1,58 @@ | |||
1 | #ifndef _LINUX_NF_NAT_H | ||
2 | #define _LINUX_NF_NAT_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | #define IP_NAT_RANGE_MAP_IPS 1 | ||
7 | #define IP_NAT_RANGE_PROTO_SPECIFIED 2 | ||
8 | #define IP_NAT_RANGE_PROTO_RANDOM 4 | ||
9 | #define IP_NAT_RANGE_PERSISTENT 8 | ||
10 | |||
11 | /* The protocol-specific manipulable parts of the tuple. */ | ||
12 | union nf_conntrack_man_proto { | ||
13 | /* Add other protocols here. */ | ||
14 | __be16 all; | ||
15 | |||
16 | struct { | ||
17 | __be16 port; | ||
18 | } tcp; | ||
19 | struct { | ||
20 | __be16 port; | ||
21 | } udp; | ||
22 | struct { | ||
23 | __be16 id; | ||
24 | } icmp; | ||
25 | struct { | ||
26 | __be16 port; | ||
27 | } dccp; | ||
28 | struct { | ||
29 | __be16 port; | ||
30 | } sctp; | ||
31 | struct { | ||
32 | __be16 key; /* GRE key is 32bit, PPtP only uses 16bit */ | ||
33 | } gre; | ||
34 | }; | ||
35 | |||
36 | /* Single range specification. */ | ||
37 | struct nf_nat_range { | ||
38 | /* Set to OR of flags above. */ | ||
39 | unsigned int flags; | ||
40 | |||
41 | /* Inclusive: network order. */ | ||
42 | __be32 min_ip, max_ip; | ||
43 | |||
44 | /* Inclusive: network order */ | ||
45 | union nf_conntrack_man_proto min, max; | ||
46 | }; | ||
47 | |||
48 | /* For backwards compat: don't use in modern code. */ | ||
49 | struct nf_nat_multi_range_compat { | ||
50 | unsigned int rangesize; /* Must be 1. */ | ||
51 | |||
52 | /* hangs off end. */ | ||
53 | struct nf_nat_range range[1]; | ||
54 | }; | ||
55 | |||
56 | #define nf_nat_multi_range nf_nat_multi_range_compat | ||
57 | |||
58 | #endif | ||
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 8180cd9d73d5..8374d2967362 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ | 25 | #define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ |
26 | #define NETLINK_ECRYPTFS 19 | 26 | #define NETLINK_ECRYPTFS 19 |
27 | #define NETLINK_RDMA 20 | 27 | #define NETLINK_RDMA 20 |
28 | #define NETLINK_CRYPTO 21 /* Crypto layer */ | ||
28 | 29 | ||
29 | #define MAX_LINKS 32 | 30 | #define MAX_LINKS 32 |
30 | 31 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 60a137b7f171..92ecf5585fac 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -229,6 +229,7 @@ struct nfs_inode { | |||
229 | #define NFS_INO_COMMIT (7) /* inode is committing unstable writes */ | 229 | #define NFS_INO_COMMIT (7) /* inode is committing unstable writes */ |
230 | #define NFS_INO_PNFS_COMMIT (8) /* use pnfs code for commit */ | 230 | #define NFS_INO_PNFS_COMMIT (8) /* use pnfs code for commit */ |
231 | #define NFS_INO_LAYOUTCOMMIT (9) /* layoutcommit required */ | 231 | #define NFS_INO_LAYOUTCOMMIT (9) /* layoutcommit required */ |
232 | #define NFS_INO_LAYOUTCOMMITTING (10) /* layoutcommit inflight */ | ||
232 | 233 | ||
233 | static inline struct nfs_inode *NFS_I(const struct inode *inode) | 234 | static inline struct nfs_inode *NFS_I(const struct inode *inode) |
234 | { | 235 | { |
@@ -409,6 +410,9 @@ extern const struct inode_operations nfs_file_inode_operations; | |||
409 | extern const struct inode_operations nfs3_file_inode_operations; | 410 | extern const struct inode_operations nfs3_file_inode_operations; |
410 | #endif /* CONFIG_NFS_V3 */ | 411 | #endif /* CONFIG_NFS_V3 */ |
411 | extern const struct file_operations nfs_file_operations; | 412 | extern const struct file_operations nfs_file_operations; |
413 | #ifdef CONFIG_NFS_V4 | ||
414 | extern const struct file_operations nfs4_file_operations; | ||
415 | #endif /* CONFIG_NFS_V4 */ | ||
412 | extern const struct address_space_operations nfs_file_aops; | 416 | extern const struct address_space_operations nfs_file_aops; |
413 | extern const struct address_space_operations nfs_dir_aops; | 417 | extern const struct address_space_operations nfs_dir_aops; |
414 | 418 | ||
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index c74595ba7094..2a7c533be5dd 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -1192,6 +1192,7 @@ struct nfs_rpc_ops { | |||
1192 | const struct dentry_operations *dentry_ops; | 1192 | const struct dentry_operations *dentry_ops; |
1193 | const struct inode_operations *dir_inode_ops; | 1193 | const struct inode_operations *dir_inode_ops; |
1194 | const struct inode_operations *file_inode_ops; | 1194 | const struct inode_operations *file_inode_ops; |
1195 | const struct file_operations *file_ops; | ||
1195 | 1196 | ||
1196 | int (*getroot) (struct nfs_server *, struct nfs_fh *, | 1197 | int (*getroot) (struct nfs_server *, struct nfs_fh *, |
1197 | struct nfs_fsinfo *); | 1198 | struct nfs_fsinfo *); |
diff --git a/include/linux/of.h b/include/linux/of.h index 5dbe263462a9..4948552d60f5 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | 24 | ||
25 | #include <asm/byteorder.h> | 25 | #include <asm/byteorder.h> |
26 | #include <asm/errno.h> | ||
26 | 27 | ||
27 | typedef u32 phandle; | 28 | typedef u32 phandle; |
28 | typedef u32 ihandle; | 29 | typedef u32 ihandle; |
@@ -207,6 +208,11 @@ extern int of_property_read_u64(const struct device_node *np, | |||
207 | extern int of_property_read_string(struct device_node *np, | 208 | extern int of_property_read_string(struct device_node *np, |
208 | const char *propname, | 209 | const char *propname, |
209 | const char **out_string); | 210 | const char **out_string); |
211 | extern int of_property_read_string_index(struct device_node *np, | ||
212 | const char *propname, | ||
213 | int index, const char **output); | ||
214 | extern int of_property_count_strings(struct device_node *np, | ||
215 | const char *propname); | ||
210 | extern int of_device_is_compatible(const struct device_node *device, | 216 | extern int of_device_is_compatible(const struct device_node *device, |
211 | const char *); | 217 | const char *); |
212 | extern int of_device_is_available(const struct device_node *device); | 218 | extern int of_device_is_available(const struct device_node *device); |
@@ -283,6 +289,19 @@ static inline int of_property_read_string(struct device_node *np, | |||
283 | return -ENOSYS; | 289 | return -ENOSYS; |
284 | } | 290 | } |
285 | 291 | ||
292 | static inline int of_property_read_string_index(struct device_node *np, | ||
293 | const char *propname, int index, | ||
294 | const char **out_string) | ||
295 | { | ||
296 | return -ENOSYS; | ||
297 | } | ||
298 | |||
299 | static inline int of_property_count_strings(struct device_node *np, | ||
300 | const char *propname) | ||
301 | { | ||
302 | return -ENOSYS; | ||
303 | } | ||
304 | |||
286 | static inline const void *of_get_property(const struct device_node *node, | 305 | static inline const void *of_get_property(const struct device_node *node, |
287 | const char *name, | 306 | const char *name, |
288 | int *lenp) | 307 | int *lenp) |
@@ -303,6 +322,16 @@ static inline struct device_node *of_parse_phandle(struct device_node *np, | |||
303 | return NULL; | 322 | return NULL; |
304 | } | 323 | } |
305 | 324 | ||
325 | static inline int of_alias_get_id(struct device_node *np, const char *stem) | ||
326 | { | ||
327 | return -ENOSYS; | ||
328 | } | ||
329 | |||
330 | static inline int of_machine_is_compatible(const char *compat) | ||
331 | { | ||
332 | return 0; | ||
333 | } | ||
334 | |||
306 | #define of_match_ptr(_ptr) NULL | 335 | #define of_match_ptr(_ptr) NULL |
307 | #define of_match_node(_matches, _node) NULL | 336 | #define of_match_node(_matches, _node) NULL |
308 | #endif /* CONFIG_OF */ | 337 | #endif /* CONFIG_OF */ |
diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h index cd2e61ce4e83..d0307eed20c9 100644 --- a/include/linux/of_irq.h +++ b/include/linux/of_irq.h | |||
@@ -33,6 +33,8 @@ struct of_irq { | |||
33 | u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */ | 33 | u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */ |
34 | }; | 34 | }; |
35 | 35 | ||
36 | typedef int (*of_irq_init_cb_t)(struct device_node *, struct device_node *); | ||
37 | |||
36 | /* | 38 | /* |
37 | * Workarounds only applied to 32bit powermac machines | 39 | * Workarounds only applied to 32bit powermac machines |
38 | */ | 40 | */ |
@@ -73,6 +75,7 @@ extern int of_irq_to_resource_table(struct device_node *dev, | |||
73 | struct resource *res, int nr_irqs); | 75 | struct resource *res, int nr_irqs); |
74 | extern struct device_node *of_irq_find_parent(struct device_node *child); | 76 | extern struct device_node *of_irq_find_parent(struct device_node *child); |
75 | 77 | ||
78 | extern void of_irq_init(const struct of_device_id *matches); | ||
76 | 79 | ||
77 | #endif /* CONFIG_OF_IRQ */ | 80 | #endif /* CONFIG_OF_IRQ */ |
78 | #endif /* CONFIG_OF */ | 81 | #endif /* CONFIG_OF */ |
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h index 5a6f458a4bb7..040ce2f6e8de 100644 --- a/include/linux/of_platform.h +++ b/include/linux/of_platform.h | |||
@@ -12,7 +12,6 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #ifdef CONFIG_OF_DEVICE | 14 | #ifdef CONFIG_OF_DEVICE |
15 | #include <linux/module.h> | ||
16 | #include <linux/device.h> | 15 | #include <linux/device.h> |
17 | #include <linux/mod_devicetable.h> | 16 | #include <linux/mod_devicetable.h> |
18 | #include <linux/pm.h> | 17 | #include <linux/pm.h> |
diff --git a/include/linux/oom.h b/include/linux/oom.h index 13b7b02e599a..6f9d04a85336 100644 --- a/include/linux/oom.h +++ b/include/linux/oom.h | |||
@@ -40,6 +40,7 @@ enum oom_constraint { | |||
40 | CONSTRAINT_MEMCG, | 40 | CONSTRAINT_MEMCG, |
41 | }; | 41 | }; |
42 | 42 | ||
43 | extern void compare_swap_oom_score_adj(int old_val, int new_val); | ||
43 | extern int test_set_oom_score_adj(int new_val); | 44 | extern int test_set_oom_score_adj(int new_val); |
44 | 45 | ||
45 | extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, | 46 | extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, |
diff --git a/include/linux/opp.h b/include/linux/opp.h index 87a9208f8aec..ee94b33080c2 100644 --- a/include/linux/opp.h +++ b/include/linux/opp.h | |||
@@ -97,11 +97,11 @@ static inline int opp_disable(struct device *dev, unsigned long freq) | |||
97 | return 0; | 97 | return 0; |
98 | } | 98 | } |
99 | 99 | ||
100 | struct srcu_notifier_head *opp_get_notifier(struct device *dev) | 100 | static inline struct srcu_notifier_head *opp_get_notifier(struct device *dev) |
101 | { | 101 | { |
102 | return ERR_PTR(-EINVAL); | 102 | return ERR_PTR(-EINVAL); |
103 | } | 103 | } |
104 | #endif /* CONFIG_PM */ | 104 | #endif /* CONFIG_PM_OPP */ |
105 | 105 | ||
106 | #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) | 106 | #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) |
107 | int opp_init_cpufreq_table(struct device *dev, | 107 | int opp_init_cpufreq_table(struct device *dev, |
diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h index e3d0b3890249..7ef68724f0f0 100644 --- a/include/linux/pci-ats.h +++ b/include/linux/pci-ats.h | |||
@@ -12,7 +12,7 @@ struct pci_ats { | |||
12 | unsigned int is_enabled:1; /* Enable bit is set */ | 12 | unsigned int is_enabled:1; /* Enable bit is set */ |
13 | }; | 13 | }; |
14 | 14 | ||
15 | #ifdef CONFIG_PCI_IOV | 15 | #ifdef CONFIG_PCI_ATS |
16 | 16 | ||
17 | extern int pci_enable_ats(struct pci_dev *dev, int ps); | 17 | extern int pci_enable_ats(struct pci_dev *dev, int ps); |
18 | extern void pci_disable_ats(struct pci_dev *dev); | 18 | extern void pci_disable_ats(struct pci_dev *dev); |
@@ -29,7 +29,7 @@ static inline int pci_ats_enabled(struct pci_dev *dev) | |||
29 | return dev->ats && dev->ats->is_enabled; | 29 | return dev->ats && dev->ats->is_enabled; |
30 | } | 30 | } |
31 | 31 | ||
32 | #else /* CONFIG_PCI_IOV */ | 32 | #else /* CONFIG_PCI_ATS */ |
33 | 33 | ||
34 | static inline int pci_enable_ats(struct pci_dev *dev, int ps) | 34 | static inline int pci_enable_ats(struct pci_dev *dev, int ps) |
35 | { | 35 | { |
@@ -50,7 +50,7 @@ static inline int pci_ats_enabled(struct pci_dev *dev) | |||
50 | return 0; | 50 | return 0; |
51 | } | 51 | } |
52 | 52 | ||
53 | #endif /* CONFIG_PCI_IOV */ | 53 | #endif /* CONFIG_PCI_ATS */ |
54 | 54 | ||
55 | #ifdef CONFIG_PCI_PRI | 55 | #ifdef CONFIG_PCI_PRI |
56 | 56 | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index 337df0d5d5f7..7cda65b5f798 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -338,7 +338,7 @@ struct pci_dev { | |||
338 | struct list_head msi_list; | 338 | struct list_head msi_list; |
339 | #endif | 339 | #endif |
340 | struct pci_vpd *vpd; | 340 | struct pci_vpd *vpd; |
341 | #ifdef CONFIG_PCI_IOV | 341 | #ifdef CONFIG_PCI_ATS |
342 | union { | 342 | union { |
343 | struct pci_sriov *sriov; /* SR-IOV capability related */ | 343 | struct pci_sriov *sriov; /* SR-IOV capability related */ |
344 | struct pci_dev *physfn; /* the PF this VF is associated with */ | 344 | struct pci_dev *physfn; /* the PF this VF is associated with */ |
diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h index 5d09cbafa7db..45fc162cbdc0 100644 --- a/include/linux/pci_hotplug.h +++ b/include/linux/pci_hotplug.h | |||
@@ -132,13 +132,9 @@ extern int pci_hp_deregister(struct hotplug_slot *slot); | |||
132 | extern int __must_check pci_hp_change_slot_info (struct hotplug_slot *slot, | 132 | extern int __must_check pci_hp_change_slot_info (struct hotplug_slot *slot, |
133 | struct hotplug_slot_info *info); | 133 | struct hotplug_slot_info *info); |
134 | 134 | ||
135 | static inline int pci_hp_register(struct hotplug_slot *slot, | 135 | /* use a define to avoid include chaining to get THIS_MODULE & friends */ |
136 | struct pci_bus *pbus, | 136 | #define pci_hp_register(slot, pbus, devnr, name) \ |
137 | int devnr, const char *name) | 137 | __pci_hp_register(slot, pbus, devnr, name, THIS_MODULE, KBUILD_MODNAME) |
138 | { | ||
139 | return __pci_hp_register(slot, pbus, devnr, name, | ||
140 | THIS_MODULE, KBUILD_MODNAME); | ||
141 | } | ||
142 | 138 | ||
143 | /* PCI Setting Record (Type 0) */ | 139 | /* PCI Setting Record (Type 0) */ |
144 | struct hpp_type0 { | 140 | struct hpp_type0 { |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 1679ff6931f9..2aaee0ca9da8 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -517,8 +517,12 @@ | |||
517 | #define PCI_DEVICE_ID_AMD_11H_NB_DRAM 0x1302 | 517 | #define PCI_DEVICE_ID_AMD_11H_NB_DRAM 0x1302 |
518 | #define PCI_DEVICE_ID_AMD_11H_NB_MISC 0x1303 | 518 | #define PCI_DEVICE_ID_AMD_11H_NB_MISC 0x1303 |
519 | #define PCI_DEVICE_ID_AMD_11H_NB_LINK 0x1304 | 519 | #define PCI_DEVICE_ID_AMD_11H_NB_LINK 0x1304 |
520 | #define PCI_DEVICE_ID_AMD_15H_NB_F0 0x1600 | ||
521 | #define PCI_DEVICE_ID_AMD_15H_NB_F1 0x1601 | ||
522 | #define PCI_DEVICE_ID_AMD_15H_NB_F2 0x1602 | ||
520 | #define PCI_DEVICE_ID_AMD_15H_NB_F3 0x1603 | 523 | #define PCI_DEVICE_ID_AMD_15H_NB_F3 0x1603 |
521 | #define PCI_DEVICE_ID_AMD_15H_NB_F4 0x1604 | 524 | #define PCI_DEVICE_ID_AMD_15H_NB_F4 0x1604 |
525 | #define PCI_DEVICE_ID_AMD_15H_NB_F5 0x1605 | ||
522 | #define PCI_DEVICE_ID_AMD_CNB17H_F3 0x1703 | 526 | #define PCI_DEVICE_ID_AMD_CNB17H_F3 0x1703 |
523 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 | 527 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 |
524 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 | 528 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 |
@@ -2405,6 +2409,8 @@ | |||
2405 | 2409 | ||
2406 | #define PCI_VENDOR_ID_AZWAVE 0x1a3b | 2410 | #define PCI_VENDOR_ID_AZWAVE 0x1a3b |
2407 | 2411 | ||
2412 | #define PCI_VENDOR_ID_ASMEDIA 0x1b21 | ||
2413 | |||
2408 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 | 2414 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 |
2409 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 | 2415 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 |
2410 | 2416 | ||
@@ -2873,3 +2879,5 @@ | |||
2873 | 2879 | ||
2874 | #define PCI_VENDOR_ID_XEN 0x5853 | 2880 | #define PCI_VENDOR_ID_XEN 0x5853 |
2875 | #define PCI_DEVICE_ID_XEN_PLATFORM 0x0001 | 2881 | #define PCI_DEVICE_ID_XEN_PLATFORM 0x0001 |
2882 | |||
2883 | #define PCI_VENDOR_ID_OCZ 0x1b85 | ||
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 1e9ebe5e0091..b1f89122bf6a 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -822,6 +822,7 @@ struct perf_event { | |||
822 | int mmap_locked; | 822 | int mmap_locked; |
823 | struct user_struct *mmap_user; | 823 | struct user_struct *mmap_user; |
824 | struct ring_buffer *rb; | 824 | struct ring_buffer *rb; |
825 | struct list_head rb_entry; | ||
825 | 826 | ||
826 | /* poll related */ | 827 | /* poll related */ |
827 | wait_queue_head_t waitq; | 828 | wait_queue_head_t waitq; |
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h index 3605e947fa90..04c011038f32 100644 --- a/include/linux/pinctrl/pinctrl.h +++ b/include/linux/pinctrl/pinctrl.h | |||
@@ -121,6 +121,7 @@ extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev); | |||
121 | extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev); | 121 | extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev); |
122 | #else | 122 | #else |
123 | 123 | ||
124 | struct pinctrl_dev; | ||
124 | 125 | ||
125 | /* Sufficiently stupid default function when pinctrl is not in use */ | 126 | /* Sufficiently stupid default function when pinctrl is not in use */ |
126 | static inline bool pin_is_valid(struct pinctrl_dev *pctldev, int pin) | 127 | static inline bool pin_is_valid(struct pinctrl_dev *pctldev, int pin) |
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h index c5336705921f..7281d5acf2f9 100644 --- a/include/linux/pkt_sched.h +++ b/include/linux/pkt_sched.h | |||
@@ -30,7 +30,7 @@ | |||
30 | */ | 30 | */ |
31 | 31 | ||
32 | struct tc_stats { | 32 | struct tc_stats { |
33 | __u64 bytes; /* NUmber of enqueues bytes */ | 33 | __u64 bytes; /* Number of enqueued bytes */ |
34 | __u32 packets; /* Number of enqueued packets */ | 34 | __u32 packets; /* Number of enqueued packets */ |
35 | __u32 drops; /* Packets dropped because of lack of resources */ | 35 | __u32 drops; /* Packets dropped because of lack of resources */ |
36 | __u32 overlimits; /* Number of throttle events when this | 36 | __u32 overlimits; /* Number of throttle events when this |
@@ -297,7 +297,7 @@ struct tc_htb_glob { | |||
297 | __u32 debug; /* debug flags */ | 297 | __u32 debug; /* debug flags */ |
298 | 298 | ||
299 | /* stats */ | 299 | /* stats */ |
300 | __u32 direct_pkts; /* count of non shapped packets */ | 300 | __u32 direct_pkts; /* count of non shaped packets */ |
301 | }; | 301 | }; |
302 | enum { | 302 | enum { |
303 | TCA_HTB_UNSPEC, | 303 | TCA_HTB_UNSPEC, |
@@ -503,7 +503,7 @@ enum { | |||
503 | }; | 503 | }; |
504 | #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) | 504 | #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) |
505 | 505 | ||
506 | /* State transition probablities for 4 state model */ | 506 | /* State transition probabilities for 4 state model */ |
507 | struct tc_netem_gimodel { | 507 | struct tc_netem_gimodel { |
508 | __u32 p13; | 508 | __u32 p13; |
509 | __u32 p31; | 509 | __u32 p31; |
diff --git a/include/linux/platform_data/leds-renesas-tpu.h b/include/linux/platform_data/leds-renesas-tpu.h new file mode 100644 index 000000000000..055387086fc1 --- /dev/null +++ b/include/linux/platform_data/leds-renesas-tpu.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #ifndef __LEDS_RENESAS_TPU_H__ | ||
2 | #define __LEDS_RENESAS_TPU_H__ | ||
3 | |||
4 | struct led_renesas_tpu_config { | ||
5 | char *name; | ||
6 | unsigned pin_gpio_fn; | ||
7 | unsigned pin_gpio; | ||
8 | unsigned int channel_offset; | ||
9 | unsigned int timer_bit; | ||
10 | unsigned int max_brightness; | ||
11 | unsigned int refresh_rate; | ||
12 | }; | ||
13 | |||
14 | #endif /* __LEDS_RENESAS_TPU_H__ */ | ||
diff --git a/include/linux/pm.h b/include/linux/pm.h index f15acb646813..3f3ed83a9aa5 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
@@ -54,118 +54,145 @@ typedef struct pm_message { | |||
54 | /** | 54 | /** |
55 | * struct dev_pm_ops - device PM callbacks | 55 | * struct dev_pm_ops - device PM callbacks |
56 | * | 56 | * |
57 | * Several driver power state transitions are externally visible, affecting | 57 | * Several device power state transitions are externally visible, affecting |
58 | * the state of pending I/O queues and (for drivers that touch hardware) | 58 | * the state of pending I/O queues and (for drivers that touch hardware) |
59 | * interrupts, wakeups, DMA, and other hardware state. There may also be | 59 | * interrupts, wakeups, DMA, and other hardware state. There may also be |
60 | * internal transitions to various low power modes, which are transparent | 60 | * internal transitions to various low-power modes which are transparent |
61 | * to the rest of the driver stack (such as a driver that's ON gating off | 61 | * to the rest of the driver stack (such as a driver that's ON gating off |
62 | * clocks which are not in active use). | 62 | * clocks which are not in active use). |
63 | * | 63 | * |
64 | * The externally visible transitions are handled with the help of the following | 64 | * The externally visible transitions are handled with the help of callbacks |
65 | * callbacks included in this structure: | 65 | * included in this structure in such a way that two levels of callbacks are |
66 | * | 66 | * involved. First, the PM core executes callbacks provided by PM domains, |
67 | * @prepare: Prepare the device for the upcoming transition, but do NOT change | 67 | * device types, classes and bus types. They are the subsystem-level callbacks |
68 | * its hardware state. Prevent new children of the device from being | 68 | * supposed to execute callbacks provided by device drivers, although they may |
69 | * registered after @prepare() returns (the driver's subsystem and | 69 | * choose not to do that. If the driver callbacks are executed, they have to |
70 | * generally the rest of the kernel is supposed to prevent new calls to the | 70 | * collaborate with the subsystem-level callbacks to achieve the goals |
71 | * probe method from being made too once @prepare() has succeeded). If | 71 | * appropriate for the given system transition, given transition phase and the |
72 | * @prepare() detects a situation it cannot handle (e.g. registration of a | 72 | * subsystem the device belongs to. |
73 | * child already in progress), it may return -EAGAIN, so that the PM core | 73 | * |
74 | * can execute it once again (e.g. after the new child has been registered) | 74 | * @prepare: The principal role of this callback is to prevent new children of |
75 | * to recover from the race condition. This method is executed for all | 75 | * the device from being registered after it has returned (the driver's |
76 | * kinds of suspend transitions and is followed by one of the suspend | 76 | * subsystem and generally the rest of the kernel is supposed to prevent |
77 | * callbacks: @suspend(), @freeze(), or @poweroff(). | 77 | * new calls to the probe method from being made too once @prepare() has |
78 | * The PM core executes @prepare() for all devices before starting to | 78 | * succeeded). If @prepare() detects a situation it cannot handle (e.g. |
79 | * execute suspend callbacks for any of them, so drivers may assume all of | 79 | * registration of a child already in progress), it may return -EAGAIN, so |
80 | * the other devices to be present and functional while @prepare() is being | 80 | * that the PM core can execute it once again (e.g. after a new child has |
81 | * executed. In particular, it is safe to make GFP_KERNEL memory | 81 | * been registered) to recover from the race condition. |
82 | * allocations from within @prepare(). However, drivers may NOT assume | 82 | * This method is executed for all kinds of suspend transitions and is |
83 | * anything about the availability of the user space at that time and it | 83 | * followed by one of the suspend callbacks: @suspend(), @freeze(), or |
84 | * is not correct to request firmware from within @prepare() (it's too | 84 | * @poweroff(). The PM core executes subsystem-level @prepare() for all |
85 | * late to do that). [To work around this limitation, drivers may | 85 | * devices before starting to invoke suspend callbacks for any of them, so |
86 | * register suspend and hibernation notifiers that are executed before the | 86 | * generally devices may be assumed to be functional or to respond to |
87 | * freezing of tasks.] | 87 | * runtime resume requests while @prepare() is being executed. However, |
88 | * device drivers may NOT assume anything about the availability of user | ||
89 | * space at that time and it is NOT valid to request firmware from within | ||
90 | * @prepare() (it's too late to do that). It also is NOT valid to allocate | ||
91 | * substantial amounts of memory from @prepare() in the GFP_KERNEL mode. | ||
92 | * [To work around these limitations, drivers may register suspend and | ||
93 | * hibernation notifiers to be executed before the freezing of tasks.] | ||
88 | * | 94 | * |
89 | * @complete: Undo the changes made by @prepare(). This method is executed for | 95 | * @complete: Undo the changes made by @prepare(). This method is executed for |
90 | * all kinds of resume transitions, following one of the resume callbacks: | 96 | * all kinds of resume transitions, following one of the resume callbacks: |
91 | * @resume(), @thaw(), @restore(). Also called if the state transition | 97 | * @resume(), @thaw(), @restore(). Also called if the state transition |
92 | * fails before the driver's suspend callback (@suspend(), @freeze(), | 98 | * fails before the driver's suspend callback: @suspend(), @freeze() or |
93 | * @poweroff()) can be executed (e.g. if the suspend callback fails for one | 99 | * @poweroff(), can be executed (e.g. if the suspend callback fails for one |
94 | * of the other devices that the PM core has unsuccessfully attempted to | 100 | * of the other devices that the PM core has unsuccessfully attempted to |
95 | * suspend earlier). | 101 | * suspend earlier). |
96 | * The PM core executes @complete() after it has executed the appropriate | 102 | * The PM core executes subsystem-level @complete() after it has executed |
97 | * resume callback for all devices. | 103 | * the appropriate resume callbacks for all devices. |
98 | * | 104 | * |
99 | * @suspend: Executed before putting the system into a sleep state in which the | 105 | * @suspend: Executed before putting the system into a sleep state in which the |
100 | * contents of main memory are preserved. Quiesce the device, put it into | 106 | * contents of main memory are preserved. The exact action to perform |
101 | * a low power state appropriate for the upcoming system state (such as | 107 | * depends on the device's subsystem (PM domain, device type, class or bus |
102 | * PCI_D3hot), and enable wakeup events as appropriate. | 108 | * type), but generally the device must be quiescent after subsystem-level |
109 | * @suspend() has returned, so that it doesn't do any I/O or DMA. | ||
110 | * Subsystem-level @suspend() is executed for all devices after invoking | ||
111 | * subsystem-level @prepare() for all of them. | ||
103 | * | 112 | * |
104 | * @resume: Executed after waking the system up from a sleep state in which the | 113 | * @resume: Executed after waking the system up from a sleep state in which the |
105 | * contents of main memory were preserved. Put the device into the | 114 | * contents of main memory were preserved. The exact action to perform |
106 | * appropriate state, according to the information saved in memory by the | 115 | * depends on the device's subsystem, but generally the driver is expected |
107 | * preceding @suspend(). The driver starts working again, responding to | 116 | * to start working again, responding to hardware events and software |
108 | * hardware events and software requests. The hardware may have gone | 117 | * requests (the device itself may be left in a low-power state, waiting |
109 | * through a power-off reset, or it may have maintained state from the | 118 | * for a runtime resume to occur). The state of the device at the time its |
110 | * previous suspend() which the driver may rely on while resuming. On most | 119 | * driver's @resume() callback is run depends on the platform and subsystem |
111 | * platforms, there are no restrictions on availability of resources like | 120 | * the device belongs to. On most platforms, there are no restrictions on |
112 | * clocks during @resume(). | 121 | * availability of resources like clocks during @resume(). |
122 | * Subsystem-level @resume() is executed for all devices after invoking | ||
123 | * subsystem-level @resume_noirq() for all of them. | ||
113 | * | 124 | * |
114 | * @freeze: Hibernation-specific, executed before creating a hibernation image. | 125 | * @freeze: Hibernation-specific, executed before creating a hibernation image. |
115 | * Quiesce operations so that a consistent image can be created, but do NOT | 126 | * Analogous to @suspend(), but it should not enable the device to signal |
116 | * otherwise put the device into a low power device state and do NOT emit | 127 | * wakeup events or change its power state. The majority of subsystems |
117 | * system wakeup events. Save in main memory the device settings to be | 128 | * (with the notable exception of the PCI bus type) expect the driver-level |
118 | * used by @restore() during the subsequent resume from hibernation or by | 129 | * @freeze() to save the device settings in memory to be used by @restore() |
119 | * the subsequent @thaw(), if the creation of the image or the restoration | 130 | * during the subsequent resume from hibernation. |
120 | * of main memory contents from it fails. | 131 | * Subsystem-level @freeze() is executed for all devices after invoking |
132 | * subsystem-level @prepare() for all of them. | ||
121 | * | 133 | * |
122 | * @thaw: Hibernation-specific, executed after creating a hibernation image OR | 134 | * @thaw: Hibernation-specific, executed after creating a hibernation image OR |
123 | * if the creation of the image fails. Also executed after a failing | 135 | * if the creation of an image has failed. Also executed after a failing |
124 | * attempt to restore the contents of main memory from such an image. | 136 | * attempt to restore the contents of main memory from such an image. |
125 | * Undo the changes made by the preceding @freeze(), so the device can be | 137 | * Undo the changes made by the preceding @freeze(), so the device can be |
126 | * operated in the same way as immediately before the call to @freeze(). | 138 | * operated in the same way as immediately before the call to @freeze(). |
139 | * Subsystem-level @thaw() is executed for all devices after invoking | ||
140 | * subsystem-level @thaw_noirq() for all of them. It also may be executed | ||
141 | * directly after @freeze() in case of a transition error. | ||
127 | * | 142 | * |
128 | * @poweroff: Hibernation-specific, executed after saving a hibernation image. | 143 | * @poweroff: Hibernation-specific, executed after saving a hibernation image. |
129 | * Quiesce the device, put it into a low power state appropriate for the | 144 | * Analogous to @suspend(), but it need not save the device's settings in |
130 | * upcoming system state (such as PCI_D3hot), and enable wakeup events as | 145 | * memory. |
131 | * appropriate. | 146 | * Subsystem-level @poweroff() is executed for all devices after invoking |
147 | * subsystem-level @prepare() for all of them. | ||
132 | * | 148 | * |
133 | * @restore: Hibernation-specific, executed after restoring the contents of main | 149 | * @restore: Hibernation-specific, executed after restoring the contents of main |
134 | * memory from a hibernation image. Driver starts working again, | 150 | * memory from a hibernation image, analogous to @resume(). |
135 | * responding to hardware events and software requests. Drivers may NOT | 151 | * |
136 | * make ANY assumptions about the hardware state right prior to @restore(). | 152 | * @suspend_noirq: Complete the actions started by @suspend(). Carry out any |
137 | * On most platforms, there are no restrictions on availability of | 153 | * additional operations required for suspending the device that might be |
138 | * resources like clocks during @restore(). | 154 | * racing with its driver's interrupt handler, which is guaranteed not to |
139 | * | 155 | * run while @suspend_noirq() is being executed. |
140 | * @suspend_noirq: Complete the operations of ->suspend() by carrying out any | 156 | * It generally is expected that the device will be in a low-power state |
141 | * actions required for suspending the device that need interrupts to be | 157 | * (appropriate for the target system sleep state) after subsystem-level |
142 | * disabled | 158 | * @suspend_noirq() has returned successfully. If the device can generate |
143 | * | 159 | * system wakeup signals and is enabled to wake up the system, it should be |
144 | * @resume_noirq: Prepare for the execution of ->resume() by carrying out any | 160 | * configured to do so at that time. However, depending on the platform |
145 | * actions required for resuming the device that need interrupts to be | 161 | * and device's subsystem, @suspend() may be allowed to put the device into |
146 | * disabled | 162 | * the low-power state and configure it to generate wakeup signals, in |
147 | * | 163 | * which case it generally is not necessary to define @suspend_noirq(). |
148 | * @freeze_noirq: Complete the operations of ->freeze() by carrying out any | 164 | * |
149 | * actions required for freezing the device that need interrupts to be | 165 | * @resume_noirq: Prepare for the execution of @resume() by carrying out any |
150 | * disabled | 166 | * operations required for resuming the device that might be racing with |
151 | * | 167 | * its driver's interrupt handler, which is guaranteed not to run while |
152 | * @thaw_noirq: Prepare for the execution of ->thaw() by carrying out any | 168 | * @resume_noirq() is being executed. |
153 | * actions required for thawing the device that need interrupts to be | 169 | * |
154 | * disabled | 170 | * @freeze_noirq: Complete the actions started by @freeze(). Carry out any |
155 | * | 171 | * additional operations required for freezing the device that might be |
156 | * @poweroff_noirq: Complete the operations of ->poweroff() by carrying out any | 172 | * racing with its driver's interrupt handler, which is guaranteed not to |
157 | * actions required for handling the device that need interrupts to be | 173 | * run while @freeze_noirq() is being executed. |
158 | * disabled | 174 | * The power state of the device should not be changed by either @freeze() |
159 | * | 175 | * or @freeze_noirq() and it should not be configured to signal system |
160 | * @restore_noirq: Prepare for the execution of ->restore() by carrying out any | 176 | * wakeup by any of these callbacks. |
161 | * actions required for restoring the operations of the device that need | 177 | * |
162 | * interrupts to be disabled | 178 | * @thaw_noirq: Prepare for the execution of @thaw() by carrying out any |
179 | * operations required for thawing the device that might be racing with its | ||
180 | * driver's interrupt handler, which is guaranteed not to run while | ||
181 | * @thaw_noirq() is being executed. | ||
182 | * | ||
183 | * @poweroff_noirq: Complete the actions started by @poweroff(). Analogous to | ||
184 | * @suspend_noirq(), but it need not save the device's settings in memory. | ||
185 | * | ||
186 | * @restore_noirq: Prepare for the execution of @restore() by carrying out any | ||
187 | * operations required for thawing the device that might be racing with its | ||
188 | * driver's interrupt handler, which is guaranteed not to run while | ||
189 | * @restore_noirq() is being executed. Analogous to @resume_noirq(). | ||
163 | * | 190 | * |
164 | * All of the above callbacks, except for @complete(), return error codes. | 191 | * All of the above callbacks, except for @complete(), return error codes. |
165 | * However, the error codes returned by the resume operations, @resume(), | 192 | * However, the error codes returned by the resume operations, @resume(), |
166 | * @thaw(), @restore(), @resume_noirq(), @thaw_noirq(), and @restore_noirq() do | 193 | * @thaw(), @restore(), @resume_noirq(), @thaw_noirq(), and @restore_noirq(), do |
167 | * not cause the PM core to abort the resume transition during which they are | 194 | * not cause the PM core to abort the resume transition during which they are |
168 | * returned. The error codes returned in that cases are only printed by the PM | 195 | * returned. The error codes returned in those cases are only printed by the PM |
169 | * core to the system logs for debugging purposes. Still, it is recommended | 196 | * core to the system logs for debugging purposes. Still, it is recommended |
170 | * that drivers only return error codes from their resume methods in case of an | 197 | * that drivers only return error codes from their resume methods in case of an |
171 | * unrecoverable failure (i.e. when the device being handled refuses to resume | 198 | * unrecoverable failure (i.e. when the device being handled refuses to resume |
@@ -174,31 +201,43 @@ typedef struct pm_message { | |||
174 | * their children. | 201 | * their children. |
175 | * | 202 | * |
176 | * It is allowed to unregister devices while the above callbacks are being | 203 | * It is allowed to unregister devices while the above callbacks are being |
177 | * executed. However, it is not allowed to unregister a device from within any | 204 | * executed. However, a callback routine must NOT try to unregister the device |
178 | * of its own callbacks. | 205 | * it was called for, although it may unregister children of that device (for |
206 | * example, if it detects that a child was unplugged while the system was | ||
207 | * asleep). | ||
208 | * | ||
209 | * Refer to Documentation/power/devices.txt for more information about the role | ||
210 | * of the above callbacks in the system suspend process. | ||
179 | * | 211 | * |
180 | * There also are the following callbacks related to run-time power management | 212 | * There also are callbacks related to runtime power management of devices. |
181 | * of devices: | 213 | * Again, these callbacks are executed by the PM core only for subsystems |
214 | * (PM domains, device types, classes and bus types) and the subsystem-level | ||
215 | * callbacks are supposed to invoke the driver callbacks. Moreover, the exact | ||
216 | * actions to be performed by a device driver's callbacks generally depend on | ||
217 | * the platform and subsystem the device belongs to. | ||
182 | * | 218 | * |
183 | * @runtime_suspend: Prepare the device for a condition in which it won't be | 219 | * @runtime_suspend: Prepare the device for a condition in which it won't be |
184 | * able to communicate with the CPU(s) and RAM due to power management. | 220 | * able to communicate with the CPU(s) and RAM due to power management. |
185 | * This need not mean that the device should be put into a low power state. | 221 | * This need not mean that the device should be put into a low-power state. |
186 | * For example, if the device is behind a link which is about to be turned | 222 | * For example, if the device is behind a link which is about to be turned |
187 | * off, the device may remain at full power. If the device does go to low | 223 | * off, the device may remain at full power. If the device does go to low |
188 | * power and is capable of generating run-time wake-up events, remote | 224 | * power and is capable of generating runtime wakeup events, remote wakeup |
189 | * wake-up (i.e., a hardware mechanism allowing the device to request a | 225 | * (i.e., a hardware mechanism allowing the device to request a change of |
190 | * change of its power state via a wake-up event, such as PCI PME) should | 226 | * its power state via an interrupt) should be enabled for it. |
191 | * be enabled for it. | ||
192 | * | 227 | * |
193 | * @runtime_resume: Put the device into the fully active state in response to a | 228 | * @runtime_resume: Put the device into the fully active state in response to a |
194 | * wake-up event generated by hardware or at the request of software. If | 229 | * wakeup event generated by hardware or at the request of software. If |
195 | * necessary, put the device into the full power state and restore its | 230 | * necessary, put the device into the full-power state and restore its |
196 | * registers, so that it is fully operational. | 231 | * registers, so that it is fully operational. |
197 | * | 232 | * |
198 | * @runtime_idle: Device appears to be inactive and it might be put into a low | 233 | * @runtime_idle: Device appears to be inactive and it might be put into a |
199 | * power state if all of the necessary conditions are satisfied. Check | 234 | * low-power state if all of the necessary conditions are satisfied. Check |
200 | * these conditions and handle the device as appropriate, possibly queueing | 235 | * these conditions and handle the device as appropriate, possibly queueing |
201 | * a suspend request for it. The return value is ignored by the PM core. | 236 | * a suspend request for it. The return value is ignored by the PM core. |
237 | * | ||
238 | * Refer to Documentation/power/runtime_pm.txt for more information about the | ||
239 | * role of the above callbacks in device runtime power management. | ||
240 | * | ||
202 | */ | 241 | */ |
203 | 242 | ||
204 | struct dev_pm_ops { | 243 | struct dev_pm_ops { |
@@ -447,6 +486,7 @@ struct dev_pm_info { | |||
447 | unsigned int async_suspend:1; | 486 | unsigned int async_suspend:1; |
448 | bool is_prepared:1; /* Owned by the PM core */ | 487 | bool is_prepared:1; /* Owned by the PM core */ |
449 | bool is_suspended:1; /* Ditto */ | 488 | bool is_suspended:1; /* Ditto */ |
489 | bool ignore_children:1; | ||
450 | spinlock_t lock; | 490 | spinlock_t lock; |
451 | #ifdef CONFIG_PM_SLEEP | 491 | #ifdef CONFIG_PM_SLEEP |
452 | struct list_head entry; | 492 | struct list_head entry; |
@@ -464,7 +504,6 @@ struct dev_pm_info { | |||
464 | atomic_t usage_count; | 504 | atomic_t usage_count; |
465 | atomic_t child_count; | 505 | atomic_t child_count; |
466 | unsigned int disable_depth:3; | 506 | unsigned int disable_depth:3; |
467 | unsigned int ignore_children:1; | ||
468 | unsigned int idle_notification:1; | 507 | unsigned int idle_notification:1; |
469 | unsigned int request_pending:1; | 508 | unsigned int request_pending:1; |
470 | unsigned int deferred_resume:1; | 509 | unsigned int deferred_resume:1; |
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index 70b284024d9e..d3085e72a0ee 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #define _LINUX_PM_RUNTIME_H | 10 | #define _LINUX_PM_RUNTIME_H |
11 | 11 | ||
12 | #include <linux/device.h> | 12 | #include <linux/device.h> |
13 | #include <linux/notifier.h> | ||
13 | #include <linux/pm.h> | 14 | #include <linux/pm.h> |
14 | 15 | ||
15 | #include <linux/jiffies.h> | 16 | #include <linux/jiffies.h> |
@@ -51,11 +52,6 @@ static inline bool pm_children_suspended(struct device *dev) | |||
51 | || !atomic_read(&dev->power.child_count); | 52 | || !atomic_read(&dev->power.child_count); |
52 | } | 53 | } |
53 | 54 | ||
54 | static inline void pm_suspend_ignore_children(struct device *dev, bool enable) | ||
55 | { | ||
56 | dev->power.ignore_children = enable; | ||
57 | } | ||
58 | |||
59 | static inline void pm_runtime_get_noresume(struct device *dev) | 55 | static inline void pm_runtime_get_noresume(struct device *dev) |
60 | { | 56 | { |
61 | atomic_inc(&dev->power.usage_count); | 57 | atomic_inc(&dev->power.usage_count); |
@@ -129,7 +125,6 @@ static inline void pm_runtime_allow(struct device *dev) {} | |||
129 | static inline void pm_runtime_forbid(struct device *dev) {} | 125 | static inline void pm_runtime_forbid(struct device *dev) {} |
130 | 126 | ||
131 | static inline bool pm_children_suspended(struct device *dev) { return false; } | 127 | static inline bool pm_children_suspended(struct device *dev) { return false; } |
132 | static inline void pm_suspend_ignore_children(struct device *dev, bool en) {} | ||
133 | static inline void pm_runtime_get_noresume(struct device *dev) {} | 128 | static inline void pm_runtime_get_noresume(struct device *dev) {} |
134 | static inline void pm_runtime_put_noidle(struct device *dev) {} | 129 | static inline void pm_runtime_put_noidle(struct device *dev) {} |
135 | static inline bool device_run_wake(struct device *dev) { return false; } | 130 | static inline bool device_run_wake(struct device *dev) { return false; } |
diff --git a/include/linux/pps-gpio.h b/include/linux/pps-gpio.h new file mode 100644 index 000000000000..0035abe41b9a --- /dev/null +++ b/include/linux/pps-gpio.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * pps-gpio.h -- PPS client for GPIOs | ||
3 | * | ||
4 | * | ||
5 | * Copyright (C) 2011 James Nuss <jamesnuss@nanometrics.ca> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | ||
21 | |||
22 | #ifndef _PPS_GPIO_H | ||
23 | #define _PPS_GPIO_H | ||
24 | |||
25 | struct pps_gpio_platform_data { | ||
26 | bool assert_falling_edge; | ||
27 | bool capture_clear; | ||
28 | unsigned int gpio_pin; | ||
29 | const char *gpio_label; | ||
30 | }; | ||
31 | |||
32 | #endif | ||
diff --git a/include/linux/printk.h b/include/linux/printk.h index 0101d55d9651..f0e22f75143f 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h | |||
@@ -82,22 +82,22 @@ struct va_format { | |||
82 | * Dummy printk for disabled debugging statements to use whilst maintaining | 82 | * Dummy printk for disabled debugging statements to use whilst maintaining |
83 | * gcc's format and side-effect checking. | 83 | * gcc's format and side-effect checking. |
84 | */ | 84 | */ |
85 | static inline __attribute__ ((format (printf, 1, 2))) | 85 | static inline __printf(1, 2) |
86 | int no_printk(const char *fmt, ...) | 86 | int no_printk(const char *fmt, ...) |
87 | { | 87 | { |
88 | return 0; | 88 | return 0; |
89 | } | 89 | } |
90 | 90 | ||
91 | extern asmlinkage __attribute__ ((format (printf, 1, 2))) | 91 | extern asmlinkage __printf(1, 2) |
92 | void early_printk(const char *fmt, ...); | 92 | void early_printk(const char *fmt, ...); |
93 | 93 | ||
94 | extern int printk_needs_cpu(int cpu); | 94 | extern int printk_needs_cpu(int cpu); |
95 | extern void printk_tick(void); | 95 | extern void printk_tick(void); |
96 | 96 | ||
97 | #ifdef CONFIG_PRINTK | 97 | #ifdef CONFIG_PRINTK |
98 | asmlinkage __attribute__ ((format (printf, 1, 0))) | 98 | asmlinkage __printf(1, 0) |
99 | int vprintk(const char *fmt, va_list args); | 99 | int vprintk(const char *fmt, va_list args); |
100 | asmlinkage __attribute__ ((format (printf, 1, 2))) __cold | 100 | asmlinkage __printf(1, 2) __cold |
101 | int printk(const char *fmt, ...); | 101 | int printk(const char *fmt, ...); |
102 | 102 | ||
103 | /* | 103 | /* |
@@ -117,12 +117,12 @@ extern int kptr_restrict; | |||
117 | void log_buf_kexec_setup(void); | 117 | void log_buf_kexec_setup(void); |
118 | void __init setup_log_buf(int early); | 118 | void __init setup_log_buf(int early); |
119 | #else | 119 | #else |
120 | static inline __attribute__ ((format (printf, 1, 0))) | 120 | static inline __printf(1, 0) |
121 | int vprintk(const char *s, va_list args) | 121 | int vprintk(const char *s, va_list args) |
122 | { | 122 | { |
123 | return 0; | 123 | return 0; |
124 | } | 124 | } |
125 | static inline __attribute__ ((format (printf, 1, 2))) __cold | 125 | static inline __printf(1, 2) __cold |
126 | int printk(const char *s, ...) | 126 | int printk(const char *s, ...) |
127 | { | 127 | { |
128 | return 0; | 128 | return 0; |
diff --git a/include/linux/pstore.h b/include/linux/pstore.h index cc03bbf5c4b8..2ca8cde5459d 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h | |||
@@ -32,15 +32,17 @@ enum pstore_type_id { | |||
32 | struct pstore_info { | 32 | struct pstore_info { |
33 | struct module *owner; | 33 | struct module *owner; |
34 | char *name; | 34 | char *name; |
35 | struct mutex buf_mutex; /* serialize access to 'buf' */ | 35 | spinlock_t buf_lock; /* serialize access to 'buf' */ |
36 | char *buf; | 36 | char *buf; |
37 | size_t bufsize; | 37 | size_t bufsize; |
38 | struct mutex read_mutex; /* serialize open/read/close */ | ||
38 | int (*open)(struct pstore_info *psi); | 39 | int (*open)(struct pstore_info *psi); |
39 | int (*close)(struct pstore_info *psi); | 40 | int (*close)(struct pstore_info *psi); |
40 | ssize_t (*read)(u64 *id, enum pstore_type_id *type, | 41 | ssize_t (*read)(u64 *id, enum pstore_type_id *type, |
41 | struct timespec *time, struct pstore_info *psi); | 42 | struct timespec *time, char **buf, |
42 | u64 (*write)(enum pstore_type_id type, unsigned int part, | 43 | struct pstore_info *psi); |
43 | size_t size, struct pstore_info *psi); | 44 | int (*write)(enum pstore_type_id type, u64 *id, |
45 | unsigned int part, size_t size, struct pstore_info *psi); | ||
44 | int (*erase)(enum pstore_type_id type, u64 id, | 46 | int (*erase)(enum pstore_type_id type, u64 id, |
45 | struct pstore_info *psi); | 47 | struct pstore_info *psi); |
46 | void *data; | 48 | void *data; |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 26f9e3612e0f..d93f95e6177c 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
@@ -31,7 +31,7 @@ static inline bool is_quota_modification(struct inode *inode, struct iattr *ia) | |||
31 | #define quota_error(sb, fmt, args...) \ | 31 | #define quota_error(sb, fmt, args...) \ |
32 | __quota_error((sb), __func__, fmt , ## args) | 32 | __quota_error((sb), __func__, fmt , ## args) |
33 | 33 | ||
34 | extern __attribute__((format (printf, 3, 4))) | 34 | extern __printf(3, 4) |
35 | void __quota_error(struct super_block *sb, const char *func, | 35 | void __quota_error(struct super_block *sb, const char *func, |
36 | const char *fmt, ...); | 36 | const char *fmt, ...); |
37 | 37 | ||
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 3daac2d8dc37..690276a642cf 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h | |||
@@ -15,8 +15,8 @@ | |||
15 | 15 | ||
16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
18 | #include <linux/module.h> | ||
19 | 18 | ||
19 | struct module; | ||
20 | struct i2c_client; | 20 | struct i2c_client; |
21 | struct spi_device; | 21 | struct spi_device; |
22 | 22 | ||
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h index 12a1aa04b720..52c89ae32f64 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #define __LINUX_REGULATOR_DRIVER_H_ | 16 | #define __LINUX_REGULATOR_DRIVER_H_ |
17 | 17 | ||
18 | #include <linux/device.h> | 18 | #include <linux/device.h> |
19 | #include <linux/notifier.h> | ||
19 | #include <linux/regulator/consumer.h> | 20 | #include <linux/regulator/consumer.h> |
20 | 21 | ||
21 | struct regulator_dev; | 22 | struct regulator_dev; |
diff --git a/include/linux/regulator/gpio-regulator.h b/include/linux/regulator/gpio-regulator.h new file mode 100644 index 000000000000..19fbd267406d --- /dev/null +++ b/include/linux/regulator/gpio-regulator.h | |||
@@ -0,0 +1,87 @@ | |||
1 | /* | ||
2 | * gpio-regulator.h | ||
3 | * | ||
4 | * Copyright 2011 Heiko Stuebner <heiko@sntech.de> | ||
5 | * | ||
6 | * based on fixed.h | ||
7 | * | ||
8 | * Copyright 2008 Wolfson Microelectronics PLC. | ||
9 | * | ||
10 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
11 | * | ||
12 | * Copyright (c) 2009 Nokia Corporation | ||
13 | * Roger Quadros <ext-roger.quadros@nokia.com> | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or | ||
16 | * modify it under the terms of the GNU General Public License as | ||
17 | * published by the Free Software Foundation; either version 2 of the | ||
18 | * License, or (at your option) any later version. | ||
19 | */ | ||
20 | |||
21 | #ifndef __REGULATOR_GPIO_H | ||
22 | #define __REGULATOR_GPIO_H | ||
23 | |||
24 | struct regulator_init_data; | ||
25 | |||
26 | enum regulator_type; | ||
27 | |||
28 | /** | ||
29 | * struct gpio_regulator_state - state description | ||
30 | * @value: microvolts or microamps | ||
31 | * @gpios: bitfield of gpio target-states for the value | ||
32 | * | ||
33 | * This structure describes a supported setting of the regulator | ||
34 | * and the necessary gpio-state to achieve it. | ||
35 | * | ||
36 | * The n-th bit in the bitfield describes the state of the n-th GPIO | ||
37 | * from the gpios-array defined in gpio_regulator_config below. | ||
38 | */ | ||
39 | struct gpio_regulator_state { | ||
40 | int value; | ||
41 | int gpios; | ||
42 | }; | ||
43 | |||
44 | /** | ||
45 | * struct gpio_regulator_config - config structure | ||
46 | * @supply_name: Name of the regulator supply | ||
47 | * @enable_gpio: GPIO to use for enable control | ||
48 | * set to -EINVAL if not used | ||
49 | * @enable_high: Polarity of enable GPIO | ||
50 | * 1 = Active high, 0 = Active low | ||
51 | * @enabled_at_boot: Whether regulator has been enabled at | ||
52 | * boot or not. 1 = Yes, 0 = No | ||
53 | * This is used to keep the regulator at | ||
54 | * the default state | ||
55 | * @startup_delay: Start-up time in microseconds | ||
56 | * @gpios: Array containing the gpios needed to control | ||
57 | * the setting of the regulator | ||
58 | * @nr_gpios: Number of gpios | ||
59 | * @states: Array of gpio_regulator_state entries describing | ||
60 | * the gpio state for specific voltages | ||
61 | * @nr_states: Number of states available | ||
62 | * @regulator_type: either REGULATOR_CURRENT or REGULATOR_VOLTAGE | ||
63 | * @init_data: regulator_init_data | ||
64 | * | ||
65 | * This structure contains gpio-voltage regulator configuration | ||
66 | * information that must be passed by platform code to the | ||
67 | * gpio-voltage regulator driver. | ||
68 | */ | ||
69 | struct gpio_regulator_config { | ||
70 | const char *supply_name; | ||
71 | |||
72 | int enable_gpio; | ||
73 | unsigned enable_high:1; | ||
74 | unsigned enabled_at_boot:1; | ||
75 | unsigned startup_delay; | ||
76 | |||
77 | struct gpio *gpios; | ||
78 | int nr_gpios; | ||
79 | |||
80 | struct gpio_regulator_state *states; | ||
81 | int nr_states; | ||
82 | |||
83 | enum regulator_type type; | ||
84 | struct regulator_init_data *init_data; | ||
85 | }; | ||
86 | |||
87 | #endif | ||
diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h index ce3127a75c88..f3f13fd5868f 100644 --- a/include/linux/regulator/machine.h +++ b/include/linux/regulator/machine.h | |||
@@ -95,7 +95,7 @@ struct regulator_state { | |||
95 | */ | 95 | */ |
96 | struct regulation_constraints { | 96 | struct regulation_constraints { |
97 | 97 | ||
98 | char *name; | 98 | const char *name; |
99 | 99 | ||
100 | /* voltage output range (inclusive) - for voltage control */ | 100 | /* voltage output range (inclusive) - for voltage control */ |
101 | int min_uV; | 101 | int min_uV; |
diff --git a/include/linux/rio_ids.h b/include/linux/rio_ids.h index 0cee0152aca9..b66d13d1bdc0 100644 --- a/include/linux/rio_ids.h +++ b/include/linux/rio_ids.h | |||
@@ -39,5 +39,6 @@ | |||
39 | #define RIO_DID_IDTCPS1616 0x0379 | 39 | #define RIO_DID_IDTCPS1616 0x0379 |
40 | #define RIO_DID_IDTVPS1616 0x0377 | 40 | #define RIO_DID_IDTVPS1616 0x0377 |
41 | #define RIO_DID_IDTSPS1616 0x0378 | 41 | #define RIO_DID_IDTSPS1616 0x0378 |
42 | #define RIO_DID_TSI721 0x80ab | ||
42 | 43 | ||
43 | #endif /* LINUX_RIO_IDS_H */ | 44 | #endif /* LINUX_RIO_IDS_H */ |
diff --git a/include/linux/rtc/sirfsoc_rtciobrg.h b/include/linux/rtc/sirfsoc_rtciobrg.h new file mode 100644 index 000000000000..2c92e1c8e055 --- /dev/null +++ b/include/linux/rtc/sirfsoc_rtciobrg.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * RTC I/O Bridge interfaces for CSR SiRFprimaII | ||
3 | * ARM access the registers of SYSRTC, GPSRTC and PWRC through this module | ||
4 | * | ||
5 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
6 | * | ||
7 | * Licensed under GPLv2 or later. | ||
8 | */ | ||
9 | #ifndef _SIRFSOC_RTC_IOBRG_H_ | ||
10 | #define _SIRFSOC_RTC_IOBRG_H_ | ||
11 | |||
12 | extern void sirfsoc_rtc_iobrg_besyncing(void); | ||
13 | |||
14 | extern u32 sirfsoc_rtc_iobrg_readl(u32 addr); | ||
15 | |||
16 | extern void sirfsoc_rtc_iobrg_writel(u32 val, u32 addr); | ||
17 | |||
18 | #endif | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index e8acce717d2a..1c4f3e9b9bc5 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1521,7 +1521,13 @@ struct task_struct { | |||
1521 | #ifdef CONFIG_FAULT_INJECTION | 1521 | #ifdef CONFIG_FAULT_INJECTION |
1522 | int make_it_fail; | 1522 | int make_it_fail; |
1523 | #endif | 1523 | #endif |
1524 | struct prop_local_single dirties; | 1524 | /* |
1525 | * when (nr_dirtied >= nr_dirtied_pause), it's time to call | ||
1526 | * balance_dirty_pages() for some dirty throttling pause | ||
1527 | */ | ||
1528 | int nr_dirtied; | ||
1529 | int nr_dirtied_pause; | ||
1530 | |||
1525 | #ifdef CONFIG_LATENCYTOP | 1531 | #ifdef CONFIG_LATENCYTOP |
1526 | int latency_record_count; | 1532 | int latency_record_count; |
1527 | struct latency_record latency_record[LT_SAVECOUNT]; | 1533 | struct latency_record latency_record[LT_SAVECOUNT]; |
diff --git a/include/linux/sem.h b/include/linux/sem.h index 1feb2de2ee57..10d6b226afc5 100644 --- a/include/linux/sem.h +++ b/include/linux/sem.h | |||
@@ -83,13 +83,6 @@ struct seminfo { | |||
83 | 83 | ||
84 | struct task_struct; | 84 | struct task_struct; |
85 | 85 | ||
86 | /* One semaphore structure for each semaphore in the system. */ | ||
87 | struct sem { | ||
88 | int semval; /* current value */ | ||
89 | int sempid; /* pid of last operation */ | ||
90 | struct list_head sem_pending; /* pending single-sop operations */ | ||
91 | }; | ||
92 | |||
93 | /* One sem_array data structure for each set of semaphores in the system. */ | 86 | /* One sem_array data structure for each set of semaphores in the system. */ |
94 | struct sem_array { | 87 | struct sem_array { |
95 | struct kern_ipc_perm ____cacheline_aligned_in_smp | 88 | struct kern_ipc_perm ____cacheline_aligned_in_smp |
@@ -103,51 +96,21 @@ struct sem_array { | |||
103 | int complex_count; /* pending complex operations */ | 96 | int complex_count; /* pending complex operations */ |
104 | }; | 97 | }; |
105 | 98 | ||
106 | /* One queue for each sleeping process in the system. */ | 99 | #ifdef CONFIG_SYSVIPC |
107 | struct sem_queue { | ||
108 | struct list_head simple_list; /* queue of pending operations */ | ||
109 | struct list_head list; /* queue of pending operations */ | ||
110 | struct task_struct *sleeper; /* this process */ | ||
111 | struct sem_undo *undo; /* undo structure */ | ||
112 | int pid; /* process id of requesting process */ | ||
113 | int status; /* completion status of operation */ | ||
114 | struct sembuf *sops; /* array of pending operations */ | ||
115 | int nsops; /* number of operations */ | ||
116 | int alter; /* does the operation alter the array? */ | ||
117 | }; | ||
118 | |||
119 | /* Each task has a list of undo requests. They are executed automatically | ||
120 | * when the process exits. | ||
121 | */ | ||
122 | struct sem_undo { | ||
123 | struct list_head list_proc; /* per-process list: all undos from one process. */ | ||
124 | /* rcu protected */ | ||
125 | struct rcu_head rcu; /* rcu struct for sem_undo() */ | ||
126 | struct sem_undo_list *ulp; /* sem_undo_list for the process */ | ||
127 | struct list_head list_id; /* per semaphore array list: all undos for one array */ | ||
128 | int semid; /* semaphore set identifier */ | ||
129 | short * semadj; /* array of adjustments, one per semaphore */ | ||
130 | }; | ||
131 | |||
132 | /* sem_undo_list controls shared access to the list of sem_undo structures | ||
133 | * that may be shared among all a CLONE_SYSVSEM task group. | ||
134 | */ | ||
135 | struct sem_undo_list { | ||
136 | atomic_t refcnt; | ||
137 | spinlock_t lock; | ||
138 | struct list_head list_proc; | ||
139 | }; | ||
140 | 100 | ||
141 | struct sysv_sem { | 101 | struct sysv_sem { |
142 | struct sem_undo_list *undo_list; | 102 | struct sem_undo_list *undo_list; |
143 | }; | 103 | }; |
144 | 104 | ||
145 | #ifdef CONFIG_SYSVIPC | ||
146 | |||
147 | extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); | 105 | extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); |
148 | extern void exit_sem(struct task_struct *tsk); | 106 | extern void exit_sem(struct task_struct *tsk); |
149 | 107 | ||
150 | #else | 108 | #else |
109 | |||
110 | struct sysv_sem { | ||
111 | /* empty */ | ||
112 | }; | ||
113 | |||
151 | static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk) | 114 | static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk) |
152 | { | 115 | { |
153 | return 0; | 116 | return 0; |
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index be720cd2038d..0b69a4684216 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h | |||
@@ -84,8 +84,7 @@ int seq_putc(struct seq_file *m, char c); | |||
84 | int seq_puts(struct seq_file *m, const char *s); | 84 | int seq_puts(struct seq_file *m, const char *s); |
85 | int seq_write(struct seq_file *seq, const void *data, size_t len); | 85 | int seq_write(struct seq_file *seq, const void *data, size_t len); |
86 | 86 | ||
87 | int seq_printf(struct seq_file *, const char *, ...) | 87 | __printf(2, 3) int seq_printf(struct seq_file *, const char *, ...); |
88 | __attribute__ ((format (printf,2,3))); | ||
89 | 88 | ||
90 | int seq_path(struct seq_file *, struct path *, char *); | 89 | int seq_path(struct seq_file *, struct path *, char *); |
91 | int seq_dentry(struct seq_file *, struct dentry *, char *); | 90 | int seq_dentry(struct seq_file *, struct dentry *, char *); |
diff --git a/include/linux/serial.h b/include/linux/serial.h index 97ff8e27a6cc..3d86517fe7d5 100644 --- a/include/linux/serial.h +++ b/include/linux/serial.h | |||
@@ -207,13 +207,15 @@ struct serial_icounter_struct { | |||
207 | 207 | ||
208 | struct serial_rs485 { | 208 | struct serial_rs485 { |
209 | __u32 flags; /* RS485 feature flags */ | 209 | __u32 flags; /* RS485 feature flags */ |
210 | #define SER_RS485_ENABLED (1 << 0) | 210 | #define SER_RS485_ENABLED (1 << 0) /* If enabled */ |
211 | #define SER_RS485_RTS_ON_SEND (1 << 1) | 211 | #define SER_RS485_RTS_ON_SEND (1 << 1) /* Logical level for |
212 | #define SER_RS485_RTS_AFTER_SEND (1 << 2) | 212 | RTS pin when |
213 | #define SER_RS485_RTS_BEFORE_SEND (1 << 3) | 213 | sending */ |
214 | #define SER_RS485_RTS_AFTER_SEND (1 << 2) /* Logical level for | ||
215 | RTS pin after sent*/ | ||
214 | #define SER_RS485_RX_DURING_TX (1 << 4) | 216 | #define SER_RS485_RX_DURING_TX (1 << 4) |
215 | __u32 delay_rts_before_send; /* Milliseconds */ | 217 | __u32 delay_rts_before_send; /* Delay before send (milliseconds) */ |
216 | __u32 delay_rts_after_send; /* Milliseconds */ | 218 | __u32 delay_rts_after_send; /* Delay after send (milliseconds) */ |
217 | __u32 padding[5]; /* Memory is cheap, new structs | 219 | __u32 padding[5]; /* Memory is cheap, new structs |
218 | are a royal PITA .. */ | 220 | are a royal PITA .. */ |
219 | }; | 221 | }; |
diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h index 8bffe9ae2ca0..369273a52679 100644 --- a/include/linux/serial_sci.h +++ b/include/linux/serial_sci.h | |||
@@ -67,6 +67,7 @@ enum { | |||
67 | SCIx_IRDA_REGTYPE, | 67 | SCIx_IRDA_REGTYPE, |
68 | SCIx_SCIFA_REGTYPE, | 68 | SCIx_SCIFA_REGTYPE, |
69 | SCIx_SCIFB_REGTYPE, | 69 | SCIx_SCIFB_REGTYPE, |
70 | SCIx_SH2_SCIF_FIFODATA_REGTYPE, | ||
70 | SCIx_SH3_SCIF_REGTYPE, | 71 | SCIx_SH3_SCIF_REGTYPE, |
71 | SCIx_SH4_SCIF_REGTYPE, | 72 | SCIx_SH4_SCIF_REGTYPE, |
72 | SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 73 | SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
@@ -131,8 +132,6 @@ struct plat_sci_port { | |||
131 | 132 | ||
132 | struct plat_sci_port_ops *ops; | 133 | struct plat_sci_port_ops *ops; |
133 | 134 | ||
134 | struct device *dma_dev; | ||
135 | |||
136 | unsigned int dma_slave_tx; | 135 | unsigned int dma_slave_tx; |
137 | unsigned int dma_slave_rx; | 136 | unsigned int dma_slave_rx; |
138 | }; | 137 | }; |
diff --git a/include/linux/serio.h b/include/linux/serio.h index be7dfb0f12d0..ca82861b0e46 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
@@ -79,19 +79,21 @@ void serio_reconnect(struct serio *serio); | |||
79 | irqreturn_t serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags); | 79 | irqreturn_t serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags); |
80 | 80 | ||
81 | void __serio_register_port(struct serio *serio, struct module *owner); | 81 | void __serio_register_port(struct serio *serio, struct module *owner); |
82 | static inline void serio_register_port(struct serio *serio) | 82 | |
83 | { | 83 | /* use a define to avoid include chaining to get THIS_MODULE */ |
84 | __serio_register_port(serio, THIS_MODULE); | 84 | #define serio_register_port(serio) \ |
85 | } | 85 | __serio_register_port(serio, THIS_MODULE) |
86 | 86 | ||
87 | void serio_unregister_port(struct serio *serio); | 87 | void serio_unregister_port(struct serio *serio); |
88 | void serio_unregister_child_port(struct serio *serio); | 88 | void serio_unregister_child_port(struct serio *serio); |
89 | 89 | ||
90 | int __serio_register_driver(struct serio_driver *drv, struct module *owner, const char *mod_name); | 90 | int __must_check __serio_register_driver(struct serio_driver *drv, |
91 | static inline int __must_check serio_register_driver(struct serio_driver *drv) | 91 | struct module *owner, const char *mod_name); |
92 | { | 92 | |
93 | return __serio_register_driver(drv, THIS_MODULE, KBUILD_MODNAME); | 93 | /* use a define to avoid include chaining to get THIS_MODULE & friends */ |
94 | } | 94 | #define serio_register_driver(drv) \ |
95 | __serio_register_driver(drv, THIS_MODULE, KBUILD_MODNAME) | ||
96 | |||
95 | void serio_unregister_driver(struct serio_driver *drv); | 97 | void serio_unregister_driver(struct serio_driver *drv); |
96 | 98 | ||
97 | static inline int serio_write(struct serio *serio, unsigned char data) | 99 | static inline int serio_write(struct serio *serio, unsigned char data) |
diff --git a/include/linux/sh_clk.h b/include/linux/sh_clk.h index 3ccf18648d0a..a20831cf336a 100644 --- a/include/linux/sh_clk.h +++ b/include/linux/sh_clk.h | |||
@@ -52,7 +52,6 @@ struct clk { | |||
52 | 52 | ||
53 | unsigned long arch_flags; | 53 | unsigned long arch_flags; |
54 | void *priv; | 54 | void *priv; |
55 | struct dentry *dentry; | ||
56 | struct clk_mapping *mapping; | 55 | struct clk_mapping *mapping; |
57 | struct cpufreq_frequency_table *freq_table; | 56 | struct cpufreq_frequency_table *freq_table; |
58 | unsigned int nr_freqs; | 57 | unsigned int nr_freqs; |
@@ -94,6 +93,9 @@ int clk_rate_table_find(struct clk *clk, | |||
94 | long clk_rate_div_range_round(struct clk *clk, unsigned int div_min, | 93 | long clk_rate_div_range_round(struct clk *clk, unsigned int div_min, |
95 | unsigned int div_max, unsigned long rate); | 94 | unsigned int div_max, unsigned long rate); |
96 | 95 | ||
96 | long clk_rate_mult_range_round(struct clk *clk, unsigned int mult_min, | ||
97 | unsigned int mult_max, unsigned long rate); | ||
98 | |||
97 | long clk_round_parent(struct clk *clk, unsigned long target, | 99 | long clk_round_parent(struct clk *clk, unsigned long target, |
98 | unsigned long *best_freq, unsigned long *parent_freq, | 100 | unsigned long *best_freq, unsigned long *parent_freq, |
99 | unsigned int div_min, unsigned int div_max); | 101 | unsigned int div_min, unsigned int div_max); |
diff --git a/include/linux/sh_pfc.h b/include/linux/sh_pfc.h index 30cae70874f4..8446789216e5 100644 --- a/include/linux/sh_pfc.h +++ b/include/linux/sh_pfc.h | |||
@@ -61,6 +61,14 @@ struct pinmux_data_reg { | |||
61 | .reg = r, .reg_width = r_width, \ | 61 | .reg = r, .reg_width = r_width, \ |
62 | .enum_ids = (pinmux_enum_t [r_width]) \ | 62 | .enum_ids = (pinmux_enum_t [r_width]) \ |
63 | 63 | ||
64 | struct pinmux_irq { | ||
65 | int irq; | ||
66 | pinmux_enum_t *enum_ids; | ||
67 | }; | ||
68 | |||
69 | #define PINMUX_IRQ(irq_nr, ids...) \ | ||
70 | { .irq = irq_nr, .enum_ids = (pinmux_enum_t []) { ids, 0 } } \ | ||
71 | |||
64 | struct pinmux_range { | 72 | struct pinmux_range { |
65 | pinmux_enum_t begin; | 73 | pinmux_enum_t begin; |
66 | pinmux_enum_t end; | 74 | pinmux_enum_t end; |
@@ -87,11 +95,89 @@ struct pinmux_info { | |||
87 | pinmux_enum_t *gpio_data; | 95 | pinmux_enum_t *gpio_data; |
88 | unsigned int gpio_data_size; | 96 | unsigned int gpio_data_size; |
89 | 97 | ||
90 | unsigned long *gpio_in_use; | 98 | struct pinmux_irq *gpio_irq; |
99 | unsigned int gpio_irq_size; | ||
100 | |||
91 | struct gpio_chip chip; | 101 | struct gpio_chip chip; |
92 | }; | 102 | }; |
93 | 103 | ||
94 | int register_pinmux(struct pinmux_info *pip); | 104 | int register_pinmux(struct pinmux_info *pip); |
95 | int unregister_pinmux(struct pinmux_info *pip); | 105 | int unregister_pinmux(struct pinmux_info *pip); |
96 | 106 | ||
107 | /* helper macro for port */ | ||
108 | #define PORT_1(fn, pfx, sfx) fn(pfx, sfx) | ||
109 | |||
110 | #define PORT_10(fn, pfx, sfx) \ | ||
111 | PORT_1(fn, pfx##0, sfx), PORT_1(fn, pfx##1, sfx), \ | ||
112 | PORT_1(fn, pfx##2, sfx), PORT_1(fn, pfx##3, sfx), \ | ||
113 | PORT_1(fn, pfx##4, sfx), PORT_1(fn, pfx##5, sfx), \ | ||
114 | PORT_1(fn, pfx##6, sfx), PORT_1(fn, pfx##7, sfx), \ | ||
115 | PORT_1(fn, pfx##8, sfx), PORT_1(fn, pfx##9, sfx) | ||
116 | |||
117 | #define PORT_90(fn, pfx, sfx) \ | ||
118 | PORT_10(fn, pfx##1, sfx), PORT_10(fn, pfx##2, sfx), \ | ||
119 | PORT_10(fn, pfx##3, sfx), PORT_10(fn, pfx##4, sfx), \ | ||
120 | PORT_10(fn, pfx##5, sfx), PORT_10(fn, pfx##6, sfx), \ | ||
121 | PORT_10(fn, pfx##7, sfx), PORT_10(fn, pfx##8, sfx), \ | ||
122 | PORT_10(fn, pfx##9, sfx) | ||
123 | |||
124 | #define _PORT_ALL(pfx, sfx) pfx##_##sfx | ||
125 | #define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA) | ||
126 | #define PORT_ALL(str) CPU_ALL_PORT(_PORT_ALL, PORT, str) | ||
127 | #define GPIO_PORT_ALL() CPU_ALL_PORT(_GPIO_PORT, , unused) | ||
128 | #define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK) | ||
129 | |||
130 | /* helper macro for pinmux_enum_t */ | ||
131 | #define PORT_DATA_I(nr) \ | ||
132 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN) | ||
133 | |||
134 | #define PORT_DATA_I_PD(nr) \ | ||
135 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
136 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
137 | |||
138 | #define PORT_DATA_I_PU(nr) \ | ||
139 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
140 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
141 | |||
142 | #define PORT_DATA_I_PU_PD(nr) \ | ||
143 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, \ | ||
144 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
145 | |||
146 | #define PORT_DATA_O(nr) \ | ||
147 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT) | ||
148 | |||
149 | #define PORT_DATA_IO(nr) \ | ||
150 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
151 | PORT##nr##_IN) | ||
152 | |||
153 | #define PORT_DATA_IO_PD(nr) \ | ||
154 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
155 | PORT##nr##_IN, PORT##nr##_IN_PD) | ||
156 | |||
157 | #define PORT_DATA_IO_PU(nr) \ | ||
158 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
159 | PORT##nr##_IN, PORT##nr##_IN_PU) | ||
160 | |||
161 | #define PORT_DATA_IO_PU_PD(nr) \ | ||
162 | PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_OUT, \ | ||
163 | PORT##nr##_IN, PORT##nr##_IN_PD, PORT##nr##_IN_PU) | ||
164 | |||
165 | /* helper macro for top 4 bits in PORTnCR */ | ||
166 | #define _PCRH(in, in_pd, in_pu, out) \ | ||
167 | 0, (out), (in), 0, \ | ||
168 | 0, 0, 0, 0, \ | ||
169 | 0, 0, (in_pd), 0, \ | ||
170 | 0, 0, (in_pu), 0 | ||
171 | |||
172 | #define PORTCR(nr, reg) \ | ||
173 | { \ | ||
174 | PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) { \ | ||
175 | _PCRH(PORT##nr##_IN, PORT##nr##_IN_PD, \ | ||
176 | PORT##nr##_IN_PU, PORT##nr##_OUT), \ | ||
177 | PORT##nr##_FN0, PORT##nr##_FN1, \ | ||
178 | PORT##nr##_FN2, PORT##nr##_FN3, \ | ||
179 | PORT##nr##_FN4, PORT##nr##_FN5, \ | ||
180 | PORT##nr##_FN6, PORT##nr##_FN7 } \ | ||
181 | } | ||
182 | |||
97 | #endif /* __SH_PFC_H */ | 183 | #endif /* __SH_PFC_H */ |
diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h index 790651b4e5ba..07ceb97d53fa 100644 --- a/include/linux/shrinker.h +++ b/include/linux/shrinker.h | |||
@@ -20,6 +20,7 @@ struct shrink_control { | |||
20 | * 'nr_to_scan' entries and attempt to free them up. It should return | 20 | * 'nr_to_scan' entries and attempt to free them up. It should return |
21 | * the number of objects which remain in the cache. If it returns -1, it means | 21 | * the number of objects which remain in the cache. If it returns -1, it means |
22 | * it cannot do any scanning at this time (eg. there is a risk of deadlock). | 22 | * it cannot do any scanning at this time (eg. there is a risk of deadlock). |
23 | * The callback must not return -1 if nr_to_scan is zero. | ||
23 | * | 24 | * |
24 | * The 'gfpmask' refers to the allocation we are currently trying to | 25 | * The 'gfpmask' refers to the allocation we are currently trying to |
25 | * fulfil. | 26 | * fulfil. |
@@ -34,7 +35,7 @@ struct shrinker { | |||
34 | 35 | ||
35 | /* These are for internal use */ | 36 | /* These are for internal use */ |
36 | struct list_head list; | 37 | struct list_head list; |
37 | long nr; /* objs pending delete */ | 38 | atomic_long_t nr_in_batch; /* objs pending delete */ |
38 | }; | 39 | }; |
39 | #define DEFAULT_SEEKS 2 /* A good number if you don't know better. */ | 40 | #define DEFAULT_SEEKS 2 /* A good number if you don't know better. */ |
40 | extern void register_shrinker(struct shrinker *); | 41 | extern void register_shrinker(struct shrinker *); |
diff --git a/include/linux/sigma.h b/include/linux/sigma.h index e2accb3164d8..d0de882c0d96 100644 --- a/include/linux/sigma.h +++ b/include/linux/sigma.h | |||
@@ -24,7 +24,7 @@ struct sigma_firmware { | |||
24 | struct sigma_firmware_header { | 24 | struct sigma_firmware_header { |
25 | unsigned char magic[7]; | 25 | unsigned char magic[7]; |
26 | u8 version; | 26 | u8 version; |
27 | u32 crc; | 27 | __le32 crc; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | enum { | 30 | enum { |
@@ -40,19 +40,14 @@ enum { | |||
40 | struct sigma_action { | 40 | struct sigma_action { |
41 | u8 instr; | 41 | u8 instr; |
42 | u8 len_hi; | 42 | u8 len_hi; |
43 | u16 len; | 43 | __le16 len; |
44 | u16 addr; | 44 | __be16 addr; |
45 | unsigned char payload[]; | 45 | unsigned char payload[]; |
46 | }; | 46 | }; |
47 | 47 | ||
48 | static inline u32 sigma_action_len(struct sigma_action *sa) | 48 | static inline u32 sigma_action_len(struct sigma_action *sa) |
49 | { | 49 | { |
50 | return (sa->len_hi << 16) | sa->len; | 50 | return (sa->len_hi << 16) | le16_to_cpu(sa->len); |
51 | } | ||
52 | |||
53 | static inline size_t sigma_action_size(struct sigma_action *sa, u32 payload_len) | ||
54 | { | ||
55 | return sizeof(*sa) + payload_len + (payload_len % 2); | ||
56 | } | 51 | } |
57 | 52 | ||
58 | extern int process_sigma_firmware(struct i2c_client *client, const char *name); | 53 | extern int process_sigma_firmware(struct i2c_client *client, const char *name); |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 6a6b352326d7..fe864885c1ed 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -1806,12 +1806,12 @@ static inline void skb_frag_set_page(struct sk_buff *skb, int f, | |||
1806 | 1806 | ||
1807 | /** | 1807 | /** |
1808 | * skb_frag_dma_map - maps a paged fragment via the DMA API | 1808 | * skb_frag_dma_map - maps a paged fragment via the DMA API |
1809 | * @device: the device to map the fragment to | 1809 | * @dev: the device to map the fragment to |
1810 | * @frag: the paged fragment to map | 1810 | * @frag: the paged fragment to map |
1811 | * @offset: the offset within the fragment (starting at the | 1811 | * @offset: the offset within the fragment (starting at the |
1812 | * fragment's own offset) | 1812 | * fragment's own offset) |
1813 | * @size: the number of bytes to map | 1813 | * @size: the number of bytes to map |
1814 | * @direction: the direction of the mapping (%PCI_DMA_*) | 1814 | * @dir: the direction of the mapping (%PCI_DMA_*) |
1815 | * | 1815 | * |
1816 | * Maps the page associated with @frag to @device. | 1816 | * Maps the page associated with @frag to @device. |
1817 | */ | 1817 | */ |
diff --git a/include/linux/spi/l4f00242t03.h b/include/linux/spi/l4f00242t03.h index aee1dbda4edc..bc8677c8eba9 100644 --- a/include/linux/spi/l4f00242t03.h +++ b/include/linux/spi/l4f00242t03.h | |||
@@ -24,8 +24,6 @@ | |||
24 | struct l4f00242t03_pdata { | 24 | struct l4f00242t03_pdata { |
25 | unsigned int reset_gpio; | 25 | unsigned int reset_gpio; |
26 | unsigned int data_enable_gpio; | 26 | unsigned int data_enable_gpio; |
27 | const char *io_supply; /* will be set to 1.8 V */ | ||
28 | const char *core_supply; /* will be set to 2.8 V */ | ||
29 | }; | 27 | }; |
30 | 28 | ||
31 | #endif /* _INCLUDE_LINUX_SPI_L4F00242T03_H_ */ | 29 | #endif /* _INCLUDE_LINUX_SPI_L4F00242T03_H_ */ |
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index f10ed7b4a714..061e560251b4 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -231,10 +231,9 @@ struct ssb_driver { | |||
231 | #define drv_to_ssb_drv(_drv) container_of(_drv, struct ssb_driver, drv) | 231 | #define drv_to_ssb_drv(_drv) container_of(_drv, struct ssb_driver, drv) |
232 | 232 | ||
233 | extern int __ssb_driver_register(struct ssb_driver *drv, struct module *owner); | 233 | extern int __ssb_driver_register(struct ssb_driver *drv, struct module *owner); |
234 | static inline int ssb_driver_register(struct ssb_driver *drv) | 234 | #define ssb_driver_register(drv) \ |
235 | { | 235 | __ssb_driver_register(drv, THIS_MODULE) |
236 | return __ssb_driver_register(drv, THIS_MODULE); | 236 | |
237 | } | ||
238 | extern void ssb_driver_unregister(struct ssb_driver *drv); | 237 | extern void ssb_driver_unregister(struct ssb_driver *drv); |
239 | 238 | ||
240 | 239 | ||
diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h index 2d04ea916760..c170edc3bf5f 100644 --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/cpu.h> | 4 | #include <linux/cpu.h> |
5 | #include <linux/cpumask.h> | 5 | #include <linux/cpumask.h> |
6 | #include <linux/smp.h> | ||
6 | #include <linux/list.h> | 7 | #include <linux/list.h> |
7 | #include <asm/system.h> | 8 | #include <asm/system.h> |
8 | 9 | ||
diff --git a/include/linux/string.h b/include/linux/string.h index a176db2f2c85..e033564f10ba 100644 --- a/include/linux/string.h +++ b/include/linux/string.h | |||
@@ -114,6 +114,7 @@ extern int memcmp(const void *,const void *,__kernel_size_t); | |||
114 | #ifndef __HAVE_ARCH_MEMCHR | 114 | #ifndef __HAVE_ARCH_MEMCHR |
115 | extern void * memchr(const void *,int,__kernel_size_t); | 115 | extern void * memchr(const void *,int,__kernel_size_t); |
116 | #endif | 116 | #endif |
117 | void *memchr_inv(const void *s, int c, size_t n); | ||
117 | 118 | ||
118 | extern char *kstrdup(const char *s, gfp_t gfp); | 119 | extern char *kstrdup(const char *s, gfp_t gfp); |
119 | extern char *kstrndup(const char *s, size_t len, gfp_t gfp); | 120 | extern char *kstrndup(const char *s, size_t len, gfp_t gfp); |
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h index 492486a74484..3d8f9c44e27d 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h | |||
@@ -136,6 +136,8 @@ void rpc_shutdown_client(struct rpc_clnt *); | |||
136 | void rpc_release_client(struct rpc_clnt *); | 136 | void rpc_release_client(struct rpc_clnt *); |
137 | void rpc_task_release_client(struct rpc_task *); | 137 | void rpc_task_release_client(struct rpc_task *); |
138 | 138 | ||
139 | int rpcb_create_local(void); | ||
140 | void rpcb_put_local(void); | ||
139 | int rpcb_register(u32, u32, int, unsigned short); | 141 | int rpcb_register(u32, u32, int, unsigned short); |
140 | int rpcb_v4_register(const u32 program, const u32 version, | 142 | int rpcb_v4_register(const u32 program, const u32 version, |
141 | const struct sockaddr *address, | 143 | const struct sockaddr *address, |
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index d8d5d93071b3..35b37b1e9299 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h | |||
@@ -413,6 +413,7 @@ struct svc_procedure { | |||
413 | /* | 413 | /* |
414 | * Function prototypes. | 414 | * Function prototypes. |
415 | */ | 415 | */ |
416 | void svc_rpcb_cleanup(struct svc_serv *serv); | ||
416 | struct svc_serv *svc_create(struct svc_program *, unsigned int, | 417 | struct svc_serv *svc_create(struct svc_program *, unsigned int, |
417 | void (*shutdown)(struct svc_serv *)); | 418 | void (*shutdown)(struct svc_serv *)); |
418 | struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, | 419 | struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, |
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index 7ad9751a0d87..8620f79658d4 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h | |||
@@ -8,7 +8,8 @@ | |||
8 | #define SUNRPC_SVC_XPRT_H | 8 | #define SUNRPC_SVC_XPRT_H |
9 | 9 | ||
10 | #include <linux/sunrpc/svc.h> | 10 | #include <linux/sunrpc/svc.h> |
11 | #include <linux/module.h> | 11 | |
12 | struct module; | ||
12 | 13 | ||
13 | struct svc_xprt_ops { | 14 | struct svc_xprt_ops { |
14 | struct svc_xprt *(*xpo_create)(struct svc_serv *, | 15 | struct svc_xprt *(*xpo_create)(struct svc_serv *, |
diff --git a/include/linux/swap.h b/include/linux/swap.h index c71f84bb62ec..1e22e126d2ac 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
@@ -243,15 +243,10 @@ static inline void lru_cache_add_file(struct page *page) | |||
243 | __lru_cache_add(page, LRU_INACTIVE_FILE); | 243 | __lru_cache_add(page, LRU_INACTIVE_FILE); |
244 | } | 244 | } |
245 | 245 | ||
246 | /* LRU Isolation modes. */ | ||
247 | #define ISOLATE_INACTIVE 0 /* Isolate inactive pages. */ | ||
248 | #define ISOLATE_ACTIVE 1 /* Isolate active pages. */ | ||
249 | #define ISOLATE_BOTH 2 /* Isolate both active and inactive pages. */ | ||
250 | |||
251 | /* linux/mm/vmscan.c */ | 246 | /* linux/mm/vmscan.c */ |
252 | extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, | 247 | extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, |
253 | gfp_t gfp_mask, nodemask_t *mask); | 248 | gfp_t gfp_mask, nodemask_t *mask); |
254 | extern int __isolate_lru_page(struct page *page, int mode, int file); | 249 | extern int __isolate_lru_page(struct page *page, isolate_mode_t mode, int file); |
255 | extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, | 250 | extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, |
256 | gfp_t gfp_mask, bool noswap); | 251 | gfp_t gfp_mask, bool noswap); |
257 | extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, | 252 | extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 1ff0ec2a5e8d..86a24b1166d1 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -844,4 +844,17 @@ asmlinkage long sys_open_by_handle_at(int mountdirfd, | |||
844 | struct file_handle __user *handle, | 844 | struct file_handle __user *handle, |
845 | int flags); | 845 | int flags); |
846 | asmlinkage long sys_setns(int fd, int nstype); | 846 | asmlinkage long sys_setns(int fd, int nstype); |
847 | asmlinkage long sys_process_vm_readv(pid_t pid, | ||
848 | const struct iovec __user *lvec, | ||
849 | unsigned long liovcnt, | ||
850 | const struct iovec __user *rvec, | ||
851 | unsigned long riovcnt, | ||
852 | unsigned long flags); | ||
853 | asmlinkage long sys_process_vm_writev(pid_t pid, | ||
854 | const struct iovec __user *lvec, | ||
855 | unsigned long liovcnt, | ||
856 | const struct iovec __user *rvec, | ||
857 | unsigned long riovcnt, | ||
858 | unsigned long flags); | ||
859 | |||
847 | #endif | 860 | #endif |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 9a1ec10fd504..703cfa33a3ca 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -931,6 +931,7 @@ enum | |||
931 | #ifdef __KERNEL__ | 931 | #ifdef __KERNEL__ |
932 | #include <linux/list.h> | 932 | #include <linux/list.h> |
933 | #include <linux/rcupdate.h> | 933 | #include <linux/rcupdate.h> |
934 | #include <linux/wait.h> | ||
934 | 935 | ||
935 | /* For the /proc/sys support */ | 936 | /* For the /proc/sys support */ |
936 | struct ctl_table; | 937 | struct ctl_table; |
@@ -1011,6 +1012,26 @@ extern int proc_do_large_bitmap(struct ctl_table *, int, | |||
1011 | * cover common cases. | 1012 | * cover common cases. |
1012 | */ | 1013 | */ |
1013 | 1014 | ||
1015 | /* Support for userspace poll() to watch for changes */ | ||
1016 | struct ctl_table_poll { | ||
1017 | atomic_t event; | ||
1018 | wait_queue_head_t wait; | ||
1019 | }; | ||
1020 | |||
1021 | static inline void *proc_sys_poll_event(struct ctl_table_poll *poll) | ||
1022 | { | ||
1023 | return (void *)(unsigned long)atomic_read(&poll->event); | ||
1024 | } | ||
1025 | |||
1026 | void proc_sys_poll_notify(struct ctl_table_poll *poll); | ||
1027 | |||
1028 | #define __CTL_TABLE_POLL_INITIALIZER(name) { \ | ||
1029 | .event = ATOMIC_INIT(0), \ | ||
1030 | .wait = __WAIT_QUEUE_HEAD_INITIALIZER(name.wait) } | ||
1031 | |||
1032 | #define DEFINE_CTL_TABLE_POLL(name) \ | ||
1033 | struct ctl_table_poll name = __CTL_TABLE_POLL_INITIALIZER(name) | ||
1034 | |||
1014 | /* A sysctl table is an array of struct ctl_table: */ | 1035 | /* A sysctl table is an array of struct ctl_table: */ |
1015 | struct ctl_table | 1036 | struct ctl_table |
1016 | { | 1037 | { |
@@ -1021,6 +1042,7 @@ struct ctl_table | |||
1021 | struct ctl_table *child; | 1042 | struct ctl_table *child; |
1022 | struct ctl_table *parent; /* Automatically set */ | 1043 | struct ctl_table *parent; /* Automatically set */ |
1023 | proc_handler *proc_handler; /* Callback for text formatting */ | 1044 | proc_handler *proc_handler; /* Callback for text formatting */ |
1045 | struct ctl_table_poll *poll; | ||
1024 | void *extra1; | 1046 | void *extra1; |
1025 | void *extra2; | 1047 | void *extra2; |
1026 | }; | 1048 | }; |
diff --git a/include/linux/sysdev.h b/include/linux/sysdev.h index d35e783a598c..20f63d3e6144 100644 --- a/include/linux/sysdev.h +++ b/include/linux/sysdev.h | |||
@@ -22,7 +22,6 @@ | |||
22 | #define _SYSDEV_H_ | 22 | #define _SYSDEV_H_ |
23 | 23 | ||
24 | #include <linux/kobject.h> | 24 | #include <linux/kobject.h> |
25 | #include <linux/module.h> | ||
26 | #include <linux/pm.h> | 25 | #include <linux/pm.h> |
27 | 26 | ||
28 | 27 | ||
diff --git a/include/linux/textsearch.h b/include/linux/textsearch.h index d9a85d616385..cfaee869146f 100644 --- a/include/linux/textsearch.h +++ b/include/linux/textsearch.h | |||
@@ -4,10 +4,11 @@ | |||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <linux/list.h> | 5 | #include <linux/list.h> |
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/module.h> | ||
8 | #include <linux/err.h> | 7 | #include <linux/err.h> |
9 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
10 | 9 | ||
10 | struct module; | ||
11 | |||
11 | struct ts_config; | 12 | struct ts_config; |
12 | 13 | ||
13 | #define TS_AUTOLOAD 1 /* Automatically load textsearch modules when needed */ | 14 | #define TS_AUTOLOAD 1 /* Automatically load textsearch modules when needed */ |
diff --git a/include/linux/topology.h b/include/linux/topology.h index fc839bfa7935..e26db031303b 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -201,6 +201,10 @@ int arch_update_cpu_topology(void); | |||
201 | .balance_interval = 64, \ | 201 | .balance_interval = 64, \ |
202 | } | 202 | } |
203 | 203 | ||
204 | #ifndef SD_NODES_PER_DOMAIN | ||
205 | #define SD_NODES_PER_DOMAIN 16 | ||
206 | #endif | ||
207 | |||
204 | #ifdef CONFIG_SCHED_BOOK | 208 | #ifdef CONFIG_SCHED_BOOK |
205 | #ifndef SD_BOOK_INIT | 209 | #ifndef SD_BOOK_INIT |
206 | #error Please define an appropriate SD_BOOK_INIT in include/asm/topology.h!!! | 210 | #error Please define an appropriate SD_BOOK_INIT in include/asm/topology.h!!! |
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h index 5cf397ceb726..7dadc3df0c77 100644 --- a/include/linux/trace_seq.h +++ b/include/linux/trace_seq.h | |||
@@ -29,10 +29,10 @@ trace_seq_init(struct trace_seq *s) | |||
29 | * Currently only defined when tracing is enabled. | 29 | * Currently only defined when tracing is enabled. |
30 | */ | 30 | */ |
31 | #ifdef CONFIG_TRACING | 31 | #ifdef CONFIG_TRACING |
32 | extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...) | 32 | extern __printf(2, 3) |
33 | __attribute__ ((format (printf, 2, 3))); | 33 | int trace_seq_printf(struct trace_seq *s, const char *fmt, ...); |
34 | extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args) | 34 | extern __printf(2, 0) |
35 | __attribute__ ((format (printf, 2, 0))); | 35 | int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args); |
36 | extern int | 36 | extern int |
37 | trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary); | 37 | trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary); |
38 | extern int trace_print_seq(struct seq_file *m, struct trace_seq *s); | 38 | extern int trace_print_seq(struct seq_file *m, struct trace_seq *s); |
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h index fd99ff9298c6..1ad4724458de 100644 --- a/include/linux/uio_driver.h +++ b/include/linux/uio_driver.h | |||
@@ -14,10 +14,10 @@ | |||
14 | #ifndef _UIO_DRIVER_H_ | 14 | #ifndef _UIO_DRIVER_H_ |
15 | #define _UIO_DRIVER_H_ | 15 | #define _UIO_DRIVER_H_ |
16 | 16 | ||
17 | #include <linux/module.h> | ||
18 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | 19 | ||
20 | struct module; | ||
21 | struct uio_map; | 21 | struct uio_map; |
22 | 22 | ||
23 | /** | 23 | /** |
@@ -101,11 +101,11 @@ extern int __must_check | |||
101 | __uio_register_device(struct module *owner, | 101 | __uio_register_device(struct module *owner, |
102 | struct device *parent, | 102 | struct device *parent, |
103 | struct uio_info *info); | 103 | struct uio_info *info); |
104 | static inline int __must_check | 104 | |
105 | uio_register_device(struct device *parent, struct uio_info *info) | 105 | /* use a define to avoid include chaining to get THIS_MODULE */ |
106 | { | 106 | #define uio_register_device(parent, info) \ |
107 | return __uio_register_device(THIS_MODULE, parent, info); | 107 | __uio_register_device(THIS_MODULE, parent, info) |
108 | } | 108 | |
109 | extern void uio_unregister_device(struct uio_info *info); | 109 | extern void uio_unregister_device(struct uio_info *info); |
110 | extern void uio_event_notify(struct uio_info *info); | 110 | extern void uio_event_notify(struct uio_info *info); |
111 | 111 | ||
diff --git a/include/linux/usb.h b/include/linux/usb.h index 6f49a1b39fa6..d3d0c1374334 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -946,10 +946,11 @@ struct usb_class_driver { | |||
946 | */ | 946 | */ |
947 | extern int usb_register_driver(struct usb_driver *, struct module *, | 947 | extern int usb_register_driver(struct usb_driver *, struct module *, |
948 | const char *); | 948 | const char *); |
949 | static inline int usb_register(struct usb_driver *driver) | 949 | |
950 | { | 950 | /* use a define to avoid include chaining to get THIS_MODULE & friends */ |
951 | return usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME); | 951 | #define usb_register(driver) \ |
952 | } | 952 | usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME) |
953 | |||
953 | extern void usb_deregister(struct usb_driver *); | 954 | extern void usb_deregister(struct usb_driver *); |
954 | 955 | ||
955 | extern int usb_register_device_driver(struct usb_device_driver *, | 956 | extern int usb_register_device_driver(struct usb_device_driver *, |
diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 4e5b0213fdc1..c714ed75eae2 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h | |||
@@ -37,6 +37,14 @@ struct new_utsname { | |||
37 | #include <linux/nsproxy.h> | 37 | #include <linux/nsproxy.h> |
38 | #include <linux/err.h> | 38 | #include <linux/err.h> |
39 | 39 | ||
40 | enum uts_proc { | ||
41 | UTS_PROC_OSTYPE, | ||
42 | UTS_PROC_OSRELEASE, | ||
43 | UTS_PROC_VERSION, | ||
44 | UTS_PROC_HOSTNAME, | ||
45 | UTS_PROC_DOMAINNAME, | ||
46 | }; | ||
47 | |||
40 | struct user_namespace; | 48 | struct user_namespace; |
41 | extern struct user_namespace init_user_ns; | 49 | extern struct user_namespace init_user_ns; |
42 | 50 | ||
@@ -80,6 +88,14 @@ static inline struct uts_namespace *copy_utsname(unsigned long flags, | |||
80 | } | 88 | } |
81 | #endif | 89 | #endif |
82 | 90 | ||
91 | #ifdef CONFIG_PROC_SYSCTL | ||
92 | extern void uts_proc_notify(enum uts_proc proc); | ||
93 | #else | ||
94 | static inline void uts_proc_notify(enum uts_proc proc) | ||
95 | { | ||
96 | } | ||
97 | #endif | ||
98 | |||
83 | static inline struct new_utsname *utsname(void) | 99 | static inline struct new_utsname *utsname(void) |
84 | { | 100 | { |
85 | return ¤t->nsproxy->uts_ns->name; | 101 | return ¤t->nsproxy->uts_ns->name; |
diff --git a/include/linux/uwb.h b/include/linux/uwb.h index b0c564ec2160..7dbbee9741b7 100644 --- a/include/linux/uwb.h +++ b/include/linux/uwb.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/wait.h> | 33 | #include <linux/wait.h> |
34 | #include <linux/workqueue.h> | 34 | #include <linux/workqueue.h> |
35 | #include <linux/uwb/spec.h> | 35 | #include <linux/uwb/spec.h> |
36 | #include <asm/page.h> | ||
36 | 37 | ||
37 | struct uwb_dev; | 38 | struct uwb_dev; |
38 | struct uwb_beca_e; | 39 | struct uwb_beca_e; |
diff --git a/include/linux/uwb/umc.h b/include/linux/uwb/umc.h index 7b4842028ca7..891d1d5f3947 100644 --- a/include/linux/uwb/umc.h +++ b/include/linux/uwb/umc.h | |||
@@ -111,10 +111,9 @@ int __must_check __umc_driver_register(struct umc_driver *umc_drv, | |||
111 | * umc_driver_register - register a UMC capabiltity driver. | 111 | * umc_driver_register - register a UMC capabiltity driver. |
112 | * @umc_drv: pointer to the driver. | 112 | * @umc_drv: pointer to the driver. |
113 | */ | 113 | */ |
114 | static inline int __must_check umc_driver_register(struct umc_driver *umc_drv) | 114 | #define umc_driver_register(umc_drv) \ |
115 | { | 115 | __umc_driver_register(umc_drv, THIS_MODULE, KBUILD_MODNAME) |
116 | return __umc_driver_register(umc_drv, THIS_MODULE, KBUILD_MODNAME); | 116 | |
117 | } | ||
118 | void umc_driver_unregister(struct umc_driver *umc_drv); | 117 | void umc_driver_unregister(struct umc_driver *umc_drv); |
119 | 118 | ||
120 | /* | 119 | /* |
diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h index cf97b5b9d1fe..6f8fbcf10dfb 100644 --- a/include/linux/vermagic.h +++ b/include/linux/vermagic.h | |||
@@ -1,5 +1,4 @@ | |||
1 | #include <generated/utsrelease.h> | 1 | #include <generated/utsrelease.h> |
2 | #include <linux/module.h> | ||
3 | 2 | ||
4 | /* Simply sanity version stamp for modules. */ | 3 | /* Simply sanity version stamp for modules. */ |
5 | #ifdef CONFIG_SMP | 4 | #ifdef CONFIG_SMP |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 851ebf1a4476..4c069d8bd740 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -131,10 +131,10 @@ void unregister_virtio_device(struct virtio_device *dev); | |||
131 | * virtio_driver - operations for a virtio I/O driver | 131 | * virtio_driver - operations for a virtio I/O driver |
132 | * @driver: underlying device driver (populate name and owner). | 132 | * @driver: underlying device driver (populate name and owner). |
133 | * @id_table: the ids serviced by this driver. | 133 | * @id_table: the ids serviced by this driver. |
134 | * @feature_table: an array of feature numbers supported by this device. | 134 | * @feature_table: an array of feature numbers supported by this driver. |
135 | * @feature_table_size: number of entries in the feature table array. | 135 | * @feature_table_size: number of entries in the feature table array. |
136 | * @probe: the function to call when a device is found. Returns 0 or -errno. | 136 | * @probe: the function to call when a device is found. Returns 0 or -errno. |
137 | * @remove: the function when a device is removed. | 137 | * @remove: the function to call when a device is removed. |
138 | * @config_changed: optional function to call when the device configuration | 138 | * @config_changed: optional function to call when the device configuration |
139 | * changes; may be called in interrupt context. | 139 | * changes; may be called in interrupt context. |
140 | */ | 140 | */ |
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h index 39c88c5ad19d..e9e72bda1b72 100644 --- a/include/linux/virtio_config.h +++ b/include/linux/virtio_config.h | |||
@@ -85,6 +85,8 @@ | |||
85 | * @reset: reset the device | 85 | * @reset: reset the device |
86 | * vdev: the virtio device | 86 | * vdev: the virtio device |
87 | * After this, status and feature negotiation must be done again | 87 | * After this, status and feature negotiation must be done again |
88 | * Device must not be reset from its vq/config callbacks, or in | ||
89 | * parallel with being added/removed. | ||
88 | * @find_vqs: find virtqueues and instantiate them. | 90 | * @find_vqs: find virtqueues and instantiate them. |
89 | * vdev: the virtio_device | 91 | * vdev: the virtio_device |
90 | * nvqs: the number of virtqueues to find | 92 | * nvqs: the number of virtqueues to find |
@@ -155,6 +157,9 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev, | |||
155 | #define virtio_config_val(vdev, fbit, offset, v) \ | 157 | #define virtio_config_val(vdev, fbit, offset, v) \ |
156 | virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(*v)) | 158 | virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(*v)) |
157 | 159 | ||
160 | #define virtio_config_val_len(vdev, fbit, offset, v, len) \ | ||
161 | virtio_config_buf((vdev), (fbit), (offset), (v), (len)) | ||
162 | |||
158 | static inline int virtio_config_buf(struct virtio_device *vdev, | 163 | static inline int virtio_config_buf(struct virtio_device *vdev, |
159 | unsigned int fbit, | 164 | unsigned int fbit, |
160 | unsigned int offset, | 165 | unsigned int offset, |
diff --git a/include/linux/virtio_mmio.h b/include/linux/virtio_mmio.h new file mode 100644 index 000000000000..5c7b6f0daef8 --- /dev/null +++ b/include/linux/virtio_mmio.h | |||
@@ -0,0 +1,111 @@ | |||
1 | /* | ||
2 | * Virtio platform device driver | ||
3 | * | ||
4 | * Copyright 2011, ARM Ltd. | ||
5 | * | ||
6 | * Based on Virtio PCI driver by Anthony Liguori, copyright IBM Corp. 2007 | ||
7 | * | ||
8 | * This header is BSD licensed so anyone can use the definitions to implement | ||
9 | * compatible drivers/servers. | ||
10 | * | ||
11 | * Redistribution and use in source and binary forms, with or without | ||
12 | * modification, are permitted provided that the following conditions | ||
13 | * are met: | ||
14 | * 1. Redistributions of source code must retain the above copyright | ||
15 | * notice, this list of conditions and the following disclaimer. | ||
16 | * 2. Redistributions in binary form must reproduce the above copyright | ||
17 | * notice, this list of conditions and the following disclaimer in the | ||
18 | * documentation and/or other materials provided with the distribution. | ||
19 | * 3. Neither the name of IBM nor the names of its contributors | ||
20 | * may be used to endorse or promote products derived from this software | ||
21 | * without specific prior written permission. | ||
22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
25 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
28 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
29 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
31 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
32 | * SUCH DAMAGE. | ||
33 | */ | ||
34 | |||
35 | #ifndef _LINUX_VIRTIO_MMIO_H | ||
36 | #define _LINUX_VIRTIO_MMIO_H | ||
37 | |||
38 | /* | ||
39 | * Control registers | ||
40 | */ | ||
41 | |||
42 | /* Magic value ("virt" string) - Read Only */ | ||
43 | #define VIRTIO_MMIO_MAGIC_VALUE 0x000 | ||
44 | |||
45 | /* Virtio device version - Read Only */ | ||
46 | #define VIRTIO_MMIO_VERSION 0x004 | ||
47 | |||
48 | /* Virtio device ID - Read Only */ | ||
49 | #define VIRTIO_MMIO_DEVICE_ID 0x008 | ||
50 | |||
51 | /* Virtio vendor ID - Read Only */ | ||
52 | #define VIRTIO_MMIO_VENDOR_ID 0x00c | ||
53 | |||
54 | /* Bitmask of the features supported by the host | ||
55 | * (32 bits per set) - Read Only */ | ||
56 | #define VIRTIO_MMIO_HOST_FEATURES 0x010 | ||
57 | |||
58 | /* Host features set selector - Write Only */ | ||
59 | #define VIRTIO_MMIO_HOST_FEATURES_SEL 0x014 | ||
60 | |||
61 | /* Bitmask of features activated by the guest | ||
62 | * (32 bits per set) - Write Only */ | ||
63 | #define VIRTIO_MMIO_GUEST_FEATURES 0x020 | ||
64 | |||
65 | /* Activated features set selector - Write Only */ | ||
66 | #define VIRTIO_MMIO_GUEST_FEATURES_SEL 0x024 | ||
67 | |||
68 | /* Guest's memory page size in bytes - Write Only */ | ||
69 | #define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 | ||
70 | |||
71 | /* Queue selector - Write Only */ | ||
72 | #define VIRTIO_MMIO_QUEUE_SEL 0x030 | ||
73 | |||
74 | /* Maximum size of the currently selected queue - Read Only */ | ||
75 | #define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034 | ||
76 | |||
77 | /* Queue size for the currently selected queue - Write Only */ | ||
78 | #define VIRTIO_MMIO_QUEUE_NUM 0x038 | ||
79 | |||
80 | /* Used Ring alignment for the currently selected queue - Write Only */ | ||
81 | #define VIRTIO_MMIO_QUEUE_ALIGN 0x03c | ||
82 | |||
83 | /* Guest's PFN for the currently selected queue - Read Write */ | ||
84 | #define VIRTIO_MMIO_QUEUE_PFN 0x040 | ||
85 | |||
86 | /* Queue notifier - Write Only */ | ||
87 | #define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 | ||
88 | |||
89 | /* Interrupt status - Read Only */ | ||
90 | #define VIRTIO_MMIO_INTERRUPT_STATUS 0x060 | ||
91 | |||
92 | /* Interrupt acknowledge - Write Only */ | ||
93 | #define VIRTIO_MMIO_INTERRUPT_ACK 0x064 | ||
94 | |||
95 | /* Device status register - Read Write */ | ||
96 | #define VIRTIO_MMIO_STATUS 0x070 | ||
97 | |||
98 | /* The config space is defined by each driver as | ||
99 | * the per-driver configuration space - Read Write */ | ||
100 | #define VIRTIO_MMIO_CONFIG 0x100 | ||
101 | |||
102 | |||
103 | |||
104 | /* | ||
105 | * Interrupt flags (re: interrupt status & acknowledge registers) | ||
106 | */ | ||
107 | |||
108 | #define VIRTIO_MMIO_INT_VRING (1 << 0) | ||
109 | #define VIRTIO_MMIO_INT_CONFIG (1 << 1) | ||
110 | |||
111 | #endif | ||
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h index 4a32cb6da425..36be0f6e18a9 100644 --- a/include/linux/virtio_ring.h +++ b/include/linux/virtio_ring.h | |||
@@ -135,13 +135,13 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, | |||
135 | vr->num = num; | 135 | vr->num = num; |
136 | vr->desc = p; | 136 | vr->desc = p; |
137 | vr->avail = p + num*sizeof(struct vring_desc); | 137 | vr->avail = p + num*sizeof(struct vring_desc); |
138 | vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + align-1) | 138 | vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__u16) |
139 | & ~(align - 1)); | 139 | + align-1) & ~(align - 1)); |
140 | } | 140 | } |
141 | 141 | ||
142 | static inline unsigned vring_size(unsigned int num, unsigned long align) | 142 | static inline unsigned vring_size(unsigned int num, unsigned long align) |
143 | { | 143 | { |
144 | return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (2 + num) | 144 | return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (3 + num) |
145 | + align - 1) & ~(align - 1)) | 145 | + align - 1) & ~(align - 1)) |
146 | + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; | 146 | + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; |
147 | } | 147 | } |
diff --git a/include/linux/vlynq.h b/include/linux/vlynq.h index 8f6a95882b09..017d4a53d55e 100644 --- a/include/linux/vlynq.h +++ b/include/linux/vlynq.h | |||
@@ -20,9 +20,10 @@ | |||
20 | #define __VLYNQ_H__ | 20 | #define __VLYNQ_H__ |
21 | 21 | ||
22 | #include <linux/device.h> | 22 | #include <linux/device.h> |
23 | #include <linux/module.h> | ||
24 | #include <linux/types.h> | 23 | #include <linux/types.h> |
25 | 24 | ||
25 | struct module; | ||
26 | |||
26 | #define VLYNQ_NUM_IRQS 32 | 27 | #define VLYNQ_NUM_IRQS 32 |
27 | 28 | ||
28 | struct vlynq_mapping { | 29 | struct vlynq_mapping { |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 9332e52ea8c2..4bde182fcf93 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
@@ -13,6 +13,7 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */ | |||
13 | #define VM_MAP 0x00000004 /* vmap()ed pages */ | 13 | #define VM_MAP 0x00000004 /* vmap()ed pages */ |
14 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ | 14 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ |
15 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ | 15 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ |
16 | #define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */ | ||
16 | /* bits [20..32] reserved for arch specific ioremap internals */ | 17 | /* bits [20..32] reserved for arch specific ioremap internals */ |
17 | 18 | ||
18 | /* | 19 | /* |
@@ -118,7 +119,7 @@ unmap_kernel_range(unsigned long addr, unsigned long size) | |||
118 | #endif | 119 | #endif |
119 | 120 | ||
120 | /* Allocate/destroy a 'vmalloc' VM area. */ | 121 | /* Allocate/destroy a 'vmalloc' VM area. */ |
121 | extern struct vm_struct *alloc_vm_area(size_t size); | 122 | extern struct vm_struct *alloc_vm_area(size_t size, pte_t **ptes); |
122 | extern void free_vm_area(struct vm_struct *area); | 123 | extern void free_vm_area(struct vm_struct *area); |
123 | 124 | ||
124 | /* for /dev/kmem */ | 125 | /* for /dev/kmem */ |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 2b8963ff0f35..a378c295851f 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
@@ -39,6 +39,23 @@ enum writeback_sync_modes { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * why some writeback work was initiated | ||
43 | */ | ||
44 | enum wb_reason { | ||
45 | WB_REASON_BACKGROUND, | ||
46 | WB_REASON_TRY_TO_FREE_PAGES, | ||
47 | WB_REASON_SYNC, | ||
48 | WB_REASON_PERIODIC, | ||
49 | WB_REASON_LAPTOP_TIMER, | ||
50 | WB_REASON_FREE_MORE_MEM, | ||
51 | WB_REASON_FS_FREE_SPACE, | ||
52 | WB_REASON_FORKER_THREAD, | ||
53 | |||
54 | WB_REASON_MAX, | ||
55 | }; | ||
56 | extern const char *wb_reason_name[]; | ||
57 | |||
58 | /* | ||
42 | * A control structure which tells the writeback code what to do. These are | 59 | * A control structure which tells the writeback code what to do. These are |
43 | * always on the stack, and hence need no locking. They are always initialised | 60 | * always on the stack, and hence need no locking. They are always initialised |
44 | * in a manner such that unspecified fields are set to zero. | 61 | * in a manner such that unspecified fields are set to zero. |
@@ -69,14 +86,17 @@ struct writeback_control { | |||
69 | */ | 86 | */ |
70 | struct bdi_writeback; | 87 | struct bdi_writeback; |
71 | int inode_wait(void *); | 88 | int inode_wait(void *); |
72 | void writeback_inodes_sb(struct super_block *); | 89 | void writeback_inodes_sb(struct super_block *, enum wb_reason reason); |
73 | void writeback_inodes_sb_nr(struct super_block *, unsigned long nr); | 90 | void writeback_inodes_sb_nr(struct super_block *, unsigned long nr, |
74 | int writeback_inodes_sb_if_idle(struct super_block *); | 91 | enum wb_reason reason); |
75 | int writeback_inodes_sb_nr_if_idle(struct super_block *, unsigned long nr); | 92 | int writeback_inodes_sb_if_idle(struct super_block *, enum wb_reason reason); |
93 | int writeback_inodes_sb_nr_if_idle(struct super_block *, unsigned long nr, | ||
94 | enum wb_reason reason); | ||
76 | void sync_inodes_sb(struct super_block *); | 95 | void sync_inodes_sb(struct super_block *); |
77 | long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages); | 96 | long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages, |
97 | enum wb_reason reason); | ||
78 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); | 98 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); |
79 | void wakeup_flusher_threads(long nr_pages); | 99 | void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); |
80 | 100 | ||
81 | /* writeback.h requires fs.h; it, too, is not included from here. */ | 101 | /* writeback.h requires fs.h; it, too, is not included from here. */ |
82 | static inline void wait_on_inode(struct inode *inode) | 102 | static inline void wait_on_inode(struct inode *inode) |
@@ -143,6 +163,7 @@ unsigned long bdi_dirty_limit(struct backing_dev_info *bdi, | |||
143 | 163 | ||
144 | void __bdi_update_bandwidth(struct backing_dev_info *bdi, | 164 | void __bdi_update_bandwidth(struct backing_dev_info *bdi, |
145 | unsigned long thresh, | 165 | unsigned long thresh, |
166 | unsigned long bg_thresh, | ||
146 | unsigned long dirty, | 167 | unsigned long dirty, |
147 | unsigned long bdi_thresh, | 168 | unsigned long bdi_thresh, |
148 | unsigned long bdi_dirty, | 169 | unsigned long bdi_dirty, |
diff --git a/include/media/saa7146.h b/include/media/saa7146.h index 5017500eda1b..0f037e8edf9a 100644 --- a/include/media/saa7146.h +++ b/include/media/saa7146.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __SAA7146__ | 1 | #ifndef __SAA7146__ |
2 | #define __SAA7146__ | 2 | #define __SAA7146__ |
3 | 3 | ||
4 | #include <linux/module.h> /* for module-version */ | ||
5 | #include <linux/delay.h> /* for delay-stuff */ | 4 | #include <linux/delay.h> /* for delay-stuff */ |
6 | #include <linux/slab.h> /* for kmalloc/kfree */ | 5 | #include <linux/slab.h> /* for kmalloc/kfree */ |
7 | #include <linux/pci.h> /* for pci-config-stuff, vendor ids etc. */ | 6 | #include <linux/pci.h> /* for pci-config-stuff, vendor ids etc. */ |
@@ -55,6 +54,8 @@ do { \ | |||
55 | #define SAA7146_ISR_CLEAR(x,y) \ | 54 | #define SAA7146_ISR_CLEAR(x,y) \ |
56 | saa7146_write(x, ISR, (y)); | 55 | saa7146_write(x, ISR, (y)); |
57 | 56 | ||
57 | struct module; | ||
58 | |||
58 | struct saa7146_dev; | 59 | struct saa7146_dev; |
59 | struct saa7146_extension; | 60 | struct saa7146_extension; |
60 | struct saa7146_vv; | 61 | struct saa7146_vv; |
diff --git a/include/media/v4l2-int-device.h b/include/media/v4l2-int-device.h index fbf585561570..e6aa2318367b 100644 --- a/include/media/v4l2-int-device.h +++ b/include/media/v4l2-int-device.h | |||
@@ -25,7 +25,6 @@ | |||
25 | #ifndef V4L2_INT_DEVICE_H | 25 | #ifndef V4L2_INT_DEVICE_H |
26 | #define V4L2_INT_DEVICE_H | 26 | #define V4L2_INT_DEVICE_H |
27 | 27 | ||
28 | #include <linux/module.h> | ||
29 | #include <media/v4l2-common.h> | 28 | #include <media/v4l2-common.h> |
30 | 29 | ||
31 | #define V4L2NAMESIZE 32 | 30 | #define V4L2NAMESIZE 32 |
@@ -41,6 +40,8 @@ enum v4l2_int_type { | |||
41 | v4l2_int_type_slave | 40 | v4l2_int_type_slave |
42 | }; | 41 | }; |
43 | 42 | ||
43 | struct module; | ||
44 | |||
44 | struct v4l2_int_device; | 45 | struct v4l2_int_device; |
45 | 46 | ||
46 | struct v4l2_int_master { | 47 | struct v4l2_int_master { |
diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h index 2f7d45bcbd24..1a7e1d20adf9 100644 --- a/include/mtd/mtd-abi.h +++ b/include/mtd/mtd-abi.h | |||
@@ -45,6 +45,51 @@ struct mtd_oob_buf64 { | |||
45 | __u64 usr_ptr; | 45 | __u64 usr_ptr; |
46 | }; | 46 | }; |
47 | 47 | ||
48 | /** | ||
49 | * MTD operation modes | ||
50 | * | ||
51 | * @MTD_OPS_PLACE_OOB: OOB data are placed at the given offset (default) | ||
52 | * @MTD_OPS_AUTO_OOB: OOB data are automatically placed at the free areas | ||
53 | * which are defined by the internal ecclayout | ||
54 | * @MTD_OPS_RAW: data are transferred as-is, with no error correction; | ||
55 | * this mode implies %MTD_OPS_PLACE_OOB | ||
56 | * | ||
57 | * These modes can be passed to ioctl(MEMWRITE) and are also used internally. | ||
58 | * See notes on "MTD file modes" for discussion on %MTD_OPS_RAW vs. | ||
59 | * %MTD_FILE_MODE_RAW. | ||
60 | */ | ||
61 | enum { | ||
62 | MTD_OPS_PLACE_OOB = 0, | ||
63 | MTD_OPS_AUTO_OOB = 1, | ||
64 | MTD_OPS_RAW = 2, | ||
65 | }; | ||
66 | |||
67 | /** | ||
68 | * struct mtd_write_req - data structure for requesting a write operation | ||
69 | * | ||
70 | * @start: start address | ||
71 | * @len: length of data buffer | ||
72 | * @ooblen: length of OOB buffer | ||
73 | * @usr_data: user-provided data buffer | ||
74 | * @usr_oob: user-provided OOB buffer | ||
75 | * @mode: MTD mode (see "MTD operation modes") | ||
76 | * @padding: reserved, must be set to 0 | ||
77 | * | ||
78 | * This structure supports ioctl(MEMWRITE) operations, allowing data and/or OOB | ||
79 | * writes in various modes. To write to OOB-only, set @usr_data == NULL, and to | ||
80 | * write data-only, set @usr_oob == NULL. However, setting both @usr_data and | ||
81 | * @usr_oob to NULL is not allowed. | ||
82 | */ | ||
83 | struct mtd_write_req { | ||
84 | __u64 start; | ||
85 | __u64 len; | ||
86 | __u64 ooblen; | ||
87 | __u64 usr_data; | ||
88 | __u64 usr_oob; | ||
89 | __u8 mode; | ||
90 | __u8 padding[7]; | ||
91 | }; | ||
92 | |||
48 | #define MTD_ABSENT 0 | 93 | #define MTD_ABSENT 0 |
49 | #define MTD_RAM 1 | 94 | #define MTD_RAM 1 |
50 | #define MTD_ROM 2 | 95 | #define MTD_ROM 2 |
@@ -59,13 +104,13 @@ struct mtd_oob_buf64 { | |||
59 | #define MTD_NO_ERASE 0x1000 /* No erase necessary */ | 104 | #define MTD_NO_ERASE 0x1000 /* No erase necessary */ |
60 | #define MTD_POWERUP_LOCK 0x2000 /* Always locked after reset */ | 105 | #define MTD_POWERUP_LOCK 0x2000 /* Always locked after reset */ |
61 | 106 | ||
62 | // Some common devices / combinations of capabilities | 107 | /* Some common devices / combinations of capabilities */ |
63 | #define MTD_CAP_ROM 0 | 108 | #define MTD_CAP_ROM 0 |
64 | #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) | 109 | #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) |
65 | #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) | 110 | #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) |
66 | #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) | 111 | #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) |
67 | 112 | ||
68 | /* ECC byte placement */ | 113 | /* Obsolete ECC byte placement modes (used with obsolete MEMGETOOBSEL) */ |
69 | #define MTD_NANDECC_OFF 0 // Switch off ECC (Not recommended) | 114 | #define MTD_NANDECC_OFF 0 // Switch off ECC (Not recommended) |
70 | #define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) | 115 | #define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) |
71 | #define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme | 116 | #define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme |
@@ -80,21 +125,18 @@ struct mtd_oob_buf64 { | |||
80 | struct mtd_info_user { | 125 | struct mtd_info_user { |
81 | __u8 type; | 126 | __u8 type; |
82 | __u32 flags; | 127 | __u32 flags; |
83 | __u32 size; // Total size of the MTD | 128 | __u32 size; /* Total size of the MTD */ |
84 | __u32 erasesize; | 129 | __u32 erasesize; |
85 | __u32 writesize; | 130 | __u32 writesize; |
86 | __u32 oobsize; // Amount of OOB data per block (e.g. 16) | 131 | __u32 oobsize; /* Amount of OOB data per block (e.g. 16) */ |
87 | /* The below two fields are obsolete and broken, do not use them | 132 | __u64 padding; /* Old obsolete field; do not use */ |
88 | * (TODO: remove at some point) */ | ||
89 | __u32 ecctype; | ||
90 | __u32 eccsize; | ||
91 | }; | 133 | }; |
92 | 134 | ||
93 | struct region_info_user { | 135 | struct region_info_user { |
94 | __u32 offset; /* At which this region starts, | 136 | __u32 offset; /* At which this region starts, |
95 | * from the beginning of the MTD */ | 137 | * from the beginning of the MTD */ |
96 | __u32 erasesize; /* For this region */ | 138 | __u32 erasesize; /* For this region */ |
97 | __u32 numblocks; /* Number of blocks in this region */ | 139 | __u32 numblocks; /* Number of blocks in this region */ |
98 | __u32 regionindex; | 140 | __u32 regionindex; |
99 | }; | 141 | }; |
100 | 142 | ||
@@ -104,29 +146,61 @@ struct otp_info { | |||
104 | __u32 locked; | 146 | __u32 locked; |
105 | }; | 147 | }; |
106 | 148 | ||
149 | /* | ||
150 | * Note, the following ioctl existed in the past and was removed: | ||
151 | * #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) | ||
152 | * Try to avoid adding a new ioctl with the same ioctl number. | ||
153 | */ | ||
154 | |||
155 | /* Get basic MTD characteristics info (better to use sysfs) */ | ||
107 | #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) | 156 | #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) |
157 | /* Erase segment of MTD */ | ||
108 | #define MEMERASE _IOW('M', 2, struct erase_info_user) | 158 | #define MEMERASE _IOW('M', 2, struct erase_info_user) |
159 | /* Write out-of-band data from MTD */ | ||
109 | #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) | 160 | #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) |
161 | /* Read out-of-band data from MTD */ | ||
110 | #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) | 162 | #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) |
163 | /* Lock a chip (for MTD that supports it) */ | ||
111 | #define MEMLOCK _IOW('M', 5, struct erase_info_user) | 164 | #define MEMLOCK _IOW('M', 5, struct erase_info_user) |
165 | /* Unlock a chip (for MTD that supports it) */ | ||
112 | #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) | 166 | #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) |
167 | /* Get the number of different erase regions */ | ||
113 | #define MEMGETREGIONCOUNT _IOR('M', 7, int) | 168 | #define MEMGETREGIONCOUNT _IOR('M', 7, int) |
169 | /* Get information about the erase region for a specific index */ | ||
114 | #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) | 170 | #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) |
115 | #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) | 171 | /* Get info about OOB modes (e.g., RAW, PLACE, AUTO) - legacy interface */ |
116 | #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) | 172 | #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) |
173 | /* Check if an eraseblock is bad */ | ||
117 | #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) | 174 | #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) |
175 | /* Mark an eraseblock as bad */ | ||
118 | #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) | 176 | #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) |
177 | /* Set OTP (One-Time Programmable) mode (factory vs. user) */ | ||
119 | #define OTPSELECT _IOR('M', 13, int) | 178 | #define OTPSELECT _IOR('M', 13, int) |
179 | /* Get number of OTP (One-Time Programmable) regions */ | ||
120 | #define OTPGETREGIONCOUNT _IOW('M', 14, int) | 180 | #define OTPGETREGIONCOUNT _IOW('M', 14, int) |
181 | /* Get all OTP (One-Time Programmable) info about MTD */ | ||
121 | #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) | 182 | #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) |
183 | /* Lock a given range of user data (must be in mode %MTD_FILE_MODE_OTP_USER) */ | ||
122 | #define OTPLOCK _IOR('M', 16, struct otp_info) | 184 | #define OTPLOCK _IOR('M', 16, struct otp_info) |
185 | /* Get ECC layout (deprecated) */ | ||
123 | #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user) | 186 | #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user) |
187 | /* Get statistics about corrected/uncorrected errors */ | ||
124 | #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) | 188 | #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) |
189 | /* Set MTD mode on a per-file-descriptor basis (see "MTD file modes") */ | ||
125 | #define MTDFILEMODE _IO('M', 19) | 190 | #define MTDFILEMODE _IO('M', 19) |
191 | /* Erase segment of MTD (supports 64-bit address) */ | ||
126 | #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) | 192 | #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) |
193 | /* Write data to OOB (64-bit version) */ | ||
127 | #define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64) | 194 | #define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64) |
195 | /* Read data from OOB (64-bit version) */ | ||
128 | #define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64) | 196 | #define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64) |
197 | /* Check if chip is locked (for MTD that supports it) */ | ||
129 | #define MEMISLOCKED _IOR('M', 23, struct erase_info_user) | 198 | #define MEMISLOCKED _IOR('M', 23, struct erase_info_user) |
199 | /* | ||
200 | * Most generic write interface; can write in-band and/or out-of-band in various | ||
201 | * modes (see "struct mtd_write_req") | ||
202 | */ | ||
203 | #define MEMWRITE _IOWR('M', 24, struct mtd_write_req) | ||
130 | 204 | ||
131 | /* | 205 | /* |
132 | * Obsolete legacy interface. Keep it in order not to break userspace | 206 | * Obsolete legacy interface. Keep it in order not to break userspace |
@@ -177,13 +251,27 @@ struct mtd_ecc_stats { | |||
177 | }; | 251 | }; |
178 | 252 | ||
179 | /* | 253 | /* |
180 | * Read/write file modes for access to MTD | 254 | * MTD file modes - for read/write access to MTD |
255 | * | ||
256 | * @MTD_FILE_MODE_NORMAL: OTP disabled, ECC enabled | ||
257 | * @MTD_FILE_MODE_OTP_FACTORY: OTP enabled in factory mode | ||
258 | * @MTD_FILE_MODE_OTP_USER: OTP enabled in user mode | ||
259 | * @MTD_FILE_MODE_RAW: OTP disabled, ECC disabled | ||
260 | * | ||
261 | * These modes can be set via ioctl(MTDFILEMODE). The mode mode will be retained | ||
262 | * separately for each open file descriptor. | ||
263 | * | ||
264 | * Note: %MTD_FILE_MODE_RAW provides the same functionality as %MTD_OPS_RAW - | ||
265 | * raw access to the flash, without error correction or autoplacement schemes. | ||
266 | * Wherever possible, the MTD_OPS_* mode will override the MTD_FILE_MODE_* mode | ||
267 | * (e.g., when using ioctl(MEMWRITE)), but in some cases, the MTD_FILE_MODE is | ||
268 | * used out of necessity (e.g., `write()', ioctl(MEMWRITEOOB64)). | ||
181 | */ | 269 | */ |
182 | enum mtd_file_modes { | 270 | enum mtd_file_modes { |
183 | MTD_MODE_NORMAL = MTD_OTP_OFF, | 271 | MTD_FILE_MODE_NORMAL = MTD_OTP_OFF, |
184 | MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY, | 272 | MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY, |
185 | MTD_MODE_OTP_USER = MTD_OTP_USER, | 273 | MTD_FILE_MODE_OTP_USER = MTD_OTP_USER, |
186 | MTD_MODE_RAW, | 274 | MTD_FILE_MODE_RAW, |
187 | }; | 275 | }; |
188 | 276 | ||
189 | #endif /* __MTD_ABI_H__ */ | 277 | #endif /* __MTD_ABI_H__ */ |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index e727555d4ee9..e86af08293a8 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -77,7 +77,7 @@ struct bt_power { | |||
77 | #define BT_POWER_FORCE_ACTIVE_OFF 0 | 77 | #define BT_POWER_FORCE_ACTIVE_OFF 0 |
78 | #define BT_POWER_FORCE_ACTIVE_ON 1 | 78 | #define BT_POWER_FORCE_ACTIVE_ON 1 |
79 | 79 | ||
80 | __attribute__((format (printf, 2, 3))) | 80 | __printf(2, 3) |
81 | int bt_printk(const char *level, const char *fmt, ...); | 81 | int bt_printk(const char *level, const char *fmt, ...); |
82 | 82 | ||
83 | #define BT_INFO(fmt, arg...) bt_printk(KERN_INFO, pr_fmt(fmt), ##arg) | 83 | #define BT_INFO(fmt, arg...) bt_printk(KERN_INFO, pr_fmt(fmt), ##arg) |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 5b924423cf20..3779ea362257 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -513,11 +513,15 @@ static inline void __hci_dev_put(struct hci_dev *d) | |||
513 | d->destruct(d); | 513 | d->destruct(d); |
514 | } | 514 | } |
515 | 515 | ||
516 | static inline void hci_dev_put(struct hci_dev *d) | 516 | /* |
517 | { | 517 | * hci_dev_put and hci_dev_hold are macros to avoid dragging all the |
518 | __hci_dev_put(d); | 518 | * overhead of all the modular infrastructure into this header. |
519 | module_put(d->owner); | 519 | */ |
520 | } | 520 | #define hci_dev_put(d) \ |
521 | do { \ | ||
522 | __hci_dev_put(d); \ | ||
523 | module_put(d->owner); \ | ||
524 | } while (0) | ||
521 | 525 | ||
522 | static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) | 526 | static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) |
523 | { | 527 | { |
@@ -525,12 +529,10 @@ static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) | |||
525 | return d; | 529 | return d; |
526 | } | 530 | } |
527 | 531 | ||
528 | static inline struct hci_dev *hci_dev_hold(struct hci_dev *d) | 532 | #define hci_dev_hold(d) \ |
529 | { | 533 | ({ \ |
530 | if (try_module_get(d->owner)) | 534 | try_module_get(d->owner) ? __hci_dev_hold(d) : NULL; \ |
531 | return __hci_dev_hold(d); | 535 | }) |
532 | return NULL; | ||
533 | } | ||
534 | 536 | ||
535 | #define hci_dev_lock(d) spin_lock(&d->lock) | 537 | #define hci_dev_lock(d) spin_lock(&d->lock) |
536 | #define hci_dev_unlock(d) spin_unlock(&d->lock) | 538 | #define hci_dev_unlock(d) spin_unlock(&d->lock) |
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index ab90ae0970a6..6cc18f371675 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -39,8 +39,11 @@ | |||
39 | #define L2CAP_DEFAULT_ACK_TO 200 | 39 | #define L2CAP_DEFAULT_ACK_TO 200 |
40 | #define L2CAP_LE_DEFAULT_MTU 23 | 40 | #define L2CAP_LE_DEFAULT_MTU 23 |
41 | 41 | ||
42 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ | 42 | #define L2CAP_DISC_TIMEOUT (100) |
43 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ | 43 | #define L2CAP_DISC_REJ_TIMEOUT (5000) /* 5 seconds */ |
44 | #define L2CAP_ENC_TIMEOUT (5000) /* 5 seconds */ | ||
45 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ | ||
46 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ | ||
44 | 47 | ||
45 | /* L2CAP socket address */ | 48 | /* L2CAP socket address */ |
46 | struct sockaddr_l2 { | 49 | struct sockaddr_l2 { |
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index d5eee2093b1e..e2e3ecad1008 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h | |||
@@ -211,6 +211,7 @@ struct rfcomm_dlc { | |||
211 | #define RFCOMM_AUTH_ACCEPT 6 | 211 | #define RFCOMM_AUTH_ACCEPT 6 |
212 | #define RFCOMM_AUTH_REJECT 7 | 212 | #define RFCOMM_AUTH_REJECT 7 |
213 | #define RFCOMM_DEFER_SETUP 8 | 213 | #define RFCOMM_DEFER_SETUP 8 |
214 | #define RFCOMM_ENC_DROP 9 | ||
214 | 215 | ||
215 | /* Scheduling flags and events */ | 216 | /* Scheduling flags and events */ |
216 | #define RFCOMM_SCHED_WAKEUP 31 | 217 | #define RFCOMM_SCHED_WAKEUP 31 |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 92cf1c2c30c9..95852e36713b 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -456,6 +456,9 @@ enum station_parameters_apply_mask { | |||
456 | * as the AC bitmap in the QoS info field | 456 | * as the AC bitmap in the QoS info field |
457 | * @max_sp: max Service Period. same format as the MAX_SP in the | 457 | * @max_sp: max Service Period. same format as the MAX_SP in the |
458 | * QoS info field (but already shifted down) | 458 | * QoS info field (but already shifted down) |
459 | * @sta_modify_mask: bitmap indicating which parameters changed | ||
460 | * (for those that don't have a natural "no change" value), | ||
461 | * see &enum station_parameters_apply_mask | ||
459 | */ | 462 | */ |
460 | struct station_parameters { | 463 | struct station_parameters { |
461 | u8 *supported_rates; | 464 | u8 *supported_rates; |
@@ -615,6 +618,7 @@ struct sta_bss_parameters { | |||
615 | * user space MLME/SME implementation. The information is provided for | 618 | * user space MLME/SME implementation. The information is provided for |
616 | * the cfg80211_new_sta() calls to notify user space of the IEs. | 619 | * the cfg80211_new_sta() calls to notify user space of the IEs. |
617 | * @assoc_req_ies_len: Length of assoc_req_ies buffer in octets. | 620 | * @assoc_req_ies_len: Length of assoc_req_ies buffer in octets. |
621 | * @sta_flags: station flags mask & values | ||
618 | */ | 622 | */ |
619 | struct station_info { | 623 | struct station_info { |
620 | u32 filled; | 624 | u32 filled; |
diff --git a/include/net/dst.h b/include/net/dst.h index 4fb6c4381791..6faec1a60216 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -205,12 +205,7 @@ dst_feature(const struct dst_entry *dst, u32 feature) | |||
205 | 205 | ||
206 | static inline u32 dst_mtu(const struct dst_entry *dst) | 206 | static inline u32 dst_mtu(const struct dst_entry *dst) |
207 | { | 207 | { |
208 | u32 mtu = dst_metric_raw(dst, RTAX_MTU); | 208 | return dst->ops->mtu(dst); |
209 | |||
210 | if (!mtu) | ||
211 | mtu = dst->ops->default_mtu(dst); | ||
212 | |||
213 | return mtu; | ||
214 | } | 209 | } |
215 | 210 | ||
216 | /* RTT metrics are stored in milliseconds for user ABI, but used as jiffies */ | 211 | /* RTT metrics are stored in milliseconds for user ABI, but used as jiffies */ |
diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h index 9adb99845a56..e1c2ee0eef47 100644 --- a/include/net/dst_ops.h +++ b/include/net/dst_ops.h | |||
@@ -17,7 +17,7 @@ struct dst_ops { | |||
17 | int (*gc)(struct dst_ops *ops); | 17 | int (*gc)(struct dst_ops *ops); |
18 | struct dst_entry * (*check)(struct dst_entry *, __u32 cookie); | 18 | struct dst_entry * (*check)(struct dst_entry *, __u32 cookie); |
19 | unsigned int (*default_advmss)(const struct dst_entry *); | 19 | unsigned int (*default_advmss)(const struct dst_entry *); |
20 | unsigned int (*default_mtu)(const struct dst_entry *); | 20 | unsigned int (*mtu)(const struct dst_entry *); |
21 | u32 * (*cow_metrics)(struct dst_entry *, unsigned long); | 21 | u32 * (*cow_metrics)(struct dst_entry *, unsigned long); |
22 | void (*destroy)(struct dst_entry *); | 22 | void (*destroy)(struct dst_entry *); |
23 | void (*ifdown)(struct dst_entry *, | 23 | void (*ifdown)(struct dst_entry *, |
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index b897d6e6d0a5..f941964a9931 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -31,6 +31,7 @@ | |||
31 | /** struct ip_options - IP Options | 31 | /** struct ip_options - IP Options |
32 | * | 32 | * |
33 | * @faddr - Saved first hop address | 33 | * @faddr - Saved first hop address |
34 | * @nexthop - Saved nexthop address in LSRR and SSRR | ||
34 | * @is_data - Options in __data, rather than skb | 35 | * @is_data - Options in __data, rather than skb |
35 | * @is_strictroute - Strict source route | 36 | * @is_strictroute - Strict source route |
36 | * @srr_is_hit - Packet destination addr was our one | 37 | * @srr_is_hit - Packet destination addr was our one |
@@ -41,6 +42,7 @@ | |||
41 | */ | 42 | */ |
42 | struct ip_options { | 43 | struct ip_options { |
43 | __be32 faddr; | 44 | __be32 faddr; |
45 | __be32 nexthop; | ||
44 | unsigned char optlen; | 46 | unsigned char optlen; |
45 | unsigned char srr; | 47 | unsigned char srr; |
46 | unsigned char rr; | 48 | unsigned char rr; |
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index f91a1fb5da7c..e8c25b981205 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h | |||
@@ -18,7 +18,6 @@ | |||
18 | 18 | ||
19 | #include <linux/kmemcheck.h> | 19 | #include <linux/kmemcheck.h> |
20 | #include <linux/list.h> | 20 | #include <linux/list.h> |
21 | #include <linux/module.h> | ||
22 | #include <linux/timer.h> | 21 | #include <linux/timer.h> |
23 | #include <linux/types.h> | 22 | #include <linux/types.h> |
24 | #include <linux/workqueue.h> | 23 | #include <linux/workqueue.h> |
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h index 78c83e62218f..e9ff3fc5e688 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h | |||
@@ -35,6 +35,7 @@ struct inet_peer { | |||
35 | 35 | ||
36 | u32 metrics[RTAX_MAX]; | 36 | u32 metrics[RTAX_MAX]; |
37 | u32 rate_tokens; /* rate limiting for ICMP */ | 37 | u32 rate_tokens; /* rate limiting for ICMP */ |
38 | int redirect_genid; | ||
38 | unsigned long rate_last; | 39 | unsigned long rate_last; |
39 | unsigned long pmtu_expires; | 40 | unsigned long pmtu_expires; |
40 | u32 pmtu_orig; | 41 | u32 pmtu_orig; |
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 8fa4430f99c1..873d5be7926c 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
@@ -425,9 +425,9 @@ struct ip_vs_protocol { | |||
425 | 425 | ||
426 | const char *(*state_name)(int state); | 426 | const char *(*state_name)(int state); |
427 | 427 | ||
428 | int (*state_transition)(struct ip_vs_conn *cp, int direction, | 428 | void (*state_transition)(struct ip_vs_conn *cp, int direction, |
429 | const struct sk_buff *skb, | 429 | const struct sk_buff *skb, |
430 | struct ip_vs_proto_data *pd); | 430 | struct ip_vs_proto_data *pd); |
431 | 431 | ||
432 | int (*register_app)(struct net *net, struct ip_vs_app *inc); | 432 | int (*register_app)(struct net *net, struct ip_vs_app *inc); |
433 | 433 | ||
@@ -1126,17 +1126,16 @@ int unregister_ip_vs_pe(struct ip_vs_pe *pe); | |||
1126 | struct ip_vs_pe *ip_vs_pe_getbyname(const char *name); | 1126 | struct ip_vs_pe *ip_vs_pe_getbyname(const char *name); |
1127 | struct ip_vs_pe *__ip_vs_pe_getbyname(const char *pe_name); | 1127 | struct ip_vs_pe *__ip_vs_pe_getbyname(const char *pe_name); |
1128 | 1128 | ||
1129 | static inline void ip_vs_pe_get(const struct ip_vs_pe *pe) | 1129 | /* |
1130 | { | 1130 | * Use a #define to avoid all of module.h just for these trivial ops |
1131 | if (pe && pe->module) | 1131 | */ |
1132 | #define ip_vs_pe_get(pe) \ | ||
1133 | if (pe && pe->module) \ | ||
1132 | __module_get(pe->module); | 1134 | __module_get(pe->module); |
1133 | } | ||
1134 | 1135 | ||
1135 | static inline void ip_vs_pe_put(const struct ip_vs_pe *pe) | 1136 | #define ip_vs_pe_put(pe) \ |
1136 | { | 1137 | if (pe && pe->module) \ |
1137 | if (pe && pe->module) | ||
1138 | module_put(pe->module); | 1138 | module_put(pe->module); |
1139 | } | ||
1140 | 1139 | ||
1141 | /* | 1140 | /* |
1142 | * IPVS protocol functions (from ip_vs_proto.c) | 1141 | * IPVS protocol functions (from ip_vs_proto.c) |
@@ -1378,7 +1377,7 @@ static inline int ip_vs_conntrack_enabled(struct netns_ipvs *ipvs) | |||
1378 | 1377 | ||
1379 | extern void ip_vs_update_conntrack(struct sk_buff *skb, struct ip_vs_conn *cp, | 1378 | extern void ip_vs_update_conntrack(struct sk_buff *skb, struct ip_vs_conn *cp, |
1380 | int outin); | 1379 | int outin); |
1381 | extern int ip_vs_confirm_conntrack(struct sk_buff *skb, struct ip_vs_conn *cp); | 1380 | extern int ip_vs_confirm_conntrack(struct sk_buff *skb); |
1382 | extern void ip_vs_nfct_expect_related(struct sk_buff *skb, struct nf_conn *ct, | 1381 | extern void ip_vs_nfct_expect_related(struct sk_buff *skb, struct nf_conn *ct, |
1383 | struct ip_vs_conn *cp, u_int8_t proto, | 1382 | struct ip_vs_conn *cp, u_int8_t proto, |
1384 | const __be16 port, int from_rs); | 1383 | const __be16 port, int from_rs); |
@@ -1396,8 +1395,7 @@ static inline void ip_vs_update_conntrack(struct sk_buff *skb, | |||
1396 | { | 1395 | { |
1397 | } | 1396 | } |
1398 | 1397 | ||
1399 | static inline int ip_vs_confirm_conntrack(struct sk_buff *skb, | 1398 | static inline int ip_vs_confirm_conntrack(struct sk_buff *skb) |
1400 | struct ip_vs_conn *cp) | ||
1401 | { | 1399 | { |
1402 | return NF_ACCEPT; | 1400 | return NF_ACCEPT; |
1403 | } | 1401 | } |
diff --git a/include/net/lib80211.h b/include/net/lib80211.h index 2ec896bb72b2..d178c26a5558 100644 --- a/include/net/lib80211.h +++ b/include/net/lib80211.h | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <linux/list.h> | 27 | #include <linux/list.h> |
28 | #include <linux/module.h> | ||
29 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
30 | #include <linux/if.h> | 29 | #include <linux/if.h> |
31 | #include <linux/skbuff.h> | 30 | #include <linux/skbuff.h> |
@@ -42,6 +41,8 @@ enum { | |||
42 | IEEE80211_CRYPTO_TKIP_COUNTERMEASURES = (1 << 0), | 41 | IEEE80211_CRYPTO_TKIP_COUNTERMEASURES = (1 << 0), |
43 | }; | 42 | }; |
44 | 43 | ||
44 | struct module; | ||
45 | |||
45 | struct lib80211_crypto_ops { | 46 | struct lib80211_crypto_ops { |
46 | const char *name; | 47 | const char *name; |
47 | struct list_head list; | 48 | struct list_head list; |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index dc1123aa8181..72eddd1b410b 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -3567,8 +3567,9 @@ rate_lowest_index(struct ieee80211_supported_band *sband, | |||
3567 | return i; | 3567 | return i; |
3568 | 3568 | ||
3569 | /* warn when we cannot find a rate. */ | 3569 | /* warn when we cannot find a rate. */ |
3570 | WARN_ON(1); | 3570 | WARN_ON_ONCE(1); |
3571 | 3571 | ||
3572 | /* and return 0 (the lowest index) */ | ||
3572 | return 0; | 3573 | return 0; |
3573 | } | 3574 | } |
3574 | 3575 | ||
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 0b7f05e4a927..8a2b0ae7dbd2 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
@@ -313,6 +313,8 @@ static inline bool nf_is_loopback_packet(const struct sk_buff *skb) | |||
313 | return skb->dev && skb->skb_iif && skb->dev->flags & IFF_LOOPBACK; | 313 | return skb->dev && skb->skb_iif && skb->dev->flags & IFF_LOOPBACK; |
314 | } | 314 | } |
315 | 315 | ||
316 | struct kernel_param; | ||
317 | |||
316 | extern int nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp); | 318 | extern int nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp); |
317 | extern unsigned int nf_conntrack_htable_size; | 319 | extern unsigned int nf_conntrack_htable_size; |
318 | extern unsigned int nf_conntrack_max; | 320 | extern unsigned int nf_conntrack_max; |
diff --git a/include/net/netfilter/nf_conntrack_ecache.h b/include/net/netfilter/nf_conntrack_ecache.h index 4283508b3e18..a88fb6939387 100644 --- a/include/net/netfilter/nf_conntrack_ecache.h +++ b/include/net/netfilter/nf_conntrack_ecache.h | |||
@@ -67,18 +67,18 @@ struct nf_ct_event_notifier { | |||
67 | int (*fcn)(unsigned int events, struct nf_ct_event *item); | 67 | int (*fcn)(unsigned int events, struct nf_ct_event *item); |
68 | }; | 68 | }; |
69 | 69 | ||
70 | extern struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; | 70 | extern int nf_conntrack_register_notifier(struct net *net, struct nf_ct_event_notifier *nb); |
71 | extern int nf_conntrack_register_notifier(struct nf_ct_event_notifier *nb); | 71 | extern void nf_conntrack_unregister_notifier(struct net *net, struct nf_ct_event_notifier *nb); |
72 | extern void nf_conntrack_unregister_notifier(struct nf_ct_event_notifier *nb); | ||
73 | 72 | ||
74 | extern void nf_ct_deliver_cached_events(struct nf_conn *ct); | 73 | extern void nf_ct_deliver_cached_events(struct nf_conn *ct); |
75 | 74 | ||
76 | static inline void | 75 | static inline void |
77 | nf_conntrack_event_cache(enum ip_conntrack_events event, struct nf_conn *ct) | 76 | nf_conntrack_event_cache(enum ip_conntrack_events event, struct nf_conn *ct) |
78 | { | 77 | { |
78 | struct net *net = nf_ct_net(ct); | ||
79 | struct nf_conntrack_ecache *e; | 79 | struct nf_conntrack_ecache *e; |
80 | 80 | ||
81 | if (nf_conntrack_event_cb == NULL) | 81 | if (net->ct.nf_conntrack_event_cb == NULL) |
82 | return; | 82 | return; |
83 | 83 | ||
84 | e = nf_ct_ecache_find(ct); | 84 | e = nf_ct_ecache_find(ct); |
@@ -95,11 +95,12 @@ nf_conntrack_eventmask_report(unsigned int eventmask, | |||
95 | int report) | 95 | int report) |
96 | { | 96 | { |
97 | int ret = 0; | 97 | int ret = 0; |
98 | struct net *net = nf_ct_net(ct); | ||
98 | struct nf_ct_event_notifier *notify; | 99 | struct nf_ct_event_notifier *notify; |
99 | struct nf_conntrack_ecache *e; | 100 | struct nf_conntrack_ecache *e; |
100 | 101 | ||
101 | rcu_read_lock(); | 102 | rcu_read_lock(); |
102 | notify = rcu_dereference(nf_conntrack_event_cb); | 103 | notify = rcu_dereference(net->ct.nf_conntrack_event_cb); |
103 | if (notify == NULL) | 104 | if (notify == NULL) |
104 | goto out_unlock; | 105 | goto out_unlock; |
105 | 106 | ||
@@ -164,9 +165,8 @@ struct nf_exp_event_notifier { | |||
164 | int (*fcn)(unsigned int events, struct nf_exp_event *item); | 165 | int (*fcn)(unsigned int events, struct nf_exp_event *item); |
165 | }; | 166 | }; |
166 | 167 | ||
167 | extern struct nf_exp_event_notifier __rcu *nf_expect_event_cb; | 168 | extern int nf_ct_expect_register_notifier(struct net *net, struct nf_exp_event_notifier *nb); |
168 | extern int nf_ct_expect_register_notifier(struct nf_exp_event_notifier *nb); | 169 | extern void nf_ct_expect_unregister_notifier(struct net *net, struct nf_exp_event_notifier *nb); |
169 | extern void nf_ct_expect_unregister_notifier(struct nf_exp_event_notifier *nb); | ||
170 | 170 | ||
171 | static inline void | 171 | static inline void |
172 | nf_ct_expect_event_report(enum ip_conntrack_expect_events event, | 172 | nf_ct_expect_event_report(enum ip_conntrack_expect_events event, |
@@ -174,11 +174,12 @@ nf_ct_expect_event_report(enum ip_conntrack_expect_events event, | |||
174 | u32 pid, | 174 | u32 pid, |
175 | int report) | 175 | int report) |
176 | { | 176 | { |
177 | struct net *net = nf_ct_exp_net(exp); | ||
177 | struct nf_exp_event_notifier *notify; | 178 | struct nf_exp_event_notifier *notify; |
178 | struct nf_conntrack_ecache *e; | 179 | struct nf_conntrack_ecache *e; |
179 | 180 | ||
180 | rcu_read_lock(); | 181 | rcu_read_lock(); |
181 | notify = rcu_dereference(nf_expect_event_cb); | 182 | notify = rcu_dereference(net->ct.nf_expect_event_cb); |
182 | if (notify == NULL) | 183 | if (notify == NULL) |
183 | goto out_unlock; | 184 | goto out_unlock; |
184 | 185 | ||
diff --git a/include/net/netfilter/nf_conntrack_tuple.h b/include/net/netfilter/nf_conntrack_tuple.h index 7ca6bdd5bae6..2f8fb77bfdd1 100644 --- a/include/net/netfilter/nf_conntrack_tuple.h +++ b/include/net/netfilter/nf_conntrack_tuple.h | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/netfilter/x_tables.h> | 13 | #include <linux/netfilter/x_tables.h> |
14 | #include <linux/netfilter/nf_conntrack_tuple_common.h> | 14 | #include <linux/netfilter/nf_conntrack_tuple_common.h> |
15 | #include <linux/netfilter_ipv4/nf_nat.h> | ||
15 | #include <linux/list_nulls.h> | 16 | #include <linux/list_nulls.h> |
16 | 17 | ||
17 | /* A `tuple' is a structure containing the information to uniquely | 18 | /* A `tuple' is a structure containing the information to uniquely |
@@ -24,32 +25,6 @@ | |||
24 | 25 | ||
25 | #define NF_CT_TUPLE_L3SIZE ARRAY_SIZE(((union nf_inet_addr *)NULL)->all) | 26 | #define NF_CT_TUPLE_L3SIZE ARRAY_SIZE(((union nf_inet_addr *)NULL)->all) |
26 | 27 | ||
27 | /* The protocol-specific manipulable parts of the tuple: always in | ||
28 | network order! */ | ||
29 | union nf_conntrack_man_proto { | ||
30 | /* Add other protocols here. */ | ||
31 | __be16 all; | ||
32 | |||
33 | struct { | ||
34 | __be16 port; | ||
35 | } tcp; | ||
36 | struct { | ||
37 | __be16 port; | ||
38 | } udp; | ||
39 | struct { | ||
40 | __be16 id; | ||
41 | } icmp; | ||
42 | struct { | ||
43 | __be16 port; | ||
44 | } dccp; | ||
45 | struct { | ||
46 | __be16 port; | ||
47 | } sctp; | ||
48 | struct { | ||
49 | __be16 key; /* GRE key is 32bit, PPtP only uses 16bit */ | ||
50 | } gre; | ||
51 | }; | ||
52 | |||
53 | /* The manipulable part of the tuple. */ | 28 | /* The manipulable part of the tuple. */ |
54 | struct nf_conntrack_man { | 29 | struct nf_conntrack_man { |
55 | union nf_inet_addr u3; | 30 | union nf_inet_addr u3; |
diff --git a/include/net/netfilter/nf_log.h b/include/net/netfilter/nf_log.h index 920997f1aff0..e991bd0a27af 100644 --- a/include/net/netfilter/nf_log.h +++ b/include/net/netfilter/nf_log.h | |||
@@ -53,12 +53,13 @@ int nf_log_bind_pf(u_int8_t pf, const struct nf_logger *logger); | |||
53 | void nf_log_unbind_pf(u_int8_t pf); | 53 | void nf_log_unbind_pf(u_int8_t pf); |
54 | 54 | ||
55 | /* Calls the registered backend logging function */ | 55 | /* Calls the registered backend logging function */ |
56 | __printf(7, 8) | ||
56 | void nf_log_packet(u_int8_t pf, | 57 | void nf_log_packet(u_int8_t pf, |
57 | unsigned int hooknum, | 58 | unsigned int hooknum, |
58 | const struct sk_buff *skb, | 59 | const struct sk_buff *skb, |
59 | const struct net_device *in, | 60 | const struct net_device *in, |
60 | const struct net_device *out, | 61 | const struct net_device *out, |
61 | const struct nf_loginfo *li, | 62 | const struct nf_loginfo *li, |
62 | const char *fmt, ...) __attribute__ ((format(printf,7,8))); | 63 | const char *fmt, ...); |
63 | 64 | ||
64 | #endif /* _NF_LOG_H */ | 65 | #endif /* _NF_LOG_H */ |
diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h index 0346b0070864..b8872df7285f 100644 --- a/include/net/netfilter/nf_nat.h +++ b/include/net/netfilter/nf_nat.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _NF_NAT_H | 1 | #ifndef _NF_NAT_H |
2 | #define _NF_NAT_H | 2 | #define _NF_NAT_H |
3 | #include <linux/netfilter_ipv4.h> | 3 | #include <linux/netfilter_ipv4.h> |
4 | #include <linux/netfilter_ipv4/nf_nat.h> | ||
4 | #include <net/netfilter/nf_conntrack_tuple.h> | 5 | #include <net/netfilter/nf_conntrack_tuple.h> |
5 | 6 | ||
6 | #define NF_NAT_MAPPING_TYPE_MAX_NAMELEN 16 | 7 | #define NF_NAT_MAPPING_TYPE_MAX_NAMELEN 16 |
@@ -14,11 +15,6 @@ enum nf_nat_manip_type { | |||
14 | #define HOOK2MANIP(hooknum) ((hooknum) != NF_INET_POST_ROUTING && \ | 15 | #define HOOK2MANIP(hooknum) ((hooknum) != NF_INET_POST_ROUTING && \ |
15 | (hooknum) != NF_INET_LOCAL_IN) | 16 | (hooknum) != NF_INET_LOCAL_IN) |
16 | 17 | ||
17 | #define IP_NAT_RANGE_MAP_IPS 1 | ||
18 | #define IP_NAT_RANGE_PROTO_SPECIFIED 2 | ||
19 | #define IP_NAT_RANGE_PROTO_RANDOM 4 | ||
20 | #define IP_NAT_RANGE_PERSISTENT 8 | ||
21 | |||
22 | /* NAT sequence number modifications */ | 18 | /* NAT sequence number modifications */ |
23 | struct nf_nat_seq { | 19 | struct nf_nat_seq { |
24 | /* position of the last TCP sequence number modification (if any) */ | 20 | /* position of the last TCP sequence number modification (if any) */ |
@@ -28,26 +24,6 @@ struct nf_nat_seq { | |||
28 | int16_t offset_before, offset_after; | 24 | int16_t offset_before, offset_after; |
29 | }; | 25 | }; |
30 | 26 | ||
31 | /* Single range specification. */ | ||
32 | struct nf_nat_range { | ||
33 | /* Set to OR of flags above. */ | ||
34 | unsigned int flags; | ||
35 | |||
36 | /* Inclusive: network order. */ | ||
37 | __be32 min_ip, max_ip; | ||
38 | |||
39 | /* Inclusive: network order */ | ||
40 | union nf_conntrack_man_proto min, max; | ||
41 | }; | ||
42 | |||
43 | /* For backwards compat: don't use in modern code. */ | ||
44 | struct nf_nat_multi_range_compat { | ||
45 | unsigned int rangesize; /* Must be 1. */ | ||
46 | |||
47 | /* hangs off end. */ | ||
48 | struct nf_nat_range range[1]; | ||
49 | }; | ||
50 | |||
51 | #include <linux/list.h> | 27 | #include <linux/list.h> |
52 | #include <linux/netfilter/nf_conntrack_pptp.h> | 28 | #include <linux/netfilter/nf_conntrack_pptp.h> |
53 | #include <net/netfilter/nf_conntrack_extend.h> | 29 | #include <net/netfilter/nf_conntrack_extend.h> |
diff --git a/include/net/netlink.h b/include/net/netlink.h index 98c185441bee..cb1f3504687f 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h | |||
@@ -192,8 +192,15 @@ enum { | |||
192 | * NLA_NUL_STRING Maximum length of string (excluding NUL) | 192 | * NLA_NUL_STRING Maximum length of string (excluding NUL) |
193 | * NLA_FLAG Unused | 193 | * NLA_FLAG Unused |
194 | * NLA_BINARY Maximum length of attribute payload | 194 | * NLA_BINARY Maximum length of attribute payload |
195 | * NLA_NESTED_COMPAT Exact length of structure payload | 195 | * NLA_NESTED Don't use `len' field -- length verification is |
196 | * All other Exact length of attribute payload | 196 | * done by checking len of nested header (or empty) |
197 | * NLA_NESTED_COMPAT Minimum length of structure payload | ||
198 | * NLA_U8, NLA_U16, | ||
199 | * NLA_U32, NLA_U64, | ||
200 | * NLA_MSECS Leaving the length field zero will verify the | ||
201 | * given type fits, using it verifies minimum length | ||
202 | * just like "All other" | ||
203 | * All other Minimum length of attribute payload | ||
197 | * | 204 | * |
198 | * Example: | 205 | * Example: |
199 | * static const struct nla_policy my_policy[ATTR_MAX+1] = { | 206 | * static const struct nla_policy my_policy[ATTR_MAX+1] = { |
diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h index 0249399e51a7..7a911eca0f18 100644 --- a/include/net/netns/conntrack.h +++ b/include/net/netns/conntrack.h | |||
@@ -18,6 +18,8 @@ struct netns_ct { | |||
18 | struct hlist_nulls_head unconfirmed; | 18 | struct hlist_nulls_head unconfirmed; |
19 | struct hlist_nulls_head dying; | 19 | struct hlist_nulls_head dying; |
20 | struct ip_conntrack_stat __percpu *stat; | 20 | struct ip_conntrack_stat __percpu *stat; |
21 | struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; | ||
22 | struct nf_exp_event_notifier __rcu *nf_expect_event_cb; | ||
21 | int sysctl_events; | 23 | int sysctl_events; |
22 | unsigned int sysctl_events_retry_timeout; | 24 | unsigned int sysctl_events_retry_timeout; |
23 | int sysctl_acct; | 25 | int sysctl_acct; |
diff --git a/include/net/red.h b/include/net/red.h index 3319f16b3beb..b72a3b833936 100644 --- a/include/net/red.h +++ b/include/net/red.h | |||
@@ -116,7 +116,7 @@ struct red_parms { | |||
116 | u32 qR; /* Cached random number */ | 116 | u32 qR; /* Cached random number */ |
117 | 117 | ||
118 | unsigned long qavg; /* Average queue length: A scaled */ | 118 | unsigned long qavg; /* Average queue length: A scaled */ |
119 | psched_time_t qidlestart; /* Start of current idle period */ | 119 | ktime_t qidlestart; /* Start of current idle period */ |
120 | }; | 120 | }; |
121 | 121 | ||
122 | static inline u32 red_rmask(u8 Plog) | 122 | static inline u32 red_rmask(u8 Plog) |
@@ -148,17 +148,17 @@ static inline void red_set_parms(struct red_parms *p, | |||
148 | 148 | ||
149 | static inline int red_is_idling(struct red_parms *p) | 149 | static inline int red_is_idling(struct red_parms *p) |
150 | { | 150 | { |
151 | return p->qidlestart != PSCHED_PASTPERFECT; | 151 | return p->qidlestart.tv64 != 0; |
152 | } | 152 | } |
153 | 153 | ||
154 | static inline void red_start_of_idle_period(struct red_parms *p) | 154 | static inline void red_start_of_idle_period(struct red_parms *p) |
155 | { | 155 | { |
156 | p->qidlestart = psched_get_time(); | 156 | p->qidlestart = ktime_get(); |
157 | } | 157 | } |
158 | 158 | ||
159 | static inline void red_end_of_idle_period(struct red_parms *p) | 159 | static inline void red_end_of_idle_period(struct red_parms *p) |
160 | { | 160 | { |
161 | p->qidlestart = PSCHED_PASTPERFECT; | 161 | p->qidlestart.tv64 = 0; |
162 | } | 162 | } |
163 | 163 | ||
164 | static inline void red_restart(struct red_parms *p) | 164 | static inline void red_restart(struct red_parms *p) |
@@ -170,13 +170,10 @@ static inline void red_restart(struct red_parms *p) | |||
170 | 170 | ||
171 | static inline unsigned long red_calc_qavg_from_idle_time(struct red_parms *p) | 171 | static inline unsigned long red_calc_qavg_from_idle_time(struct red_parms *p) |
172 | { | 172 | { |
173 | psched_time_t now; | 173 | s64 delta = ktime_us_delta(ktime_get(), p->qidlestart); |
174 | long us_idle; | 174 | long us_idle = min_t(s64, delta, p->Scell_max); |
175 | int shift; | 175 | int shift; |
176 | 176 | ||
177 | now = psched_get_time(); | ||
178 | us_idle = psched_tdiff_bounded(now, p->qidlestart, p->Scell_max); | ||
179 | |||
180 | /* | 177 | /* |
181 | * The problem: ideally, average length queue recalcultion should | 178 | * The problem: ideally, average length queue recalcultion should |
182 | * be done over constant clock intervals. This is too expensive, so | 179 | * be done over constant clock intervals. This is too expensive, so |
diff --git a/include/net/route.h b/include/net/route.h index db7b3432f07c..91855d185b53 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -71,12 +71,12 @@ struct rtable { | |||
71 | struct fib_info *fi; /* for client ref to shared metrics */ | 71 | struct fib_info *fi; /* for client ref to shared metrics */ |
72 | }; | 72 | }; |
73 | 73 | ||
74 | static inline bool rt_is_input_route(struct rtable *rt) | 74 | static inline bool rt_is_input_route(const struct rtable *rt) |
75 | { | 75 | { |
76 | return rt->rt_route_iif != 0; | 76 | return rt->rt_route_iif != 0; |
77 | } | 77 | } |
78 | 78 | ||
79 | static inline bool rt_is_output_route(struct rtable *rt) | 79 | static inline bool rt_is_output_route(const struct rtable *rt) |
80 | { | 80 | { |
81 | return rt->rt_route_iif == 0; | 81 | return rt->rt_route_iif == 0; |
82 | } | 82 | } |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 2eb207ea4eaf..f6bb08b73ca4 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -4,7 +4,6 @@ | |||
4 | #include <linux/netdevice.h> | 4 | #include <linux/netdevice.h> |
5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
6 | #include <linux/rcupdate.h> | 6 | #include <linux/rcupdate.h> |
7 | #include <linux/module.h> | ||
8 | #include <linux/pkt_sched.h> | 7 | #include <linux/pkt_sched.h> |
9 | #include <linux/pkt_cls.h> | 8 | #include <linux/pkt_cls.h> |
10 | #include <net/gen_stats.h> | 9 | #include <net/gen_stats.h> |
diff --git a/include/net/sock.h b/include/net/sock.h index 5ac682f73d63..abb6e0f0c3c3 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <linux/list_nulls.h> | 46 | #include <linux/list_nulls.h> |
47 | #include <linux/timer.h> | 47 | #include <linux/timer.h> |
48 | #include <linux/cache.h> | 48 | #include <linux/cache.h> |
49 | #include <linux/module.h> | ||
50 | #include <linux/lockdep.h> | 49 | #include <linux/lockdep.h> |
51 | #include <linux/netdevice.h> | 50 | #include <linux/netdevice.h> |
52 | #include <linux/skbuff.h> /* struct sk_buff */ | 51 | #include <linux/skbuff.h> /* struct sk_buff */ |
@@ -76,8 +75,8 @@ | |||
76 | printk(KERN_DEBUG msg); } while (0) | 75 | printk(KERN_DEBUG msg); } while (0) |
77 | #else | 76 | #else |
78 | /* Validate arguments and do nothing */ | 77 | /* Validate arguments and do nothing */ |
79 | static inline void __attribute__ ((format (printf, 2, 3))) | 78 | static inline __printf(2, 3) |
80 | SOCK_DEBUG(struct sock *sk, const char *msg, ...) | 79 | void SOCK_DEBUG(struct sock *sk, const char *msg, ...) |
81 | { | 80 | { |
82 | } | 81 | } |
83 | #endif | 82 | #endif |
@@ -729,6 +728,7 @@ struct request_sock_ops; | |||
729 | struct timewait_sock_ops; | 728 | struct timewait_sock_ops; |
730 | struct inet_hashinfo; | 729 | struct inet_hashinfo; |
731 | struct raw_hashinfo; | 730 | struct raw_hashinfo; |
731 | struct module; | ||
732 | 732 | ||
733 | /* Networking protocol blocks we attach to sockets. | 733 | /* Networking protocol blocks we attach to sockets. |
734 | * socket layer -> transport layer interface | 734 | * socket layer -> transport layer interface |
diff --git a/include/net/tcp.h b/include/net/tcp.h index e147f42d643d..bb18c4d69aba 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1403,11 +1403,13 @@ enum tcp_seq_states { | |||
1403 | TCP_SEQ_STATE_TIME_WAIT, | 1403 | TCP_SEQ_STATE_TIME_WAIT, |
1404 | }; | 1404 | }; |
1405 | 1405 | ||
1406 | int tcp_seq_open(struct inode *inode, struct file *file); | ||
1407 | |||
1406 | struct tcp_seq_afinfo { | 1408 | struct tcp_seq_afinfo { |
1407 | char *name; | 1409 | char *name; |
1408 | sa_family_t family; | 1410 | sa_family_t family; |
1409 | struct file_operations seq_fops; | 1411 | const struct file_operations *seq_fops; |
1410 | struct seq_operations seq_ops; | 1412 | struct seq_operations seq_ops; |
1411 | }; | 1413 | }; |
1412 | 1414 | ||
1413 | struct tcp_iter_state { | 1415 | struct tcp_iter_state { |
diff --git a/include/net/udp.h b/include/net/udp.h index 67ea6fcb3ec0..3b285f402f48 100644 --- a/include/net/udp.h +++ b/include/net/udp.h | |||
@@ -230,12 +230,14 @@ extern struct sock *udp6_lib_lookup(struct net *net, const struct in6_addr *sadd | |||
230 | #endif | 230 | #endif |
231 | 231 | ||
232 | /* /proc */ | 232 | /* /proc */ |
233 | int udp_seq_open(struct inode *inode, struct file *file); | ||
234 | |||
233 | struct udp_seq_afinfo { | 235 | struct udp_seq_afinfo { |
234 | char *name; | 236 | char *name; |
235 | sa_family_t family; | 237 | sa_family_t family; |
236 | struct udp_table *udp_table; | 238 | struct udp_table *udp_table; |
237 | struct file_operations seq_fops; | 239 | const struct file_operations *seq_fops; |
238 | struct seq_operations seq_ops; | 240 | struct seq_operations seq_ops; |
239 | }; | 241 | }; |
240 | 242 | ||
241 | struct udp_iter_state { | 243 | struct udp_iter_state { |
diff --git a/include/rdma/ib_user_verbs.h b/include/rdma/ib_user_verbs.h index fe5b05177a2c..81aba3a73aa3 100644 --- a/include/rdma/ib_user_verbs.h +++ b/include/rdma/ib_user_verbs.h | |||
@@ -81,7 +81,11 @@ enum { | |||
81 | IB_USER_VERBS_CMD_MODIFY_SRQ, | 81 | IB_USER_VERBS_CMD_MODIFY_SRQ, |
82 | IB_USER_VERBS_CMD_QUERY_SRQ, | 82 | IB_USER_VERBS_CMD_QUERY_SRQ, |
83 | IB_USER_VERBS_CMD_DESTROY_SRQ, | 83 | IB_USER_VERBS_CMD_DESTROY_SRQ, |
84 | IB_USER_VERBS_CMD_POST_SRQ_RECV | 84 | IB_USER_VERBS_CMD_POST_SRQ_RECV, |
85 | IB_USER_VERBS_CMD_OPEN_XRCD, | ||
86 | IB_USER_VERBS_CMD_CLOSE_XRCD, | ||
87 | IB_USER_VERBS_CMD_CREATE_XSRQ, | ||
88 | IB_USER_VERBS_CMD_OPEN_QP | ||
85 | }; | 89 | }; |
86 | 90 | ||
87 | /* | 91 | /* |
@@ -222,6 +226,21 @@ struct ib_uverbs_dealloc_pd { | |||
222 | __u32 pd_handle; | 226 | __u32 pd_handle; |
223 | }; | 227 | }; |
224 | 228 | ||
229 | struct ib_uverbs_open_xrcd { | ||
230 | __u64 response; | ||
231 | __u32 fd; | ||
232 | __u32 oflags; | ||
233 | __u64 driver_data[0]; | ||
234 | }; | ||
235 | |||
236 | struct ib_uverbs_open_xrcd_resp { | ||
237 | __u32 xrcd_handle; | ||
238 | }; | ||
239 | |||
240 | struct ib_uverbs_close_xrcd { | ||
241 | __u32 xrcd_handle; | ||
242 | }; | ||
243 | |||
225 | struct ib_uverbs_reg_mr { | 244 | struct ib_uverbs_reg_mr { |
226 | __u64 response; | 245 | __u64 response; |
227 | __u64 start; | 246 | __u64 start; |
@@ -404,6 +423,17 @@ struct ib_uverbs_create_qp { | |||
404 | __u64 driver_data[0]; | 423 | __u64 driver_data[0]; |
405 | }; | 424 | }; |
406 | 425 | ||
426 | struct ib_uverbs_open_qp { | ||
427 | __u64 response; | ||
428 | __u64 user_handle; | ||
429 | __u32 pd_handle; | ||
430 | __u32 qpn; | ||
431 | __u8 qp_type; | ||
432 | __u8 reserved[7]; | ||
433 | __u64 driver_data[0]; | ||
434 | }; | ||
435 | |||
436 | /* also used for open response */ | ||
407 | struct ib_uverbs_create_qp_resp { | 437 | struct ib_uverbs_create_qp_resp { |
408 | __u32 qp_handle; | 438 | __u32 qp_handle; |
409 | __u32 qpn; | 439 | __u32 qpn; |
@@ -648,11 +678,25 @@ struct ib_uverbs_create_srq { | |||
648 | __u64 driver_data[0]; | 678 | __u64 driver_data[0]; |
649 | }; | 679 | }; |
650 | 680 | ||
681 | struct ib_uverbs_create_xsrq { | ||
682 | __u64 response; | ||
683 | __u64 user_handle; | ||
684 | __u32 srq_type; | ||
685 | __u32 pd_handle; | ||
686 | __u32 max_wr; | ||
687 | __u32 max_sge; | ||
688 | __u32 srq_limit; | ||
689 | __u32 reserved; | ||
690 | __u32 xrcd_handle; | ||
691 | __u32 cq_handle; | ||
692 | __u64 driver_data[0]; | ||
693 | }; | ||
694 | |||
651 | struct ib_uverbs_create_srq_resp { | 695 | struct ib_uverbs_create_srq_resp { |
652 | __u32 srq_handle; | 696 | __u32 srq_handle; |
653 | __u32 max_wr; | 697 | __u32 max_wr; |
654 | __u32 max_sge; | 698 | __u32 max_sge; |
655 | __u32 reserved; | 699 | __u32 srqn; |
656 | }; | 700 | }; |
657 | 701 | ||
658 | struct ib_uverbs_modify_srq { | 702 | struct ib_uverbs_modify_srq { |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 228be3e220d9..bf5daafe8ecc 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -112,6 +112,7 @@ enum ib_device_cap_flags { | |||
112 | */ | 112 | */ |
113 | IB_DEVICE_UD_IP_CSUM = (1<<18), | 113 | IB_DEVICE_UD_IP_CSUM = (1<<18), |
114 | IB_DEVICE_UD_TSO = (1<<19), | 114 | IB_DEVICE_UD_TSO = (1<<19), |
115 | IB_DEVICE_XRC = (1<<20), | ||
115 | IB_DEVICE_MEM_MGT_EXTENSIONS = (1<<21), | 116 | IB_DEVICE_MEM_MGT_EXTENSIONS = (1<<21), |
116 | IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1<<22), | 117 | IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1<<22), |
117 | }; | 118 | }; |
@@ -207,6 +208,7 @@ enum ib_port_cap_flags { | |||
207 | IB_PORT_SM_DISABLED = 1 << 10, | 208 | IB_PORT_SM_DISABLED = 1 << 10, |
208 | IB_PORT_SYS_IMAGE_GUID_SUP = 1 << 11, | 209 | IB_PORT_SYS_IMAGE_GUID_SUP = 1 << 11, |
209 | IB_PORT_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12, | 210 | IB_PORT_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12, |
211 | IB_PORT_EXTENDED_SPEEDS_SUP = 1 << 14, | ||
210 | IB_PORT_CM_SUP = 1 << 16, | 212 | IB_PORT_CM_SUP = 1 << 16, |
211 | IB_PORT_SNMP_TUNNEL_SUP = 1 << 17, | 213 | IB_PORT_SNMP_TUNNEL_SUP = 1 << 17, |
212 | IB_PORT_REINIT_SUP = 1 << 18, | 214 | IB_PORT_REINIT_SUP = 1 << 18, |
@@ -415,7 +417,15 @@ enum ib_rate { | |||
415 | IB_RATE_40_GBPS = 7, | 417 | IB_RATE_40_GBPS = 7, |
416 | IB_RATE_60_GBPS = 8, | 418 | IB_RATE_60_GBPS = 8, |
417 | IB_RATE_80_GBPS = 9, | 419 | IB_RATE_80_GBPS = 9, |
418 | IB_RATE_120_GBPS = 10 | 420 | IB_RATE_120_GBPS = 10, |
421 | IB_RATE_14_GBPS = 11, | ||
422 | IB_RATE_56_GBPS = 12, | ||
423 | IB_RATE_112_GBPS = 13, | ||
424 | IB_RATE_168_GBPS = 14, | ||
425 | IB_RATE_25_GBPS = 15, | ||
426 | IB_RATE_100_GBPS = 16, | ||
427 | IB_RATE_200_GBPS = 17, | ||
428 | IB_RATE_300_GBPS = 18 | ||
419 | }; | 429 | }; |
420 | 430 | ||
421 | /** | 431 | /** |
@@ -427,6 +437,13 @@ enum ib_rate { | |||
427 | int ib_rate_to_mult(enum ib_rate rate) __attribute_const__; | 437 | int ib_rate_to_mult(enum ib_rate rate) __attribute_const__; |
428 | 438 | ||
429 | /** | 439 | /** |
440 | * ib_rate_to_mbps - Convert the IB rate enum to Mbps. | ||
441 | * For example, IB_RATE_2_5_GBPS will be converted to 2500. | ||
442 | * @rate: rate to convert. | ||
443 | */ | ||
444 | int ib_rate_to_mbps(enum ib_rate rate) __attribute_const__; | ||
445 | |||
446 | /** | ||
430 | * mult_to_ib_rate - Convert a multiple of 2.5 Gbit/sec to an IB rate | 447 | * mult_to_ib_rate - Convert a multiple of 2.5 Gbit/sec to an IB rate |
431 | * enum. | 448 | * enum. |
432 | * @mult: multiple to convert. | 449 | * @mult: multiple to convert. |
@@ -522,6 +539,11 @@ enum ib_cq_notify_flags { | |||
522 | IB_CQ_REPORT_MISSED_EVENTS = 1 << 2, | 539 | IB_CQ_REPORT_MISSED_EVENTS = 1 << 2, |
523 | }; | 540 | }; |
524 | 541 | ||
542 | enum ib_srq_type { | ||
543 | IB_SRQT_BASIC, | ||
544 | IB_SRQT_XRC | ||
545 | }; | ||
546 | |||
525 | enum ib_srq_attr_mask { | 547 | enum ib_srq_attr_mask { |
526 | IB_SRQ_MAX_WR = 1 << 0, | 548 | IB_SRQ_MAX_WR = 1 << 0, |
527 | IB_SRQ_LIMIT = 1 << 1, | 549 | IB_SRQ_LIMIT = 1 << 1, |
@@ -537,6 +559,14 @@ struct ib_srq_init_attr { | |||
537 | void (*event_handler)(struct ib_event *, void *); | 559 | void (*event_handler)(struct ib_event *, void *); |
538 | void *srq_context; | 560 | void *srq_context; |
539 | struct ib_srq_attr attr; | 561 | struct ib_srq_attr attr; |
562 | enum ib_srq_type srq_type; | ||
563 | |||
564 | union { | ||
565 | struct { | ||
566 | struct ib_xrcd *xrcd; | ||
567 | struct ib_cq *cq; | ||
568 | } xrc; | ||
569 | } ext; | ||
540 | }; | 570 | }; |
541 | 571 | ||
542 | struct ib_qp_cap { | 572 | struct ib_qp_cap { |
@@ -565,7 +595,11 @@ enum ib_qp_type { | |||
565 | IB_QPT_UC, | 595 | IB_QPT_UC, |
566 | IB_QPT_UD, | 596 | IB_QPT_UD, |
567 | IB_QPT_RAW_IPV6, | 597 | IB_QPT_RAW_IPV6, |
568 | IB_QPT_RAW_ETHERTYPE | 598 | IB_QPT_RAW_ETHERTYPE, |
599 | /* Save 8 for RAW_PACKET */ | ||
600 | IB_QPT_XRC_INI = 9, | ||
601 | IB_QPT_XRC_TGT, | ||
602 | IB_QPT_MAX | ||
569 | }; | 603 | }; |
570 | 604 | ||
571 | enum ib_qp_create_flags { | 605 | enum ib_qp_create_flags { |
@@ -579,6 +613,7 @@ struct ib_qp_init_attr { | |||
579 | struct ib_cq *send_cq; | 613 | struct ib_cq *send_cq; |
580 | struct ib_cq *recv_cq; | 614 | struct ib_cq *recv_cq; |
581 | struct ib_srq *srq; | 615 | struct ib_srq *srq; |
616 | struct ib_xrcd *xrcd; /* XRC TGT QPs only */ | ||
582 | struct ib_qp_cap cap; | 617 | struct ib_qp_cap cap; |
583 | enum ib_sig_type sq_sig_type; | 618 | enum ib_sig_type sq_sig_type; |
584 | enum ib_qp_type qp_type; | 619 | enum ib_qp_type qp_type; |
@@ -586,6 +621,13 @@ struct ib_qp_init_attr { | |||
586 | u8 port_num; /* special QP types only */ | 621 | u8 port_num; /* special QP types only */ |
587 | }; | 622 | }; |
588 | 623 | ||
624 | struct ib_qp_open_attr { | ||
625 | void (*event_handler)(struct ib_event *, void *); | ||
626 | void *qp_context; | ||
627 | u32 qp_num; | ||
628 | enum ib_qp_type qp_type; | ||
629 | }; | ||
630 | |||
589 | enum ib_rnr_timeout { | 631 | enum ib_rnr_timeout { |
590 | IB_RNR_TIMER_655_36 = 0, | 632 | IB_RNR_TIMER_655_36 = 0, |
591 | IB_RNR_TIMER_000_01 = 1, | 633 | IB_RNR_TIMER_000_01 = 1, |
@@ -770,6 +812,7 @@ struct ib_send_wr { | |||
770 | u32 rkey; | 812 | u32 rkey; |
771 | } fast_reg; | 813 | } fast_reg; |
772 | } wr; | 814 | } wr; |
815 | u32 xrc_remote_srq_num; /* XRC TGT QPs only */ | ||
773 | }; | 816 | }; |
774 | 817 | ||
775 | struct ib_recv_wr { | 818 | struct ib_recv_wr { |
@@ -831,6 +874,7 @@ struct ib_ucontext { | |||
831 | struct list_head qp_list; | 874 | struct list_head qp_list; |
832 | struct list_head srq_list; | 875 | struct list_head srq_list; |
833 | struct list_head ah_list; | 876 | struct list_head ah_list; |
877 | struct list_head xrcd_list; | ||
834 | int closing; | 878 | int closing; |
835 | }; | 879 | }; |
836 | 880 | ||
@@ -858,6 +902,15 @@ struct ib_pd { | |||
858 | atomic_t usecnt; /* count all resources */ | 902 | atomic_t usecnt; /* count all resources */ |
859 | }; | 903 | }; |
860 | 904 | ||
905 | struct ib_xrcd { | ||
906 | struct ib_device *device; | ||
907 | atomic_t usecnt; /* count all exposed resources */ | ||
908 | struct inode *inode; | ||
909 | |||
910 | struct mutex tgt_qp_mutex; | ||
911 | struct list_head tgt_qp_list; | ||
912 | }; | ||
913 | |||
861 | struct ib_ah { | 914 | struct ib_ah { |
862 | struct ib_device *device; | 915 | struct ib_device *device; |
863 | struct ib_pd *pd; | 916 | struct ib_pd *pd; |
@@ -882,7 +935,16 @@ struct ib_srq { | |||
882 | struct ib_uobject *uobject; | 935 | struct ib_uobject *uobject; |
883 | void (*event_handler)(struct ib_event *, void *); | 936 | void (*event_handler)(struct ib_event *, void *); |
884 | void *srq_context; | 937 | void *srq_context; |
938 | enum ib_srq_type srq_type; | ||
885 | atomic_t usecnt; | 939 | atomic_t usecnt; |
940 | |||
941 | union { | ||
942 | struct { | ||
943 | struct ib_xrcd *xrcd; | ||
944 | struct ib_cq *cq; | ||
945 | u32 srq_num; | ||
946 | } xrc; | ||
947 | } ext; | ||
886 | }; | 948 | }; |
887 | 949 | ||
888 | struct ib_qp { | 950 | struct ib_qp { |
@@ -891,6 +953,11 @@ struct ib_qp { | |||
891 | struct ib_cq *send_cq; | 953 | struct ib_cq *send_cq; |
892 | struct ib_cq *recv_cq; | 954 | struct ib_cq *recv_cq; |
893 | struct ib_srq *srq; | 955 | struct ib_srq *srq; |
956 | struct ib_xrcd *xrcd; /* XRC TGT QPs only */ | ||
957 | struct list_head xrcd_list; | ||
958 | atomic_t usecnt; /* count times opened */ | ||
959 | struct list_head open_list; | ||
960 | struct ib_qp *real_qp; | ||
894 | struct ib_uobject *uobject; | 961 | struct ib_uobject *uobject; |
895 | void (*event_handler)(struct ib_event *, void *); | 962 | void (*event_handler)(struct ib_event *, void *); |
896 | void *qp_context; | 963 | void *qp_context; |
@@ -1149,6 +1216,10 @@ struct ib_device { | |||
1149 | struct ib_grh *in_grh, | 1216 | struct ib_grh *in_grh, |
1150 | struct ib_mad *in_mad, | 1217 | struct ib_mad *in_mad, |
1151 | struct ib_mad *out_mad); | 1218 | struct ib_mad *out_mad); |
1219 | struct ib_xrcd * (*alloc_xrcd)(struct ib_device *device, | ||
1220 | struct ib_ucontext *ucontext, | ||
1221 | struct ib_udata *udata); | ||
1222 | int (*dealloc_xrcd)(struct ib_xrcd *xrcd); | ||
1152 | 1223 | ||
1153 | struct ib_dma_mapping_ops *dma_ops; | 1224 | struct ib_dma_mapping_ops *dma_ops; |
1154 | 1225 | ||
@@ -1443,6 +1514,25 @@ int ib_query_qp(struct ib_qp *qp, | |||
1443 | int ib_destroy_qp(struct ib_qp *qp); | 1514 | int ib_destroy_qp(struct ib_qp *qp); |
1444 | 1515 | ||
1445 | /** | 1516 | /** |
1517 | * ib_open_qp - Obtain a reference to an existing sharable QP. | ||
1518 | * @xrcd - XRC domain | ||
1519 | * @qp_open_attr: Attributes identifying the QP to open. | ||
1520 | * | ||
1521 | * Returns a reference to a sharable QP. | ||
1522 | */ | ||
1523 | struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd, | ||
1524 | struct ib_qp_open_attr *qp_open_attr); | ||
1525 | |||
1526 | /** | ||
1527 | * ib_close_qp - Release an external reference to a QP. | ||
1528 | * @qp: The QP handle to release | ||
1529 | * | ||
1530 | * The opened QP handle is released by the caller. The underlying | ||
1531 | * shared QP is not destroyed until all internal references are released. | ||
1532 | */ | ||
1533 | int ib_close_qp(struct ib_qp *qp); | ||
1534 | |||
1535 | /** | ||
1446 | * ib_post_send - Posts a list of work requests to the send queue of | 1536 | * ib_post_send - Posts a list of work requests to the send queue of |
1447 | * the specified QP. | 1537 | * the specified QP. |
1448 | * @qp: The QP to post the work request on. | 1538 | * @qp: The QP to post the work request on. |
@@ -2060,4 +2150,16 @@ int ib_attach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid); | |||
2060 | */ | 2150 | */ |
2061 | int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid); | 2151 | int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid); |
2062 | 2152 | ||
2153 | /** | ||
2154 | * ib_alloc_xrcd - Allocates an XRC domain. | ||
2155 | * @device: The device on which to allocate the XRC domain. | ||
2156 | */ | ||
2157 | struct ib_xrcd *ib_alloc_xrcd(struct ib_device *device); | ||
2158 | |||
2159 | /** | ||
2160 | * ib_dealloc_xrcd - Deallocates an XRC domain. | ||
2161 | * @xrcd: The XRC domain to deallocate. | ||
2162 | */ | ||
2163 | int ib_dealloc_xrcd(struct ib_xrcd *xrcd); | ||
2164 | |||
2063 | #endif /* IB_VERBS_H */ | 2165 | #endif /* IB_VERBS_H */ |
diff --git a/include/rdma/iw_cm.h b/include/rdma/iw_cm.h index 2d0191c90f9e..1a046b1595cc 100644 --- a/include/rdma/iw_cm.h +++ b/include/rdma/iw_cm.h | |||
@@ -52,8 +52,10 @@ struct iw_cm_event { | |||
52 | struct sockaddr_in local_addr; | 52 | struct sockaddr_in local_addr; |
53 | struct sockaddr_in remote_addr; | 53 | struct sockaddr_in remote_addr; |
54 | void *private_data; | 54 | void *private_data; |
55 | u8 private_data_len; | ||
56 | void *provider_data; | 55 | void *provider_data; |
56 | u8 private_data_len; | ||
57 | u8 ord; | ||
58 | u8 ird; | ||
57 | }; | 59 | }; |
58 | 60 | ||
59 | /** | 61 | /** |
diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h index 26977c149c41..51988f808181 100644 --- a/include/rdma/rdma_cm.h +++ b/include/rdma/rdma_cm.h | |||
@@ -65,6 +65,7 @@ enum rdma_cm_event_type { | |||
65 | enum rdma_port_space { | 65 | enum rdma_port_space { |
66 | RDMA_PS_SDP = 0x0001, | 66 | RDMA_PS_SDP = 0x0001, |
67 | RDMA_PS_IPOIB = 0x0002, | 67 | RDMA_PS_IPOIB = 0x0002, |
68 | RDMA_PS_IB = 0x013F, | ||
68 | RDMA_PS_TCP = 0x0106, | 69 | RDMA_PS_TCP = 0x0106, |
69 | RDMA_PS_UDP = 0x0111, | 70 | RDMA_PS_UDP = 0x0111, |
70 | }; | 71 | }; |
diff --git a/include/rdma/rdma_user_cm.h b/include/rdma/rdma_user_cm.h index fc82c1896f75..5348a000c8f3 100644 --- a/include/rdma/rdma_user_cm.h +++ b/include/rdma/rdma_user_cm.h | |||
@@ -77,7 +77,8 @@ struct rdma_ucm_create_id { | |||
77 | __u64 uid; | 77 | __u64 uid; |
78 | __u64 response; | 78 | __u64 response; |
79 | __u16 ps; | 79 | __u16 ps; |
80 | __u8 reserved[6]; | 80 | __u8 qp_type; |
81 | __u8 reserved[5]; | ||
81 | }; | 82 | }; |
82 | 83 | ||
83 | struct rdma_ucm_create_id_resp { | 84 | struct rdma_ucm_create_id_resp { |
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h index d1e95c6ac776..5a35a2a2d3c5 100644 --- a/include/scsi/libfcoe.h +++ b/include/scsi/libfcoe.h | |||
@@ -147,6 +147,7 @@ struct fcoe_ctlr { | |||
147 | u8 map_dest; | 147 | u8 map_dest; |
148 | u8 spma; | 148 | u8 spma; |
149 | u8 probe_tries; | 149 | u8 probe_tries; |
150 | u8 priority; | ||
150 | u8 dest_addr[ETH_ALEN]; | 151 | u8 dest_addr[ETH_ALEN]; |
151 | u8 ctl_src_addr[ETH_ALEN]; | 152 | u8 ctl_src_addr[ETH_ALEN]; |
152 | 153 | ||
@@ -301,6 +302,7 @@ struct fcoe_percpu_s { | |||
301 | * @lport: The associated local port | 302 | * @lport: The associated local port |
302 | * @fcoe_pending_queue: The pending Rx queue of skbs | 303 | * @fcoe_pending_queue: The pending Rx queue of skbs |
303 | * @fcoe_pending_queue_active: Indicates if the pending queue is active | 304 | * @fcoe_pending_queue_active: Indicates if the pending queue is active |
305 | * @priority: Packet priority (DCB) | ||
304 | * @max_queue_depth: Max queue depth of pending queue | 306 | * @max_queue_depth: Max queue depth of pending queue |
305 | * @min_queue_depth: Min queue depth of pending queue | 307 | * @min_queue_depth: Min queue depth of pending queue |
306 | * @timer: The queue timer | 308 | * @timer: The queue timer |
@@ -316,6 +318,7 @@ struct fcoe_port { | |||
316 | struct fc_lport *lport; | 318 | struct fc_lport *lport; |
317 | struct sk_buff_head fcoe_pending_queue; | 319 | struct sk_buff_head fcoe_pending_queue; |
318 | u8 fcoe_pending_queue_active; | 320 | u8 fcoe_pending_queue_active; |
321 | u8 priority; | ||
319 | u32 max_queue_depth; | 322 | u32 max_queue_depth; |
320 | u32 min_queue_depth; | 323 | u32 min_queue_depth; |
321 | struct timer_list timer; | 324 | struct timer_list timer; |
diff --git a/include/sound/core.h b/include/sound/core.h index 1fa2407c966f..3be5ab782b99 100644 --- a/include/sound/core.h +++ b/include/sound/core.h | |||
@@ -22,7 +22,6 @@ | |||
22 | * | 22 | * |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <linux/module.h> | ||
26 | #include <linux/sched.h> /* wake_up() */ | 25 | #include <linux/sched.h> /* wake_up() */ |
27 | #include <linux/mutex.h> /* struct mutex */ | 26 | #include <linux/mutex.h> /* struct mutex */ |
28 | #include <linux/rwsem.h> /* struct rw_semaphore */ | 27 | #include <linux/rwsem.h> /* struct rw_semaphore */ |
@@ -43,6 +42,7 @@ | |||
43 | #ifdef CONFIG_PCI | 42 | #ifdef CONFIG_PCI |
44 | struct pci_dev; | 43 | struct pci_dev; |
45 | #endif | 44 | #endif |
45 | struct module; | ||
46 | 46 | ||
47 | /* device allocation stuff */ | 47 | /* device allocation stuff */ |
48 | 48 | ||
@@ -326,9 +326,9 @@ void release_and_free_resource(struct resource *res); | |||
326 | /* --- */ | 326 | /* --- */ |
327 | 327 | ||
328 | #if defined(CONFIG_SND_DEBUG) || defined(CONFIG_SND_VERBOSE_PRINTK) | 328 | #if defined(CONFIG_SND_DEBUG) || defined(CONFIG_SND_VERBOSE_PRINTK) |
329 | __printf(4, 5) | ||
329 | void __snd_printk(unsigned int level, const char *file, int line, | 330 | void __snd_printk(unsigned int level, const char *file, int line, |
330 | const char *format, ...) | 331 | const char *format, ...); |
331 | __attribute__ ((format (printf, 4, 5))); | ||
332 | #else | 332 | #else |
333 | #define __snd_printk(level, file, line, format, args...) \ | 333 | #define __snd_printk(level, file, line, format, args...) \ |
334 | printk(format, ##args) | 334 | printk(format, ##args) |
diff --git a/include/sound/info.h b/include/sound/info.h index 4e94cf1ff762..5492cc40dc57 100644 --- a/include/sound/info.h +++ b/include/sound/info.h | |||
@@ -110,8 +110,8 @@ void snd_card_info_read_oss(struct snd_info_buffer *buffer); | |||
110 | static inline void snd_card_info_read_oss(struct snd_info_buffer *buffer) {} | 110 | static inline void snd_card_info_read_oss(struct snd_info_buffer *buffer) {} |
111 | #endif | 111 | #endif |
112 | 112 | ||
113 | int snd_iprintf(struct snd_info_buffer *buffer, const char *fmt, ...) \ | 113 | __printf(2, 3) |
114 | __attribute__ ((format (printf, 2, 3))); | 114 | int snd_iprintf(struct snd_info_buffer *buffer, const char *fmt, ...); |
115 | int snd_info_init(void); | 115 | int snd_info_init(void); |
116 | int snd_info_done(void); | 116 | int snd_info_done(void); |
117 | 117 | ||
diff --git a/include/sound/seq_kernel.h b/include/sound/seq_kernel.h index 3d9afb6a8c9c..f352a98ce4f4 100644 --- a/include/sound/seq_kernel.h +++ b/include/sound/seq_kernel.h | |||
@@ -75,9 +75,9 @@ struct snd_seq_port_callback { | |||
75 | }; | 75 | }; |
76 | 76 | ||
77 | /* interface for kernel client */ | 77 | /* interface for kernel client */ |
78 | __printf(3, 4) | ||
78 | int snd_seq_create_kernel_client(struct snd_card *card, int client_index, | 79 | int snd_seq_create_kernel_client(struct snd_card *card, int client_index, |
79 | const char *name_fmt, ...) | 80 | const char *name_fmt, ...); |
80 | __attribute__ ((format (printf, 3, 4))); | ||
81 | int snd_seq_delete_kernel_client(int client); | 81 | int snd_seq_delete_kernel_client(int client); |
82 | int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev, int atomic, int hop); | 82 | int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev, int atomic, int hop); |
83 | int snd_seq_kernel_client_dispatch(int client, struct snd_seq_event *ev, int atomic, int hop); | 83 | int snd_seq_kernel_client_dispatch(int client, struct snd_seq_event *ev, int atomic, int hop); |
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 35aa786f93da..6873c7dd9145 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h | |||
@@ -89,7 +89,6 @@ enum transport_state_table { | |||
89 | TRANSPORT_PROCESS_TMR = 9, | 89 | TRANSPORT_PROCESS_TMR = 9, |
90 | TRANSPORT_ISTATE_PROCESSING = 11, | 90 | TRANSPORT_ISTATE_PROCESSING = 11, |
91 | TRANSPORT_NEW_CMD_MAP = 16, | 91 | TRANSPORT_NEW_CMD_MAP = 16, |
92 | TRANSPORT_FREE_CMD_INTR = 17, | ||
93 | TRANSPORT_COMPLETE_QF_WP = 18, | 92 | TRANSPORT_COMPLETE_QF_WP = 18, |
94 | TRANSPORT_COMPLETE_QF_OK = 19, | 93 | TRANSPORT_COMPLETE_QF_OK = 19, |
95 | }; | 94 | }; |
@@ -104,9 +103,10 @@ enum se_cmd_flags_table { | |||
104 | SCF_SCSI_NON_DATA_CDB = 0x00000040, | 103 | SCF_SCSI_NON_DATA_CDB = 0x00000040, |
105 | SCF_SCSI_CDB_EXCEPTION = 0x00000080, | 104 | SCF_SCSI_CDB_EXCEPTION = 0x00000080, |
106 | SCF_SCSI_RESERVATION_CONFLICT = 0x00000100, | 105 | SCF_SCSI_RESERVATION_CONFLICT = 0x00000100, |
107 | SCF_SE_CMD_FAILED = 0x00000400, | 106 | SCF_FUA = 0x00000200, |
108 | SCF_SE_LUN_CMD = 0x00000800, | 107 | SCF_SE_LUN_CMD = 0x00000800, |
109 | SCF_SE_ALLOW_EOO = 0x00001000, | 108 | SCF_SE_ALLOW_EOO = 0x00001000, |
109 | SCF_BIDI = 0x00002000, | ||
110 | SCF_SENT_CHECK_CONDITION = 0x00004000, | 110 | SCF_SENT_CHECK_CONDITION = 0x00004000, |
111 | SCF_OVERFLOW_BIT = 0x00008000, | 111 | SCF_OVERFLOW_BIT = 0x00008000, |
112 | SCF_UNDERFLOW_BIT = 0x00010000, | 112 | SCF_UNDERFLOW_BIT = 0x00010000, |
@@ -115,7 +115,6 @@ enum se_cmd_flags_table { | |||
115 | SCF_DELAYED_CMD_FROM_SAM_ATTR = 0x00080000, | 115 | SCF_DELAYED_CMD_FROM_SAM_ATTR = 0x00080000, |
116 | SCF_UNUSED = 0x00100000, | 116 | SCF_UNUSED = 0x00100000, |
117 | SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC = 0x00400000, | 117 | SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC = 0x00400000, |
118 | SCF_EMULATE_CDB_ASYNC = 0x01000000, | ||
119 | }; | 118 | }; |
120 | 119 | ||
121 | /* struct se_dev_entry->lun_flags and struct se_lun->lun_access */ | 120 | /* struct se_dev_entry->lun_flags and struct se_lun->lun_access */ |
@@ -156,6 +155,7 @@ enum tcm_sense_reason_table { | |||
156 | TCM_CHECK_CONDITION_ABORT_CMD = 0x0d, | 155 | TCM_CHECK_CONDITION_ABORT_CMD = 0x0d, |
157 | TCM_CHECK_CONDITION_UNIT_ATTENTION = 0x0e, | 156 | TCM_CHECK_CONDITION_UNIT_ATTENTION = 0x0e, |
158 | TCM_CHECK_CONDITION_NOT_READY = 0x0f, | 157 | TCM_CHECK_CONDITION_NOT_READY = 0x0f, |
158 | TCM_RESERVATION_CONFLICT = 0x10, | ||
159 | }; | 159 | }; |
160 | 160 | ||
161 | struct se_obj { | 161 | struct se_obj { |
@@ -213,7 +213,6 @@ struct t10_alua_lu_gp { | |||
213 | u16 lu_gp_id; | 213 | u16 lu_gp_id; |
214 | int lu_gp_valid_id; | 214 | int lu_gp_valid_id; |
215 | u32 lu_gp_members; | 215 | u32 lu_gp_members; |
216 | atomic_t lu_gp_shutdown; | ||
217 | atomic_t lu_gp_ref_cnt; | 216 | atomic_t lu_gp_ref_cnt; |
218 | spinlock_t lu_gp_lock; | 217 | spinlock_t lu_gp_lock; |
219 | struct config_group lu_gp_group; | 218 | struct config_group lu_gp_group; |
@@ -424,8 +423,9 @@ struct se_cmd { | |||
424 | int sam_task_attr; | 423 | int sam_task_attr; |
425 | /* Transport protocol dependent state, see transport_state_table */ | 424 | /* Transport protocol dependent state, see transport_state_table */ |
426 | enum transport_state_table t_state; | 425 | enum transport_state_table t_state; |
427 | /* Transport specific error status */ | 426 | /* Used to signal cmd->se_tfo->check_release_cmd() usage per cmd */ |
428 | int transport_error_status; | 427 | unsigned check_release:1; |
428 | unsigned cmd_wait_set:1; | ||
429 | /* See se_cmd_flags_table */ | 429 | /* See se_cmd_flags_table */ |
430 | u32 se_cmd_flags; | 430 | u32 se_cmd_flags; |
431 | u32 se_ordered_id; | 431 | u32 se_ordered_id; |
@@ -440,28 +440,25 @@ struct se_cmd { | |||
440 | /* Used for sense data */ | 440 | /* Used for sense data */ |
441 | void *sense_buffer; | 441 | void *sense_buffer; |
442 | struct list_head se_delayed_node; | 442 | struct list_head se_delayed_node; |
443 | struct list_head se_ordered_node; | ||
444 | struct list_head se_lun_node; | 443 | struct list_head se_lun_node; |
445 | struct list_head se_qf_node; | 444 | struct list_head se_qf_node; |
446 | struct se_device *se_dev; | 445 | struct se_device *se_dev; |
447 | struct se_dev_entry *se_deve; | 446 | struct se_dev_entry *se_deve; |
448 | struct se_device *se_obj_ptr; | ||
449 | struct se_device *se_orig_obj_ptr; | ||
450 | struct se_lun *se_lun; | 447 | struct se_lun *se_lun; |
451 | /* Only used for internal passthrough and legacy TCM fabric modules */ | 448 | /* Only used for internal passthrough and legacy TCM fabric modules */ |
452 | struct se_session *se_sess; | 449 | struct se_session *se_sess; |
453 | struct se_tmr_req *se_tmr_req; | 450 | struct se_tmr_req *se_tmr_req; |
454 | struct list_head se_queue_node; | 451 | struct list_head se_queue_node; |
452 | struct list_head se_cmd_list; | ||
453 | struct completion cmd_wait_comp; | ||
455 | struct target_core_fabric_ops *se_tfo; | 454 | struct target_core_fabric_ops *se_tfo; |
456 | int (*transport_emulate_cdb)(struct se_cmd *); | 455 | int (*execute_task)(struct se_task *); |
457 | void (*transport_complete_callback)(struct se_cmd *); | 456 | void (*transport_complete_callback)(struct se_cmd *); |
458 | 457 | ||
459 | unsigned char *t_task_cdb; | 458 | unsigned char *t_task_cdb; |
460 | unsigned char __t_task_cdb[TCM_MAX_COMMAND_SIZE]; | 459 | unsigned char __t_task_cdb[TCM_MAX_COMMAND_SIZE]; |
461 | unsigned long long t_task_lba; | 460 | unsigned long long t_task_lba; |
462 | int t_tasks_failed; | 461 | int t_tasks_failed; |
463 | int t_tasks_fua; | ||
464 | bool t_tasks_bidi; | ||
465 | u32 t_tasks_sg_chained_no; | 462 | u32 t_tasks_sg_chained_no; |
466 | atomic_t t_fe_count; | 463 | atomic_t t_fe_count; |
467 | atomic_t t_se_count; | 464 | atomic_t t_se_count; |
@@ -486,14 +483,6 @@ struct se_cmd { | |||
486 | 483 | ||
487 | struct work_struct work; | 484 | struct work_struct work; |
488 | 485 | ||
489 | /* | ||
490 | * Used for pre-registered fabric SGL passthrough WRITE and READ | ||
491 | * with the special SCF_PASSTHROUGH_CONTIG_TO_SG case for TCM_Loop | ||
492 | * and other HW target mode fabric modules. | ||
493 | */ | ||
494 | struct scatterlist *t_task_pt_sgl; | ||
495 | u32 t_task_pt_sgl_num; | ||
496 | |||
497 | struct scatterlist *t_data_sg; | 486 | struct scatterlist *t_data_sg; |
498 | unsigned int t_data_nents; | 487 | unsigned int t_data_nents; |
499 | struct scatterlist *t_bidi_data_sg; | 488 | struct scatterlist *t_bidi_data_sg; |
@@ -559,12 +548,16 @@ struct se_node_acl { | |||
559 | } ____cacheline_aligned; | 548 | } ____cacheline_aligned; |
560 | 549 | ||
561 | struct se_session { | 550 | struct se_session { |
551 | unsigned sess_tearing_down:1; | ||
562 | u64 sess_bin_isid; | 552 | u64 sess_bin_isid; |
563 | struct se_node_acl *se_node_acl; | 553 | struct se_node_acl *se_node_acl; |
564 | struct se_portal_group *se_tpg; | 554 | struct se_portal_group *se_tpg; |
565 | void *fabric_sess_ptr; | 555 | void *fabric_sess_ptr; |
566 | struct list_head sess_list; | 556 | struct list_head sess_list; |
567 | struct list_head sess_acl_list; | 557 | struct list_head sess_acl_list; |
558 | struct list_head sess_cmd_list; | ||
559 | struct list_head sess_wait_list; | ||
560 | spinlock_t sess_cmd_lock; | ||
568 | } ____cacheline_aligned; | 561 | } ____cacheline_aligned; |
569 | 562 | ||
570 | struct se_device; | 563 | struct se_device; |
@@ -676,7 +669,6 @@ struct se_subsystem_dev { | |||
676 | struct t10_reservation t10_pr; | 669 | struct t10_reservation t10_pr; |
677 | spinlock_t se_dev_lock; | 670 | spinlock_t se_dev_lock; |
678 | void *se_dev_su_ptr; | 671 | void *se_dev_su_ptr; |
679 | struct list_head se_dev_node; | ||
680 | struct config_group se_dev_group; | 672 | struct config_group se_dev_group; |
681 | /* For T10 Reservations */ | 673 | /* For T10 Reservations */ |
682 | struct config_group se_dev_pr_group; | 674 | struct config_group se_dev_pr_group; |
@@ -685,9 +677,6 @@ struct se_subsystem_dev { | |||
685 | } ____cacheline_aligned; | 677 | } ____cacheline_aligned; |
686 | 678 | ||
687 | struct se_device { | 679 | struct se_device { |
688 | /* Set to 1 if thread is NOT sleeping on thread_sem */ | ||
689 | u8 thread_active; | ||
690 | u8 dev_status_timer_flags; | ||
691 | /* RELATIVE TARGET PORT IDENTIFER Counter */ | 680 | /* RELATIVE TARGET PORT IDENTIFER Counter */ |
692 | u16 dev_rpti_counter; | 681 | u16 dev_rpti_counter; |
693 | /* Used for SAM Task Attribute ordering */ | 682 | /* Used for SAM Task Attribute ordering */ |
@@ -712,14 +701,10 @@ struct se_device { | |||
712 | u64 write_bytes; | 701 | u64 write_bytes; |
713 | spinlock_t stats_lock; | 702 | spinlock_t stats_lock; |
714 | /* Active commands on this virtual SE device */ | 703 | /* Active commands on this virtual SE device */ |
715 | atomic_t active_cmds; | ||
716 | atomic_t simple_cmds; | 704 | atomic_t simple_cmds; |
717 | atomic_t depth_left; | 705 | atomic_t depth_left; |
718 | atomic_t dev_ordered_id; | 706 | atomic_t dev_ordered_id; |
719 | atomic_t dev_tur_active; | ||
720 | atomic_t execute_tasks; | 707 | atomic_t execute_tasks; |
721 | atomic_t dev_status_thr_count; | ||
722 | atomic_t dev_hoq_count; | ||
723 | atomic_t dev_ordered_sync; | 708 | atomic_t dev_ordered_sync; |
724 | atomic_t dev_qf_count; | 709 | atomic_t dev_qf_count; |
725 | struct se_obj dev_obj; | 710 | struct se_obj dev_obj; |
@@ -727,14 +712,9 @@ struct se_device { | |||
727 | struct se_obj dev_export_obj; | 712 | struct se_obj dev_export_obj; |
728 | struct se_queue_obj dev_queue_obj; | 713 | struct se_queue_obj dev_queue_obj; |
729 | spinlock_t delayed_cmd_lock; | 714 | spinlock_t delayed_cmd_lock; |
730 | spinlock_t ordered_cmd_lock; | ||
731 | spinlock_t execute_task_lock; | 715 | spinlock_t execute_task_lock; |
732 | spinlock_t state_task_lock; | ||
733 | spinlock_t dev_alua_lock; | ||
734 | spinlock_t dev_reservation_lock; | 716 | spinlock_t dev_reservation_lock; |
735 | spinlock_t dev_state_lock; | ||
736 | spinlock_t dev_status_lock; | 717 | spinlock_t dev_status_lock; |
737 | spinlock_t dev_status_thr_lock; | ||
738 | spinlock_t se_port_lock; | 718 | spinlock_t se_port_lock; |
739 | spinlock_t se_tmr_lock; | 719 | spinlock_t se_tmr_lock; |
740 | spinlock_t qf_cmd_lock; | 720 | spinlock_t qf_cmd_lock; |
@@ -746,14 +726,10 @@ struct se_device { | |||
746 | struct t10_pr_registration *dev_pr_res_holder; | 726 | struct t10_pr_registration *dev_pr_res_holder; |
747 | struct list_head dev_sep_list; | 727 | struct list_head dev_sep_list; |
748 | struct list_head dev_tmr_list; | 728 | struct list_head dev_tmr_list; |
749 | struct timer_list dev_status_timer; | ||
750 | /* Pointer to descriptor for processing thread */ | 729 | /* Pointer to descriptor for processing thread */ |
751 | struct task_struct *process_thread; | 730 | struct task_struct *process_thread; |
752 | pid_t process_thread_pid; | ||
753 | struct task_struct *dev_mgmt_thread; | ||
754 | struct work_struct qf_work_queue; | 731 | struct work_struct qf_work_queue; |
755 | struct list_head delayed_cmd_list; | 732 | struct list_head delayed_cmd_list; |
756 | struct list_head ordered_cmd_list; | ||
757 | struct list_head execute_task_list; | 733 | struct list_head execute_task_list; |
758 | struct list_head state_task_list; | 734 | struct list_head state_task_list; |
759 | struct list_head qf_cmd_list; | 735 | struct list_head qf_cmd_list; |
@@ -764,8 +740,6 @@ struct se_device { | |||
764 | struct se_subsystem_api *transport; | 740 | struct se_subsystem_api *transport; |
765 | /* Linked list for struct se_hba struct se_device list */ | 741 | /* Linked list for struct se_hba struct se_device list */ |
766 | struct list_head dev_list; | 742 | struct list_head dev_list; |
767 | /* Linked list for struct se_global->g_se_dev_list */ | ||
768 | struct list_head g_se_dev_list; | ||
769 | } ____cacheline_aligned; | 743 | } ____cacheline_aligned; |
770 | 744 | ||
771 | struct se_hba { | 745 | struct se_hba { |
@@ -827,7 +801,6 @@ struct se_port { | |||
827 | u32 sep_index; | 801 | u32 sep_index; |
828 | struct scsi_port_stats sep_stats; | 802 | struct scsi_port_stats sep_stats; |
829 | /* Used for ALUA Target Port Groups membership */ | 803 | /* Used for ALUA Target Port Groups membership */ |
830 | atomic_t sep_tg_pt_gp_active; | ||
831 | atomic_t sep_tg_pt_secondary_offline; | 804 | atomic_t sep_tg_pt_secondary_offline; |
832 | /* Used for PR ALL_TG_PT=1 */ | 805 | /* Used for PR ALL_TG_PT=1 */ |
833 | atomic_t sep_tg_pt_ref_cnt; | 806 | atomic_t sep_tg_pt_ref_cnt; |
diff --git a/include/target/target_core_device.h b/include/target/target_core_device.h index 46571912086c..2be31ff8763b 100644 --- a/include/target/target_core_device.h +++ b/include/target/target_core_device.h | |||
@@ -17,7 +17,7 @@ extern int core_dev_export(struct se_device *, struct se_portal_group *, | |||
17 | struct se_lun *); | 17 | struct se_lun *); |
18 | extern void core_dev_unexport(struct se_device *, struct se_portal_group *, | 18 | extern void core_dev_unexport(struct se_device *, struct se_portal_group *, |
19 | struct se_lun *); | 19 | struct se_lun *); |
20 | extern int transport_core_report_lun_response(struct se_cmd *); | 20 | extern int target_report_luns(struct se_task *); |
21 | extern void se_release_device_for_hba(struct se_device *); | 21 | extern void se_release_device_for_hba(struct se_device *); |
22 | extern void se_release_vpd_for_dev(struct se_device *); | 22 | extern void se_release_vpd_for_dev(struct se_device *); |
23 | extern void se_clear_dev_ports(struct se_device *); | 23 | extern void se_clear_dev_ports(struct se_device *); |
diff --git a/include/target/target_core_fabric_ops.h b/include/target/target_core_fabric_ops.h index 126c675f4f14..0256825f923d 100644 --- a/include/target/target_core_fabric_ops.h +++ b/include/target/target_core_fabric_ops.h | |||
@@ -46,9 +46,16 @@ struct target_core_fabric_ops { | |||
46 | int (*new_cmd_map)(struct se_cmd *); | 46 | int (*new_cmd_map)(struct se_cmd *); |
47 | /* | 47 | /* |
48 | * Optional to release struct se_cmd and fabric dependent allocated | 48 | * Optional to release struct se_cmd and fabric dependent allocated |
49 | * I/O descriptor in transport_cmd_check_stop() | 49 | * I/O descriptor in transport_cmd_check_stop(). |
50 | * | ||
51 | * Returning 1 will signal a descriptor has been released. | ||
52 | * Returning 0 will signal a descriptor has not been released. | ||
50 | */ | 53 | */ |
51 | void (*check_stop_free)(struct se_cmd *); | 54 | int (*check_stop_free)(struct se_cmd *); |
55 | /* | ||
56 | * Optional check for active I/O shutdown | ||
57 | */ | ||
58 | int (*check_release_cmd)(struct se_cmd *); | ||
52 | void (*release_cmd)(struct se_cmd *); | 59 | void (*release_cmd)(struct se_cmd *); |
53 | /* | 60 | /* |
54 | * Called with spin_lock_bh(struct se_portal_group->session_lock held. | 61 | * Called with spin_lock_bh(struct se_portal_group->session_lock held. |
diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h index a037a1a6fbba..dac4f2d859fd 100644 --- a/include/target/target_core_transport.h +++ b/include/target/target_core_transport.h | |||
@@ -10,29 +10,6 @@ | |||
10 | 10 | ||
11 | #define PYX_TRANSPORT_STATUS_INTERVAL 5 /* In seconds */ | 11 | #define PYX_TRANSPORT_STATUS_INTERVAL 5 /* In seconds */ |
12 | 12 | ||
13 | #define PYX_TRANSPORT_SENT_TO_TRANSPORT 0 | ||
14 | #define PYX_TRANSPORT_WRITE_PENDING 1 | ||
15 | |||
16 | #define PYX_TRANSPORT_UNKNOWN_SAM_OPCODE -1 | ||
17 | #define PYX_TRANSPORT_HBA_QUEUE_FULL -2 | ||
18 | #define PYX_TRANSPORT_REQ_TOO_MANY_SECTORS -3 | ||
19 | #define PYX_TRANSPORT_OUT_OF_MEMORY_RESOURCES -4 | ||
20 | #define PYX_TRANSPORT_INVALID_CDB_FIELD -5 | ||
21 | #define PYX_TRANSPORT_INVALID_PARAMETER_LIST -6 | ||
22 | #define PYX_TRANSPORT_LU_COMM_FAILURE -7 | ||
23 | #define PYX_TRANSPORT_UNKNOWN_MODE_PAGE -8 | ||
24 | #define PYX_TRANSPORT_WRITE_PROTECTED -9 | ||
25 | #define PYX_TRANSPORT_RESERVATION_CONFLICT -10 | ||
26 | #define PYX_TRANSPORT_ILLEGAL_REQUEST -11 | ||
27 | #define PYX_TRANSPORT_USE_SENSE_REASON -12 | ||
28 | |||
29 | #ifndef SAM_STAT_RESERVATION_CONFLICT | ||
30 | #define SAM_STAT_RESERVATION_CONFLICT 0x18 | ||
31 | #endif | ||
32 | |||
33 | #define TRANSPORT_PLUGIN_FREE 0 | ||
34 | #define TRANSPORT_PLUGIN_REGISTERED 1 | ||
35 | |||
36 | #define TRANSPORT_PLUGIN_PHBA_PDEV 1 | 13 | #define TRANSPORT_PLUGIN_PHBA_PDEV 1 |
37 | #define TRANSPORT_PLUGIN_VHBA_PDEV 2 | 14 | #define TRANSPORT_PLUGIN_VHBA_PDEV 2 |
38 | #define TRANSPORT_PLUGIN_VHBA_VDEV 3 | 15 | #define TRANSPORT_PLUGIN_VHBA_VDEV 3 |
@@ -158,19 +135,21 @@ extern int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *); | |||
158 | extern int transport_handle_cdb_direct(struct se_cmd *); | 135 | extern int transport_handle_cdb_direct(struct se_cmd *); |
159 | extern int transport_generic_handle_cdb_map(struct se_cmd *); | 136 | extern int transport_generic_handle_cdb_map(struct se_cmd *); |
160 | extern int transport_generic_handle_data(struct se_cmd *); | 137 | extern int transport_generic_handle_data(struct se_cmd *); |
161 | extern void transport_new_cmd_failure(struct se_cmd *); | ||
162 | extern int transport_generic_handle_tmr(struct se_cmd *); | 138 | extern int transport_generic_handle_tmr(struct se_cmd *); |
163 | extern void transport_generic_free_cmd_intr(struct se_cmd *); | ||
164 | extern bool target_stop_task(struct se_task *task, unsigned long *flags); | 139 | extern bool target_stop_task(struct se_task *task, unsigned long *flags); |
165 | extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, | 140 | extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, |
166 | struct scatterlist *, u32); | 141 | struct scatterlist *, u32); |
167 | extern int transport_clear_lun_from_sessions(struct se_lun *); | 142 | extern int transport_clear_lun_from_sessions(struct se_lun *); |
168 | extern void transport_wait_for_tasks(struct se_cmd *); | 143 | extern bool transport_wait_for_tasks(struct se_cmd *); |
169 | extern int transport_check_aborted_status(struct se_cmd *, int); | 144 | extern int transport_check_aborted_status(struct se_cmd *, int); |
170 | extern int transport_send_check_condition_and_sense(struct se_cmd *, u8, int); | 145 | extern int transport_send_check_condition_and_sense(struct se_cmd *, u8, int); |
171 | extern void transport_send_task_abort(struct se_cmd *); | 146 | extern void transport_send_task_abort(struct se_cmd *); |
172 | extern void transport_release_cmd(struct se_cmd *); | 147 | extern void transport_release_cmd(struct se_cmd *); |
173 | extern void transport_generic_free_cmd(struct se_cmd *, int); | 148 | extern void transport_generic_free_cmd(struct se_cmd *, int); |
149 | extern void target_get_sess_cmd(struct se_session *, struct se_cmd *); | ||
150 | extern int target_put_sess_cmd(struct se_session *, struct se_cmd *); | ||
151 | extern void target_splice_sess_cmd_list(struct se_session *); | ||
152 | extern void target_wait_for_sess_cmds(struct se_session *, int); | ||
174 | extern void transport_generic_wait_for_cmds(struct se_cmd *, int); | 153 | extern void transport_generic_wait_for_cmds(struct se_cmd *, int); |
175 | extern void transport_do_task_sg_chain(struct se_cmd *); | 154 | extern void transport_do_task_sg_chain(struct se_cmd *); |
176 | extern void transport_generic_process_write(struct se_cmd *); | 155 | extern void transport_generic_process_write(struct se_cmd *); |
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h index da39b22636f7..b0b4eb24d592 100644 --- a/include/trace/define_trace.h +++ b/include/trace/define_trace.h | |||
@@ -21,16 +21,6 @@ | |||
21 | #undef CREATE_TRACE_POINTS | 21 | #undef CREATE_TRACE_POINTS |
22 | 22 | ||
23 | #include <linux/stringify.h> | 23 | #include <linux/stringify.h> |
24 | /* | ||
25 | * module.h includes tracepoints, and because ftrace.h | ||
26 | * pulls in module.h: | ||
27 | * trace/ftrace.h -> linux/ftrace_event.h -> linux/perf_event.h -> | ||
28 | * linux/ftrace.h -> linux/module.h | ||
29 | * we must include module.h here before we play with any of | ||
30 | * the TRACE_EVENT() macros, otherwise the tracepoints included | ||
31 | * by module.h may break the build. | ||
32 | */ | ||
33 | #include <linux/module.h> | ||
34 | 24 | ||
35 | #undef TRACE_EVENT | 25 | #undef TRACE_EVENT |
36 | #define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ | 26 | #define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ |
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index b50a54736242..748ff7cbe555 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h | |||
@@ -9,9 +9,12 @@ | |||
9 | 9 | ||
10 | struct ext4_allocation_context; | 10 | struct ext4_allocation_context; |
11 | struct ext4_allocation_request; | 11 | struct ext4_allocation_request; |
12 | struct ext4_extent; | ||
12 | struct ext4_prealloc_space; | 13 | struct ext4_prealloc_space; |
13 | struct ext4_inode_info; | 14 | struct ext4_inode_info; |
14 | struct mpage_da_data; | 15 | struct mpage_da_data; |
16 | struct ext4_map_blocks; | ||
17 | struct ext4_extent; | ||
15 | 18 | ||
16 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) | 19 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) |
17 | 20 | ||
@@ -1032,9 +1035,9 @@ TRACE_EVENT(ext4_forget, | |||
1032 | ); | 1035 | ); |
1033 | 1036 | ||
1034 | TRACE_EVENT(ext4_da_update_reserve_space, | 1037 | TRACE_EVENT(ext4_da_update_reserve_space, |
1035 | TP_PROTO(struct inode *inode, int used_blocks), | 1038 | TP_PROTO(struct inode *inode, int used_blocks, int quota_claim), |
1036 | 1039 | ||
1037 | TP_ARGS(inode, used_blocks), | 1040 | TP_ARGS(inode, used_blocks, quota_claim), |
1038 | 1041 | ||
1039 | TP_STRUCT__entry( | 1042 | TP_STRUCT__entry( |
1040 | __field( dev_t, dev ) | 1043 | __field( dev_t, dev ) |
@@ -1045,6 +1048,7 @@ TRACE_EVENT(ext4_da_update_reserve_space, | |||
1045 | __field( int, reserved_data_blocks ) | 1048 | __field( int, reserved_data_blocks ) |
1046 | __field( int, reserved_meta_blocks ) | 1049 | __field( int, reserved_meta_blocks ) |
1047 | __field( int, allocated_meta_blocks ) | 1050 | __field( int, allocated_meta_blocks ) |
1051 | __field( int, quota_claim ) | ||
1048 | ), | 1052 | ), |
1049 | 1053 | ||
1050 | TP_fast_assign( | 1054 | TP_fast_assign( |
@@ -1053,19 +1057,24 @@ TRACE_EVENT(ext4_da_update_reserve_space, | |||
1053 | __entry->mode = inode->i_mode; | 1057 | __entry->mode = inode->i_mode; |
1054 | __entry->i_blocks = inode->i_blocks; | 1058 | __entry->i_blocks = inode->i_blocks; |
1055 | __entry->used_blocks = used_blocks; | 1059 | __entry->used_blocks = used_blocks; |
1056 | __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; | 1060 | __entry->reserved_data_blocks = |
1057 | __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks; | 1061 | EXT4_I(inode)->i_reserved_data_blocks; |
1058 | __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks; | 1062 | __entry->reserved_meta_blocks = |
1063 | EXT4_I(inode)->i_reserved_meta_blocks; | ||
1064 | __entry->allocated_meta_blocks = | ||
1065 | EXT4_I(inode)->i_allocated_meta_blocks; | ||
1066 | __entry->quota_claim = quota_claim; | ||
1059 | ), | 1067 | ), |
1060 | 1068 | ||
1061 | TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " | 1069 | TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " |
1062 | "reserved_data_blocks %d reserved_meta_blocks %d " | 1070 | "reserved_data_blocks %d reserved_meta_blocks %d " |
1063 | "allocated_meta_blocks %d", | 1071 | "allocated_meta_blocks %d quota_claim %d", |
1064 | MAJOR(__entry->dev), MINOR(__entry->dev), | 1072 | MAJOR(__entry->dev), MINOR(__entry->dev), |
1065 | (unsigned long) __entry->ino, | 1073 | (unsigned long) __entry->ino, |
1066 | __entry->mode, __entry->i_blocks, | 1074 | __entry->mode, __entry->i_blocks, |
1067 | __entry->used_blocks, __entry->reserved_data_blocks, | 1075 | __entry->used_blocks, __entry->reserved_data_blocks, |
1068 | __entry->reserved_meta_blocks, __entry->allocated_meta_blocks) | 1076 | __entry->reserved_meta_blocks, __entry->allocated_meta_blocks, |
1077 | __entry->quota_claim) | ||
1069 | ); | 1078 | ); |
1070 | 1079 | ||
1071 | TRACE_EVENT(ext4_da_reserve_space, | 1080 | TRACE_EVENT(ext4_da_reserve_space, |
@@ -1386,6 +1395,87 @@ DEFINE_EVENT(ext4__truncate, ext4_truncate_exit, | |||
1386 | TP_ARGS(inode) | 1395 | TP_ARGS(inode) |
1387 | ); | 1396 | ); |
1388 | 1397 | ||
1398 | /* 'ux' is the uninitialized extent. */ | ||
1399 | TRACE_EVENT(ext4_ext_convert_to_initialized_enter, | ||
1400 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1401 | struct ext4_extent *ux), | ||
1402 | |||
1403 | TP_ARGS(inode, map, ux), | ||
1404 | |||
1405 | TP_STRUCT__entry( | ||
1406 | __field( ino_t, ino ) | ||
1407 | __field( dev_t, dev ) | ||
1408 | __field( ext4_lblk_t, m_lblk ) | ||
1409 | __field( unsigned, m_len ) | ||
1410 | __field( ext4_lblk_t, u_lblk ) | ||
1411 | __field( unsigned, u_len ) | ||
1412 | __field( ext4_fsblk_t, u_pblk ) | ||
1413 | ), | ||
1414 | |||
1415 | TP_fast_assign( | ||
1416 | __entry->ino = inode->i_ino; | ||
1417 | __entry->dev = inode->i_sb->s_dev; | ||
1418 | __entry->m_lblk = map->m_lblk; | ||
1419 | __entry->m_len = map->m_len; | ||
1420 | __entry->u_lblk = le32_to_cpu(ux->ee_block); | ||
1421 | __entry->u_len = ext4_ext_get_actual_len(ux); | ||
1422 | __entry->u_pblk = ext4_ext_pblock(ux); | ||
1423 | ), | ||
1424 | |||
1425 | TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u " | ||
1426 | "u_pblk %llu", | ||
1427 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1428 | (unsigned long) __entry->ino, | ||
1429 | __entry->m_lblk, __entry->m_len, | ||
1430 | __entry->u_lblk, __entry->u_len, __entry->u_pblk) | ||
1431 | ); | ||
1432 | |||
1433 | /* | ||
1434 | * 'ux' is the uninitialized extent. | ||
1435 | * 'ix' is the initialized extent to which blocks are transferred. | ||
1436 | */ | ||
1437 | TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath, | ||
1438 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1439 | struct ext4_extent *ux, struct ext4_extent *ix), | ||
1440 | |||
1441 | TP_ARGS(inode, map, ux, ix), | ||
1442 | |||
1443 | TP_STRUCT__entry( | ||
1444 | __field( ino_t, ino ) | ||
1445 | __field( dev_t, dev ) | ||
1446 | __field( ext4_lblk_t, m_lblk ) | ||
1447 | __field( unsigned, m_len ) | ||
1448 | __field( ext4_lblk_t, u_lblk ) | ||
1449 | __field( unsigned, u_len ) | ||
1450 | __field( ext4_fsblk_t, u_pblk ) | ||
1451 | __field( ext4_lblk_t, i_lblk ) | ||
1452 | __field( unsigned, i_len ) | ||
1453 | __field( ext4_fsblk_t, i_pblk ) | ||
1454 | ), | ||
1455 | |||
1456 | TP_fast_assign( | ||
1457 | __entry->ino = inode->i_ino; | ||
1458 | __entry->dev = inode->i_sb->s_dev; | ||
1459 | __entry->m_lblk = map->m_lblk; | ||
1460 | __entry->m_len = map->m_len; | ||
1461 | __entry->u_lblk = le32_to_cpu(ux->ee_block); | ||
1462 | __entry->u_len = ext4_ext_get_actual_len(ux); | ||
1463 | __entry->u_pblk = ext4_ext_pblock(ux); | ||
1464 | __entry->i_lblk = le32_to_cpu(ix->ee_block); | ||
1465 | __entry->i_len = ext4_ext_get_actual_len(ix); | ||
1466 | __entry->i_pblk = ext4_ext_pblock(ix); | ||
1467 | ), | ||
1468 | |||
1469 | TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u " | ||
1470 | "u_lblk %u u_len %u u_pblk %llu " | ||
1471 | "i_lblk %u i_len %u i_pblk %llu ", | ||
1472 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1473 | (unsigned long) __entry->ino, | ||
1474 | __entry->m_lblk, __entry->m_len, | ||
1475 | __entry->u_lblk, __entry->u_len, __entry->u_pblk, | ||
1476 | __entry->i_lblk, __entry->i_len, __entry->i_pblk) | ||
1477 | ); | ||
1478 | |||
1389 | DECLARE_EVENT_CLASS(ext4__map_blocks_enter, | 1479 | DECLARE_EVENT_CLASS(ext4__map_blocks_enter, |
1390 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, | 1480 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, |
1391 | unsigned int len, unsigned int flags), | 1481 | unsigned int len, unsigned int flags), |
@@ -1589,6 +1679,382 @@ DEFINE_EVENT(ext4__trim, ext4_trim_all_free, | |||
1589 | TP_ARGS(sb, group, start, len) | 1679 | TP_ARGS(sb, group, start, len) |
1590 | ); | 1680 | ); |
1591 | 1681 | ||
1682 | TRACE_EVENT(ext4_ext_handle_uninitialized_extents, | ||
1683 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | ||
1684 | unsigned int allocated, ext4_fsblk_t newblock), | ||
1685 | |||
1686 | TP_ARGS(inode, map, allocated, newblock), | ||
1687 | |||
1688 | TP_STRUCT__entry( | ||
1689 | __field( ino_t, ino ) | ||
1690 | __field( dev_t, dev ) | ||
1691 | __field( ext4_lblk_t, lblk ) | ||
1692 | __field( ext4_fsblk_t, pblk ) | ||
1693 | __field( unsigned int, len ) | ||
1694 | __field( int, flags ) | ||
1695 | __field( unsigned int, allocated ) | ||
1696 | __field( ext4_fsblk_t, newblk ) | ||
1697 | ), | ||
1698 | |||
1699 | TP_fast_assign( | ||
1700 | __entry->ino = inode->i_ino; | ||
1701 | __entry->dev = inode->i_sb->s_dev; | ||
1702 | __entry->lblk = map->m_lblk; | ||
1703 | __entry->pblk = map->m_pblk; | ||
1704 | __entry->len = map->m_len; | ||
1705 | __entry->flags = map->m_flags; | ||
1706 | __entry->allocated = allocated; | ||
1707 | __entry->newblk = newblock; | ||
1708 | ), | ||
1709 | |||
1710 | TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %d" | ||
1711 | "allocated %d newblock %llu", | ||
1712 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1713 | (unsigned long) __entry->ino, | ||
1714 | (unsigned) __entry->lblk, (unsigned long long) __entry->pblk, | ||
1715 | __entry->len, __entry->flags, | ||
1716 | (unsigned int) __entry->allocated, | ||
1717 | (unsigned long long) __entry->newblk) | ||
1718 | ); | ||
1719 | |||
1720 | TRACE_EVENT(ext4_get_implied_cluster_alloc_exit, | ||
1721 | TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret), | ||
1722 | |||
1723 | TP_ARGS(sb, map, ret), | ||
1724 | |||
1725 | TP_STRUCT__entry( | ||
1726 | __field( dev_t, dev ) | ||
1727 | __field( ext4_lblk_t, lblk ) | ||
1728 | __field( ext4_fsblk_t, pblk ) | ||
1729 | __field( unsigned int, len ) | ||
1730 | __field( unsigned int, flags ) | ||
1731 | __field( int, ret ) | ||
1732 | ), | ||
1733 | |||
1734 | TP_fast_assign( | ||
1735 | __entry->dev = sb->s_dev; | ||
1736 | __entry->lblk = map->m_lblk; | ||
1737 | __entry->pblk = map->m_pblk; | ||
1738 | __entry->len = map->m_len; | ||
1739 | __entry->flags = map->m_flags; | ||
1740 | __entry->ret = ret; | ||
1741 | ), | ||
1742 | |||
1743 | TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d", | ||
1744 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1745 | __entry->lblk, (unsigned long long) __entry->pblk, | ||
1746 | __entry->len, __entry->flags, __entry->ret) | ||
1747 | ); | ||
1748 | |||
1749 | TRACE_EVENT(ext4_ext_put_in_cache, | ||
1750 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len, | ||
1751 | ext4_fsblk_t start), | ||
1752 | |||
1753 | TP_ARGS(inode, lblk, len, start), | ||
1754 | |||
1755 | TP_STRUCT__entry( | ||
1756 | __field( ino_t, ino ) | ||
1757 | __field( dev_t, dev ) | ||
1758 | __field( ext4_lblk_t, lblk ) | ||
1759 | __field( unsigned int, len ) | ||
1760 | __field( ext4_fsblk_t, start ) | ||
1761 | ), | ||
1762 | |||
1763 | TP_fast_assign( | ||
1764 | __entry->ino = inode->i_ino; | ||
1765 | __entry->dev = inode->i_sb->s_dev; | ||
1766 | __entry->lblk = lblk; | ||
1767 | __entry->len = len; | ||
1768 | __entry->start = start; | ||
1769 | ), | ||
1770 | |||
1771 | TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu", | ||
1772 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1773 | (unsigned long) __entry->ino, | ||
1774 | (unsigned) __entry->lblk, | ||
1775 | __entry->len, | ||
1776 | (unsigned long long) __entry->start) | ||
1777 | ); | ||
1778 | |||
1779 | TRACE_EVENT(ext4_ext_in_cache, | ||
1780 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret), | ||
1781 | |||
1782 | TP_ARGS(inode, lblk, ret), | ||
1783 | |||
1784 | TP_STRUCT__entry( | ||
1785 | __field( ino_t, ino ) | ||
1786 | __field( dev_t, dev ) | ||
1787 | __field( ext4_lblk_t, lblk ) | ||
1788 | __field( int, ret ) | ||
1789 | ), | ||
1790 | |||
1791 | TP_fast_assign( | ||
1792 | __entry->ino = inode->i_ino; | ||
1793 | __entry->dev = inode->i_sb->s_dev; | ||
1794 | __entry->lblk = lblk; | ||
1795 | __entry->ret = ret; | ||
1796 | ), | ||
1797 | |||
1798 | TP_printk("dev %d,%d ino %lu lblk %u ret %d", | ||
1799 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1800 | (unsigned long) __entry->ino, | ||
1801 | (unsigned) __entry->lblk, | ||
1802 | __entry->ret) | ||
1803 | |||
1804 | ); | ||
1805 | |||
1806 | TRACE_EVENT(ext4_find_delalloc_range, | ||
1807 | TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to, | ||
1808 | int reverse, int found, ext4_lblk_t found_blk), | ||
1809 | |||
1810 | TP_ARGS(inode, from, to, reverse, found, found_blk), | ||
1811 | |||
1812 | TP_STRUCT__entry( | ||
1813 | __field( ino_t, ino ) | ||
1814 | __field( dev_t, dev ) | ||
1815 | __field( ext4_lblk_t, from ) | ||
1816 | __field( ext4_lblk_t, to ) | ||
1817 | __field( int, reverse ) | ||
1818 | __field( int, found ) | ||
1819 | __field( ext4_lblk_t, found_blk ) | ||
1820 | ), | ||
1821 | |||
1822 | TP_fast_assign( | ||
1823 | __entry->ino = inode->i_ino; | ||
1824 | __entry->dev = inode->i_sb->s_dev; | ||
1825 | __entry->from = from; | ||
1826 | __entry->to = to; | ||
1827 | __entry->reverse = reverse; | ||
1828 | __entry->found = found; | ||
1829 | __entry->found_blk = found_blk; | ||
1830 | ), | ||
1831 | |||
1832 | TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d " | ||
1833 | "(blk = %u)", | ||
1834 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1835 | (unsigned long) __entry->ino, | ||
1836 | (unsigned) __entry->from, (unsigned) __entry->to, | ||
1837 | __entry->reverse, __entry->found, | ||
1838 | (unsigned) __entry->found_blk) | ||
1839 | ); | ||
1840 | |||
1841 | TRACE_EVENT(ext4_get_reserved_cluster_alloc, | ||
1842 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len), | ||
1843 | |||
1844 | TP_ARGS(inode, lblk, len), | ||
1845 | |||
1846 | TP_STRUCT__entry( | ||
1847 | __field( ino_t, ino ) | ||
1848 | __field( dev_t, dev ) | ||
1849 | __field( ext4_lblk_t, lblk ) | ||
1850 | __field( unsigned int, len ) | ||
1851 | ), | ||
1852 | |||
1853 | TP_fast_assign( | ||
1854 | __entry->ino = inode->i_ino; | ||
1855 | __entry->dev = inode->i_sb->s_dev; | ||
1856 | __entry->lblk = lblk; | ||
1857 | __entry->len = len; | ||
1858 | ), | ||
1859 | |||
1860 | TP_printk("dev %d,%d ino %lu lblk %u len %u", | ||
1861 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1862 | (unsigned long) __entry->ino, | ||
1863 | (unsigned) __entry->lblk, | ||
1864 | __entry->len) | ||
1865 | ); | ||
1866 | |||
1867 | TRACE_EVENT(ext4_ext_show_extent, | ||
1868 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk, | ||
1869 | unsigned short len), | ||
1870 | |||
1871 | TP_ARGS(inode, lblk, pblk, len), | ||
1872 | |||
1873 | TP_STRUCT__entry( | ||
1874 | __field( ino_t, ino ) | ||
1875 | __field( dev_t, dev ) | ||
1876 | __field( ext4_lblk_t, lblk ) | ||
1877 | __field( ext4_fsblk_t, pblk ) | ||
1878 | __field( unsigned short, len ) | ||
1879 | ), | ||
1880 | |||
1881 | TP_fast_assign( | ||
1882 | __entry->ino = inode->i_ino; | ||
1883 | __entry->dev = inode->i_sb->s_dev; | ||
1884 | __entry->lblk = lblk; | ||
1885 | __entry->pblk = pblk; | ||
1886 | __entry->len = len; | ||
1887 | ), | ||
1888 | |||
1889 | TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u", | ||
1890 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1891 | (unsigned long) __entry->ino, | ||
1892 | (unsigned) __entry->lblk, | ||
1893 | (unsigned long long) __entry->pblk, | ||
1894 | (unsigned short) __entry->len) | ||
1895 | ); | ||
1896 | |||
1897 | TRACE_EVENT(ext4_remove_blocks, | ||
1898 | TP_PROTO(struct inode *inode, struct ext4_extent *ex, | ||
1899 | ext4_lblk_t from, ext4_fsblk_t to, | ||
1900 | ext4_fsblk_t partial_cluster), | ||
1901 | |||
1902 | TP_ARGS(inode, ex, from, to, partial_cluster), | ||
1903 | |||
1904 | TP_STRUCT__entry( | ||
1905 | __field( ino_t, ino ) | ||
1906 | __field( dev_t, dev ) | ||
1907 | __field( ext4_lblk_t, ee_lblk ) | ||
1908 | __field( ext4_fsblk_t, ee_pblk ) | ||
1909 | __field( unsigned short, ee_len ) | ||
1910 | __field( ext4_lblk_t, from ) | ||
1911 | __field( ext4_lblk_t, to ) | ||
1912 | __field( ext4_fsblk_t, partial ) | ||
1913 | ), | ||
1914 | |||
1915 | TP_fast_assign( | ||
1916 | __entry->ino = inode->i_ino; | ||
1917 | __entry->dev = inode->i_sb->s_dev; | ||
1918 | __entry->ee_lblk = cpu_to_le32(ex->ee_block); | ||
1919 | __entry->ee_pblk = ext4_ext_pblock(ex); | ||
1920 | __entry->ee_len = ext4_ext_get_actual_len(ex); | ||
1921 | __entry->from = from; | ||
1922 | __entry->to = to; | ||
1923 | __entry->partial = partial_cluster; | ||
1924 | ), | ||
1925 | |||
1926 | TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]" | ||
1927 | "from %u to %u partial_cluster %u", | ||
1928 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1929 | (unsigned long) __entry->ino, | ||
1930 | (unsigned) __entry->ee_lblk, | ||
1931 | (unsigned long long) __entry->ee_pblk, | ||
1932 | (unsigned short) __entry->ee_len, | ||
1933 | (unsigned) __entry->from, | ||
1934 | (unsigned) __entry->to, | ||
1935 | (unsigned) __entry->partial) | ||
1936 | ); | ||
1937 | |||
1938 | TRACE_EVENT(ext4_ext_rm_leaf, | ||
1939 | TP_PROTO(struct inode *inode, ext4_lblk_t start, | ||
1940 | struct ext4_extent *ex, ext4_fsblk_t partial_cluster), | ||
1941 | |||
1942 | TP_ARGS(inode, start, ex, partial_cluster), | ||
1943 | |||
1944 | TP_STRUCT__entry( | ||
1945 | __field( ino_t, ino ) | ||
1946 | __field( dev_t, dev ) | ||
1947 | __field( ext4_lblk_t, start ) | ||
1948 | __field( ext4_lblk_t, ee_lblk ) | ||
1949 | __field( ext4_fsblk_t, ee_pblk ) | ||
1950 | __field( short, ee_len ) | ||
1951 | __field( ext4_fsblk_t, partial ) | ||
1952 | ), | ||
1953 | |||
1954 | TP_fast_assign( | ||
1955 | __entry->ino = inode->i_ino; | ||
1956 | __entry->dev = inode->i_sb->s_dev; | ||
1957 | __entry->start = start; | ||
1958 | __entry->ee_lblk = le32_to_cpu(ex->ee_block); | ||
1959 | __entry->ee_pblk = ext4_ext_pblock(ex); | ||
1960 | __entry->ee_len = ext4_ext_get_actual_len(ex); | ||
1961 | __entry->partial = partial_cluster; | ||
1962 | ), | ||
1963 | |||
1964 | TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]" | ||
1965 | "partial_cluster %u", | ||
1966 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1967 | (unsigned long) __entry->ino, | ||
1968 | (unsigned) __entry->start, | ||
1969 | (unsigned) __entry->ee_lblk, | ||
1970 | (unsigned long long) __entry->ee_pblk, | ||
1971 | (unsigned short) __entry->ee_len, | ||
1972 | (unsigned) __entry->partial) | ||
1973 | ); | ||
1974 | |||
1975 | TRACE_EVENT(ext4_ext_rm_idx, | ||
1976 | TP_PROTO(struct inode *inode, ext4_fsblk_t pblk), | ||
1977 | |||
1978 | TP_ARGS(inode, pblk), | ||
1979 | |||
1980 | TP_STRUCT__entry( | ||
1981 | __field( ino_t, ino ) | ||
1982 | __field( dev_t, dev ) | ||
1983 | __field( ext4_fsblk_t, pblk ) | ||
1984 | ), | ||
1985 | |||
1986 | TP_fast_assign( | ||
1987 | __entry->ino = inode->i_ino; | ||
1988 | __entry->dev = inode->i_sb->s_dev; | ||
1989 | __entry->pblk = pblk; | ||
1990 | ), | ||
1991 | |||
1992 | TP_printk("dev %d,%d ino %lu index_pblk %llu", | ||
1993 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
1994 | (unsigned long) __entry->ino, | ||
1995 | (unsigned long long) __entry->pblk) | ||
1996 | ); | ||
1997 | |||
1998 | TRACE_EVENT(ext4_ext_remove_space, | ||
1999 | TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth), | ||
2000 | |||
2001 | TP_ARGS(inode, start, depth), | ||
2002 | |||
2003 | TP_STRUCT__entry( | ||
2004 | __field( ino_t, ino ) | ||
2005 | __field( dev_t, dev ) | ||
2006 | __field( ext4_lblk_t, start ) | ||
2007 | __field( int, depth ) | ||
2008 | ), | ||
2009 | |||
2010 | TP_fast_assign( | ||
2011 | __entry->ino = inode->i_ino; | ||
2012 | __entry->dev = inode->i_sb->s_dev; | ||
2013 | __entry->start = start; | ||
2014 | __entry->depth = depth; | ||
2015 | ), | ||
2016 | |||
2017 | TP_printk("dev %d,%d ino %lu since %u depth %d", | ||
2018 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2019 | (unsigned long) __entry->ino, | ||
2020 | (unsigned) __entry->start, | ||
2021 | __entry->depth) | ||
2022 | ); | ||
2023 | |||
2024 | TRACE_EVENT(ext4_ext_remove_space_done, | ||
2025 | TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth, | ||
2026 | ext4_lblk_t partial, unsigned short eh_entries), | ||
2027 | |||
2028 | TP_ARGS(inode, start, depth, partial, eh_entries), | ||
2029 | |||
2030 | TP_STRUCT__entry( | ||
2031 | __field( ino_t, ino ) | ||
2032 | __field( dev_t, dev ) | ||
2033 | __field( ext4_lblk_t, start ) | ||
2034 | __field( int, depth ) | ||
2035 | __field( ext4_lblk_t, partial ) | ||
2036 | __field( unsigned short, eh_entries ) | ||
2037 | ), | ||
2038 | |||
2039 | TP_fast_assign( | ||
2040 | __entry->ino = inode->i_ino; | ||
2041 | __entry->dev = inode->i_sb->s_dev; | ||
2042 | __entry->start = start; | ||
2043 | __entry->depth = depth; | ||
2044 | __entry->partial = partial; | ||
2045 | __entry->eh_entries = eh_entries; | ||
2046 | ), | ||
2047 | |||
2048 | TP_printk("dev %d,%d ino %lu since %u depth %d partial %u " | ||
2049 | "remaining_entries %u", | ||
2050 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2051 | (unsigned long) __entry->ino, | ||
2052 | (unsigned) __entry->start, | ||
2053 | __entry->depth, | ||
2054 | (unsigned) __entry->partial, | ||
2055 | (unsigned short) __entry->eh_entries) | ||
2056 | ); | ||
2057 | |||
1592 | #endif /* _TRACE_EXT4_H */ | 2058 | #endif /* _TRACE_EXT4_H */ |
1593 | 2059 | ||
1594 | /* This part must be outside protection */ | 2060 | /* This part must be outside protection */ |
diff --git a/include/trace/events/module.h b/include/trace/events/module.h index 21a546d27c0c..161932737416 100644 --- a/include/trace/events/module.h +++ b/include/trace/events/module.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Because linux/module.h has tracepoints in the header, and ftrace.h | 2 | * Because linux/module.h has tracepoints in the header, and ftrace.h |
3 | * eventually includes this file, define_trace.h includes linux/module.h | 3 | * used to include this file, define_trace.h includes linux/module.h |
4 | * But we do not want the module.h to override the TRACE_SYSTEM macro | 4 | * But we do not want the module.h to override the TRACE_SYSTEM macro |
5 | * variable that define_trace.h is processing, so we only set it | 5 | * variable that define_trace.h is processing, so we only set it |
6 | * when module events are being processed, which would happen when | 6 | * when module events are being processed, which would happen when |
diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index 36851f7f13da..edc4b3d25a2d 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h | |||
@@ -266,7 +266,7 @@ DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template, | |||
266 | unsigned long nr_lumpy_taken, | 266 | unsigned long nr_lumpy_taken, |
267 | unsigned long nr_lumpy_dirty, | 267 | unsigned long nr_lumpy_dirty, |
268 | unsigned long nr_lumpy_failed, | 268 | unsigned long nr_lumpy_failed, |
269 | int isolate_mode), | 269 | isolate_mode_t isolate_mode), |
270 | 270 | ||
271 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode), | 271 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode), |
272 | 272 | ||
@@ -278,7 +278,7 @@ DECLARE_EVENT_CLASS(mm_vmscan_lru_isolate_template, | |||
278 | __field(unsigned long, nr_lumpy_taken) | 278 | __field(unsigned long, nr_lumpy_taken) |
279 | __field(unsigned long, nr_lumpy_dirty) | 279 | __field(unsigned long, nr_lumpy_dirty) |
280 | __field(unsigned long, nr_lumpy_failed) | 280 | __field(unsigned long, nr_lumpy_failed) |
281 | __field(int, isolate_mode) | 281 | __field(isolate_mode_t, isolate_mode) |
282 | ), | 282 | ), |
283 | 283 | ||
284 | TP_fast_assign( | 284 | TP_fast_assign( |
@@ -312,7 +312,7 @@ DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_lru_isolate, | |||
312 | unsigned long nr_lumpy_taken, | 312 | unsigned long nr_lumpy_taken, |
313 | unsigned long nr_lumpy_dirty, | 313 | unsigned long nr_lumpy_dirty, |
314 | unsigned long nr_lumpy_failed, | 314 | unsigned long nr_lumpy_failed, |
315 | int isolate_mode), | 315 | isolate_mode_t isolate_mode), |
316 | 316 | ||
317 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode) | 317 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode) |
318 | 318 | ||
@@ -327,7 +327,7 @@ DEFINE_EVENT(mm_vmscan_lru_isolate_template, mm_vmscan_memcg_isolate, | |||
327 | unsigned long nr_lumpy_taken, | 327 | unsigned long nr_lumpy_taken, |
328 | unsigned long nr_lumpy_dirty, | 328 | unsigned long nr_lumpy_dirty, |
329 | unsigned long nr_lumpy_failed, | 329 | unsigned long nr_lumpy_failed, |
330 | int isolate_mode), | 330 | isolate_mode_t isolate_mode), |
331 | 331 | ||
332 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode) | 332 | TP_ARGS(order, nr_requested, nr_scanned, nr_taken, nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, isolate_mode) |
333 | 333 | ||
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h index 5f172703eb4f..b99caa8b780c 100644 --- a/include/trace/events/writeback.h +++ b/include/trace/events/writeback.h | |||
@@ -34,6 +34,7 @@ DECLARE_EVENT_CLASS(writeback_work_class, | |||
34 | __field(int, for_kupdate) | 34 | __field(int, for_kupdate) |
35 | __field(int, range_cyclic) | 35 | __field(int, range_cyclic) |
36 | __field(int, for_background) | 36 | __field(int, for_background) |
37 | __field(int, reason) | ||
37 | ), | 38 | ), |
38 | TP_fast_assign( | 39 | TP_fast_assign( |
39 | strncpy(__entry->name, dev_name(bdi->dev), 32); | 40 | strncpy(__entry->name, dev_name(bdi->dev), 32); |
@@ -43,16 +44,18 @@ DECLARE_EVENT_CLASS(writeback_work_class, | |||
43 | __entry->for_kupdate = work->for_kupdate; | 44 | __entry->for_kupdate = work->for_kupdate; |
44 | __entry->range_cyclic = work->range_cyclic; | 45 | __entry->range_cyclic = work->range_cyclic; |
45 | __entry->for_background = work->for_background; | 46 | __entry->for_background = work->for_background; |
47 | __entry->reason = work->reason; | ||
46 | ), | 48 | ), |
47 | TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d " | 49 | TP_printk("bdi %s: sb_dev %d:%d nr_pages=%ld sync_mode=%d " |
48 | "kupdate=%d range_cyclic=%d background=%d", | 50 | "kupdate=%d range_cyclic=%d background=%d reason=%s", |
49 | __entry->name, | 51 | __entry->name, |
50 | MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev), | 52 | MAJOR(__entry->sb_dev), MINOR(__entry->sb_dev), |
51 | __entry->nr_pages, | 53 | __entry->nr_pages, |
52 | __entry->sync_mode, | 54 | __entry->sync_mode, |
53 | __entry->for_kupdate, | 55 | __entry->for_kupdate, |
54 | __entry->range_cyclic, | 56 | __entry->range_cyclic, |
55 | __entry->for_background | 57 | __entry->for_background, |
58 | wb_reason_name[__entry->reason] | ||
56 | ) | 59 | ) |
57 | ); | 60 | ); |
58 | #define DEFINE_WRITEBACK_WORK_EVENT(name) \ | 61 | #define DEFINE_WRITEBACK_WORK_EVENT(name) \ |
@@ -104,30 +107,6 @@ DEFINE_WRITEBACK_EVENT(writeback_bdi_register); | |||
104 | DEFINE_WRITEBACK_EVENT(writeback_bdi_unregister); | 107 | DEFINE_WRITEBACK_EVENT(writeback_bdi_unregister); |
105 | DEFINE_WRITEBACK_EVENT(writeback_thread_start); | 108 | DEFINE_WRITEBACK_EVENT(writeback_thread_start); |
106 | DEFINE_WRITEBACK_EVENT(writeback_thread_stop); | 109 | DEFINE_WRITEBACK_EVENT(writeback_thread_stop); |
107 | DEFINE_WRITEBACK_EVENT(balance_dirty_start); | ||
108 | DEFINE_WRITEBACK_EVENT(balance_dirty_wait); | ||
109 | |||
110 | TRACE_EVENT(balance_dirty_written, | ||
111 | |||
112 | TP_PROTO(struct backing_dev_info *bdi, int written), | ||
113 | |||
114 | TP_ARGS(bdi, written), | ||
115 | |||
116 | TP_STRUCT__entry( | ||
117 | __array(char, name, 32) | ||
118 | __field(int, written) | ||
119 | ), | ||
120 | |||
121 | TP_fast_assign( | ||
122 | strncpy(__entry->name, dev_name(bdi->dev), 32); | ||
123 | __entry->written = written; | ||
124 | ), | ||
125 | |||
126 | TP_printk("bdi %s written %d", | ||
127 | __entry->name, | ||
128 | __entry->written | ||
129 | ) | ||
130 | ); | ||
131 | 110 | ||
132 | DECLARE_EVENT_CLASS(wbc_class, | 111 | DECLARE_EVENT_CLASS(wbc_class, |
133 | TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), | 112 | TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), |
@@ -181,27 +160,31 @@ DEFINE_WBC_EVENT(wbc_writepage); | |||
181 | 160 | ||
182 | TRACE_EVENT(writeback_queue_io, | 161 | TRACE_EVENT(writeback_queue_io, |
183 | TP_PROTO(struct bdi_writeback *wb, | 162 | TP_PROTO(struct bdi_writeback *wb, |
184 | unsigned long *older_than_this, | 163 | struct wb_writeback_work *work, |
185 | int moved), | 164 | int moved), |
186 | TP_ARGS(wb, older_than_this, moved), | 165 | TP_ARGS(wb, work, moved), |
187 | TP_STRUCT__entry( | 166 | TP_STRUCT__entry( |
188 | __array(char, name, 32) | 167 | __array(char, name, 32) |
189 | __field(unsigned long, older) | 168 | __field(unsigned long, older) |
190 | __field(long, age) | 169 | __field(long, age) |
191 | __field(int, moved) | 170 | __field(int, moved) |
171 | __field(int, reason) | ||
192 | ), | 172 | ), |
193 | TP_fast_assign( | 173 | TP_fast_assign( |
174 | unsigned long *older_than_this = work->older_than_this; | ||
194 | strncpy(__entry->name, dev_name(wb->bdi->dev), 32); | 175 | strncpy(__entry->name, dev_name(wb->bdi->dev), 32); |
195 | __entry->older = older_than_this ? *older_than_this : 0; | 176 | __entry->older = older_than_this ? *older_than_this : 0; |
196 | __entry->age = older_than_this ? | 177 | __entry->age = older_than_this ? |
197 | (jiffies - *older_than_this) * 1000 / HZ : -1; | 178 | (jiffies - *older_than_this) * 1000 / HZ : -1; |
198 | __entry->moved = moved; | 179 | __entry->moved = moved; |
180 | __entry->reason = work->reason; | ||
199 | ), | 181 | ), |
200 | TP_printk("bdi %s: older=%lu age=%ld enqueue=%d", | 182 | TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s", |
201 | __entry->name, | 183 | __entry->name, |
202 | __entry->older, /* older_than_this in jiffies */ | 184 | __entry->older, /* older_than_this in jiffies */ |
203 | __entry->age, /* older_than_this in relative milliseconds */ | 185 | __entry->age, /* older_than_this in relative milliseconds */ |
204 | __entry->moved) | 186 | __entry->moved, |
187 | wb_reason_name[__entry->reason]) | ||
205 | ); | 188 | ); |
206 | 189 | ||
207 | TRACE_EVENT(global_dirty_state, | 190 | TRACE_EVENT(global_dirty_state, |
@@ -250,6 +233,124 @@ TRACE_EVENT(global_dirty_state, | |||
250 | ) | 233 | ) |
251 | ); | 234 | ); |
252 | 235 | ||
236 | #define KBps(x) ((x) << (PAGE_SHIFT - 10)) | ||
237 | |||
238 | TRACE_EVENT(bdi_dirty_ratelimit, | ||
239 | |||
240 | TP_PROTO(struct backing_dev_info *bdi, | ||
241 | unsigned long dirty_rate, | ||
242 | unsigned long task_ratelimit), | ||
243 | |||
244 | TP_ARGS(bdi, dirty_rate, task_ratelimit), | ||
245 | |||
246 | TP_STRUCT__entry( | ||
247 | __array(char, bdi, 32) | ||
248 | __field(unsigned long, write_bw) | ||
249 | __field(unsigned long, avg_write_bw) | ||
250 | __field(unsigned long, dirty_rate) | ||
251 | __field(unsigned long, dirty_ratelimit) | ||
252 | __field(unsigned long, task_ratelimit) | ||
253 | __field(unsigned long, balanced_dirty_ratelimit) | ||
254 | ), | ||
255 | |||
256 | TP_fast_assign( | ||
257 | strlcpy(__entry->bdi, dev_name(bdi->dev), 32); | ||
258 | __entry->write_bw = KBps(bdi->write_bandwidth); | ||
259 | __entry->avg_write_bw = KBps(bdi->avg_write_bandwidth); | ||
260 | __entry->dirty_rate = KBps(dirty_rate); | ||
261 | __entry->dirty_ratelimit = KBps(bdi->dirty_ratelimit); | ||
262 | __entry->task_ratelimit = KBps(task_ratelimit); | ||
263 | __entry->balanced_dirty_ratelimit = | ||
264 | KBps(bdi->balanced_dirty_ratelimit); | ||
265 | ), | ||
266 | |||
267 | TP_printk("bdi %s: " | ||
268 | "write_bw=%lu awrite_bw=%lu dirty_rate=%lu " | ||
269 | "dirty_ratelimit=%lu task_ratelimit=%lu " | ||
270 | "balanced_dirty_ratelimit=%lu", | ||
271 | __entry->bdi, | ||
272 | __entry->write_bw, /* write bandwidth */ | ||
273 | __entry->avg_write_bw, /* avg write bandwidth */ | ||
274 | __entry->dirty_rate, /* bdi dirty rate */ | ||
275 | __entry->dirty_ratelimit, /* base ratelimit */ | ||
276 | __entry->task_ratelimit, /* ratelimit with position control */ | ||
277 | __entry->balanced_dirty_ratelimit /* the balanced ratelimit */ | ||
278 | ) | ||
279 | ); | ||
280 | |||
281 | TRACE_EVENT(balance_dirty_pages, | ||
282 | |||
283 | TP_PROTO(struct backing_dev_info *bdi, | ||
284 | unsigned long thresh, | ||
285 | unsigned long bg_thresh, | ||
286 | unsigned long dirty, | ||
287 | unsigned long bdi_thresh, | ||
288 | unsigned long bdi_dirty, | ||
289 | unsigned long dirty_ratelimit, | ||
290 | unsigned long task_ratelimit, | ||
291 | unsigned long dirtied, | ||
292 | long pause, | ||
293 | unsigned long start_time), | ||
294 | |||
295 | TP_ARGS(bdi, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty, | ||
296 | dirty_ratelimit, task_ratelimit, | ||
297 | dirtied, pause, start_time), | ||
298 | |||
299 | TP_STRUCT__entry( | ||
300 | __array( char, bdi, 32) | ||
301 | __field(unsigned long, limit) | ||
302 | __field(unsigned long, setpoint) | ||
303 | __field(unsigned long, dirty) | ||
304 | __field(unsigned long, bdi_setpoint) | ||
305 | __field(unsigned long, bdi_dirty) | ||
306 | __field(unsigned long, dirty_ratelimit) | ||
307 | __field(unsigned long, task_ratelimit) | ||
308 | __field(unsigned int, dirtied) | ||
309 | __field(unsigned int, dirtied_pause) | ||
310 | __field(unsigned long, paused) | ||
311 | __field( long, pause) | ||
312 | ), | ||
313 | |||
314 | TP_fast_assign( | ||
315 | unsigned long freerun = (thresh + bg_thresh) / 2; | ||
316 | strlcpy(__entry->bdi, dev_name(bdi->dev), 32); | ||
317 | |||
318 | __entry->limit = global_dirty_limit; | ||
319 | __entry->setpoint = (global_dirty_limit + freerun) / 2; | ||
320 | __entry->dirty = dirty; | ||
321 | __entry->bdi_setpoint = __entry->setpoint * | ||
322 | bdi_thresh / (thresh + 1); | ||
323 | __entry->bdi_dirty = bdi_dirty; | ||
324 | __entry->dirty_ratelimit = KBps(dirty_ratelimit); | ||
325 | __entry->task_ratelimit = KBps(task_ratelimit); | ||
326 | __entry->dirtied = dirtied; | ||
327 | __entry->dirtied_pause = current->nr_dirtied_pause; | ||
328 | __entry->pause = pause * 1000 / HZ; | ||
329 | __entry->paused = (jiffies - start_time) * 1000 / HZ; | ||
330 | ), | ||
331 | |||
332 | |||
333 | TP_printk("bdi %s: " | ||
334 | "limit=%lu setpoint=%lu dirty=%lu " | ||
335 | "bdi_setpoint=%lu bdi_dirty=%lu " | ||
336 | "dirty_ratelimit=%lu task_ratelimit=%lu " | ||
337 | "dirtied=%u dirtied_pause=%u " | ||
338 | "paused=%lu pause=%ld", | ||
339 | __entry->bdi, | ||
340 | __entry->limit, | ||
341 | __entry->setpoint, | ||
342 | __entry->dirty, | ||
343 | __entry->bdi_setpoint, | ||
344 | __entry->bdi_dirty, | ||
345 | __entry->dirty_ratelimit, | ||
346 | __entry->task_ratelimit, | ||
347 | __entry->dirtied, | ||
348 | __entry->dirtied_pause, | ||
349 | __entry->paused, /* ms */ | ||
350 | __entry->pause /* ms */ | ||
351 | ) | ||
352 | ); | ||
353 | |||
253 | DECLARE_EVENT_CLASS(writeback_congest_waited_template, | 354 | DECLARE_EVENT_CLASS(writeback_congest_waited_template, |
254 | 355 | ||
255 | TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed), | 356 | TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed), |
diff --git a/include/video/omapdss.h b/include/video/omapdss.h index b66ebb2032c6..378c7ed6760b 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
@@ -307,15 +307,8 @@ struct omap_dss_board_info { | |||
307 | void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask); | 307 | void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask); |
308 | }; | 308 | }; |
309 | 309 | ||
310 | #if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS) | ||
311 | /* Init with the board info */ | 310 | /* Init with the board info */ |
312 | extern int omap_display_init(struct omap_dss_board_info *board_data); | 311 | extern int omap_display_init(struct omap_dss_board_info *board_data); |
313 | #else | ||
314 | static inline int omap_display_init(struct omap_dss_board_info *board_data) | ||
315 | { | ||
316 | return 0; | ||
317 | } | ||
318 | #endif | ||
319 | 312 | ||
320 | struct omap_display_platform_data { | 313 | struct omap_display_platform_data { |
321 | struct omap_dss_board_info *board_data; | 314 | struct omap_dss_board_info *board_data; |
diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index 6b99bfbd785d..11e2dfce42f8 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h | |||
@@ -43,7 +43,6 @@ | |||
43 | #include <xen/interface/grant_table.h> | 43 | #include <xen/interface/grant_table.h> |
44 | 44 | ||
45 | #include <asm/xen/hypervisor.h> | 45 | #include <asm/xen/hypervisor.h> |
46 | #include <asm/xen/grant_table.h> | ||
47 | 46 | ||
48 | #include <xen/features.h> | 47 | #include <xen/features.h> |
49 | 48 | ||
diff --git a/include/xen/hvc-console.h b/include/xen/hvc-console.h index 901724dc528d..b62dfef15f61 100644 --- a/include/xen/hvc-console.h +++ b/include/xen/hvc-console.h | |||
@@ -6,12 +6,12 @@ extern struct console xenboot_console; | |||
6 | #ifdef CONFIG_HVC_XEN | 6 | #ifdef CONFIG_HVC_XEN |
7 | void xen_console_resume(void); | 7 | void xen_console_resume(void); |
8 | void xen_raw_console_write(const char *str); | 8 | void xen_raw_console_write(const char *str); |
9 | __attribute__((format(printf, 1, 2))) | 9 | __printf(1, 2) |
10 | void xen_raw_printk(const char *fmt, ...); | 10 | void xen_raw_printk(const char *fmt, ...); |
11 | #else | 11 | #else |
12 | static inline void xen_console_resume(void) { } | 12 | static inline void xen_console_resume(void) { } |
13 | static inline void xen_raw_console_write(const char *str) { } | 13 | static inline void xen_raw_console_write(const char *str) { } |
14 | static inline __attribute__((format(printf, 1, 2))) | 14 | static inline __printf(1, 2) |
15 | void xen_raw_printk(const char *fmt, ...) { } | 15 | void xen_raw_printk(const char *fmt, ...) { } |
16 | #endif | 16 | #endif |
17 | 17 | ||
diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h index 3d5d6db864fe..9324488f23f0 100644 --- a/include/xen/interface/io/blkif.h +++ b/include/xen/interface/io/blkif.h | |||
@@ -57,6 +57,36 @@ typedef uint64_t blkif_sector_t; | |||
57 | * "feature-flush-cache" node! | 57 | * "feature-flush-cache" node! |
58 | */ | 58 | */ |
59 | #define BLKIF_OP_FLUSH_DISKCACHE 3 | 59 | #define BLKIF_OP_FLUSH_DISKCACHE 3 |
60 | |||
61 | /* | ||
62 | * Recognised only if "feature-discard" is present in backend xenbus info. | ||
63 | * The "feature-discard" node contains a boolean indicating whether trim | ||
64 | * (ATA) or unmap (SCSI) - conviently called discard requests are likely | ||
65 | * to succeed or fail. Either way, a discard request | ||
66 | * may fail at any time with BLKIF_RSP_EOPNOTSUPP if it is unsupported by | ||
67 | * the underlying block-device hardware. The boolean simply indicates whether | ||
68 | * or not it is worthwhile for the frontend to attempt discard requests. | ||
69 | * If a backend does not recognise BLKIF_OP_DISCARD, it should *not* | ||
70 | * create the "feature-discard" node! | ||
71 | * | ||
72 | * Discard operation is a request for the underlying block device to mark | ||
73 | * extents to be erased. However, discard does not guarantee that the blocks | ||
74 | * will be erased from the device - it is just a hint to the device | ||
75 | * controller that these blocks are no longer in use. What the device | ||
76 | * controller does with that information is left to the controller. | ||
77 | * Discard operations are passed with sector_number as the | ||
78 | * sector index to begin discard operations at and nr_sectors as the number of | ||
79 | * sectors to be discarded. The specified sectors should be discarded if the | ||
80 | * underlying block device supports trim (ATA) or unmap (SCSI) operations, | ||
81 | * or a BLKIF_RSP_EOPNOTSUPP should be returned. | ||
82 | * More information about trim/unmap operations at: | ||
83 | * http://t13.org/Documents/UploadedDocuments/docs2008/ | ||
84 | * e07154r6-Data_Set_Management_Proposal_for_ATA-ACS2.doc | ||
85 | * http://www.seagate.com/staticfiles/support/disc/manuals/ | ||
86 | * Interface%20manuals/100293068c.pdf | ||
87 | */ | ||
88 | #define BLKIF_OP_DISCARD 5 | ||
89 | |||
60 | /* | 90 | /* |
61 | * Maximum scatter/gather segments per request. | 91 | * Maximum scatter/gather segments per request. |
62 | * This is carefully chosen so that sizeof(struct blkif_ring) <= PAGE_SIZE. | 92 | * This is carefully chosen so that sizeof(struct blkif_ring) <= PAGE_SIZE. |
@@ -74,6 +104,11 @@ struct blkif_request_rw { | |||
74 | } seg[BLKIF_MAX_SEGMENTS_PER_REQUEST]; | 104 | } seg[BLKIF_MAX_SEGMENTS_PER_REQUEST]; |
75 | }; | 105 | }; |
76 | 106 | ||
107 | struct blkif_request_discard { | ||
108 | blkif_sector_t sector_number; | ||
109 | uint64_t nr_sectors; | ||
110 | }; | ||
111 | |||
77 | struct blkif_request { | 112 | struct blkif_request { |
78 | uint8_t operation; /* BLKIF_OP_??? */ | 113 | uint8_t operation; /* BLKIF_OP_??? */ |
79 | uint8_t nr_segments; /* number of segments */ | 114 | uint8_t nr_segments; /* number of segments */ |
@@ -81,6 +116,7 @@ struct blkif_request { | |||
81 | uint64_t id; /* private guest value, echoed in resp */ | 116 | uint64_t id; /* private guest value, echoed in resp */ |
82 | union { | 117 | union { |
83 | struct blkif_request_rw rw; | 118 | struct blkif_request_rw rw; |
119 | struct blkif_request_discard discard; | ||
84 | } u; | 120 | } u; |
85 | }; | 121 | }; |
86 | 122 | ||
diff --git a/include/xen/interface/platform.h b/include/xen/interface/platform.h new file mode 100644 index 000000000000..c1684680431b --- /dev/null +++ b/include/xen/interface/platform.h | |||
@@ -0,0 +1,320 @@ | |||
1 | /****************************************************************************** | ||
2 | * platform.h | ||
3 | * | ||
4 | * Hardware platform operations. Intended for use by domain-0 kernel. | ||
5 | * | ||
6 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
7 | * of this software and associated documentation files (the "Software"), to | ||
8 | * deal in the Software without restriction, including without limitation the | ||
9 | * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
10 | * sell copies of the Software, and to permit persons to whom the Software is | ||
11 | * furnished to do so, subject to the following conditions: | ||
12 | * | ||
13 | * The above copyright notice and this permission notice shall be included in | ||
14 | * all copies or substantial portions of the Software. | ||
15 | * | ||
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
21 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
22 | * DEALINGS IN THE SOFTWARE. | ||
23 | * | ||
24 | * Copyright (c) 2002-2006, K Fraser | ||
25 | */ | ||
26 | |||
27 | #ifndef __XEN_PUBLIC_PLATFORM_H__ | ||
28 | #define __XEN_PUBLIC_PLATFORM_H__ | ||
29 | |||
30 | #include "xen.h" | ||
31 | |||
32 | #define XENPF_INTERFACE_VERSION 0x03000001 | ||
33 | |||
34 | /* | ||
35 | * Set clock such that it would read <secs,nsecs> after 00:00:00 UTC, | ||
36 | * 1 January, 1970 if the current system time was <system_time>. | ||
37 | */ | ||
38 | #define XENPF_settime 17 | ||
39 | struct xenpf_settime { | ||
40 | /* IN variables. */ | ||
41 | uint32_t secs; | ||
42 | uint32_t nsecs; | ||
43 | uint64_t system_time; | ||
44 | }; | ||
45 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_settime_t); | ||
46 | |||
47 | /* | ||
48 | * Request memory range (@mfn, @mfn+@nr_mfns-1) to have type @type. | ||
49 | * On x86, @type is an architecture-defined MTRR memory type. | ||
50 | * On success, returns the MTRR that was used (@reg) and a handle that can | ||
51 | * be passed to XENPF_DEL_MEMTYPE to accurately tear down the new setting. | ||
52 | * (x86-specific). | ||
53 | */ | ||
54 | #define XENPF_add_memtype 31 | ||
55 | struct xenpf_add_memtype { | ||
56 | /* IN variables. */ | ||
57 | unsigned long mfn; | ||
58 | uint64_t nr_mfns; | ||
59 | uint32_t type; | ||
60 | /* OUT variables. */ | ||
61 | uint32_t handle; | ||
62 | uint32_t reg; | ||
63 | }; | ||
64 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_add_memtype_t); | ||
65 | |||
66 | /* | ||
67 | * Tear down an existing memory-range type. If @handle is remembered then it | ||
68 | * should be passed in to accurately tear down the correct setting (in case | ||
69 | * of overlapping memory regions with differing types). If it is not known | ||
70 | * then @handle should be set to zero. In all cases @reg must be set. | ||
71 | * (x86-specific). | ||
72 | */ | ||
73 | #define XENPF_del_memtype 32 | ||
74 | struct xenpf_del_memtype { | ||
75 | /* IN variables. */ | ||
76 | uint32_t handle; | ||
77 | uint32_t reg; | ||
78 | }; | ||
79 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_del_memtype_t); | ||
80 | |||
81 | /* Read current type of an MTRR (x86-specific). */ | ||
82 | #define XENPF_read_memtype 33 | ||
83 | struct xenpf_read_memtype { | ||
84 | /* IN variables. */ | ||
85 | uint32_t reg; | ||
86 | /* OUT variables. */ | ||
87 | unsigned long mfn; | ||
88 | uint64_t nr_mfns; | ||
89 | uint32_t type; | ||
90 | }; | ||
91 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_read_memtype_t); | ||
92 | |||
93 | #define XENPF_microcode_update 35 | ||
94 | struct xenpf_microcode_update { | ||
95 | /* IN variables. */ | ||
96 | GUEST_HANDLE(void) data; /* Pointer to microcode data */ | ||
97 | uint32_t length; /* Length of microcode data. */ | ||
98 | }; | ||
99 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_microcode_update_t); | ||
100 | |||
101 | #define XENPF_platform_quirk 39 | ||
102 | #define QUIRK_NOIRQBALANCING 1 /* Do not restrict IO-APIC RTE targets */ | ||
103 | #define QUIRK_IOAPIC_BAD_REGSEL 2 /* IO-APIC REGSEL forgets its value */ | ||
104 | #define QUIRK_IOAPIC_GOOD_REGSEL 3 /* IO-APIC REGSEL behaves properly */ | ||
105 | struct xenpf_platform_quirk { | ||
106 | /* IN variables. */ | ||
107 | uint32_t quirk_id; | ||
108 | }; | ||
109 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_platform_quirk_t); | ||
110 | |||
111 | #define XENPF_firmware_info 50 | ||
112 | #define XEN_FW_DISK_INFO 1 /* from int 13 AH=08/41/48 */ | ||
113 | #define XEN_FW_DISK_MBR_SIGNATURE 2 /* from MBR offset 0x1b8 */ | ||
114 | #define XEN_FW_VBEDDC_INFO 3 /* from int 10 AX=4f15 */ | ||
115 | struct xenpf_firmware_info { | ||
116 | /* IN variables. */ | ||
117 | uint32_t type; | ||
118 | uint32_t index; | ||
119 | /* OUT variables. */ | ||
120 | union { | ||
121 | struct { | ||
122 | /* Int13, Fn48: Check Extensions Present. */ | ||
123 | uint8_t device; /* %dl: bios device number */ | ||
124 | uint8_t version; /* %ah: major version */ | ||
125 | uint16_t interface_support; /* %cx: support bitmap */ | ||
126 | /* Int13, Fn08: Legacy Get Device Parameters. */ | ||
127 | uint16_t legacy_max_cylinder; /* %cl[7:6]:%ch: max cyl # */ | ||
128 | uint8_t legacy_max_head; /* %dh: max head # */ | ||
129 | uint8_t legacy_sectors_per_track; /* %cl[5:0]: max sector # */ | ||
130 | /* Int13, Fn41: Get Device Parameters (as filled into %ds:%esi). */ | ||
131 | /* NB. First uint16_t of buffer must be set to buffer size. */ | ||
132 | GUEST_HANDLE(void) edd_params; | ||
133 | } disk_info; /* XEN_FW_DISK_INFO */ | ||
134 | struct { | ||
135 | uint8_t device; /* bios device number */ | ||
136 | uint32_t mbr_signature; /* offset 0x1b8 in mbr */ | ||
137 | } disk_mbr_signature; /* XEN_FW_DISK_MBR_SIGNATURE */ | ||
138 | struct { | ||
139 | /* Int10, AX=4F15: Get EDID info. */ | ||
140 | uint8_t capabilities; | ||
141 | uint8_t edid_transfer_time; | ||
142 | /* must refer to 128-byte buffer */ | ||
143 | GUEST_HANDLE(uchar) edid; | ||
144 | } vbeddc_info; /* XEN_FW_VBEDDC_INFO */ | ||
145 | } u; | ||
146 | }; | ||
147 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_firmware_info_t); | ||
148 | |||
149 | #define XENPF_enter_acpi_sleep 51 | ||
150 | struct xenpf_enter_acpi_sleep { | ||
151 | /* IN variables */ | ||
152 | uint16_t pm1a_cnt_val; /* PM1a control value. */ | ||
153 | uint16_t pm1b_cnt_val; /* PM1b control value. */ | ||
154 | uint32_t sleep_state; /* Which state to enter (Sn). */ | ||
155 | uint32_t flags; /* Must be zero. */ | ||
156 | }; | ||
157 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_enter_acpi_sleep_t); | ||
158 | |||
159 | #define XENPF_change_freq 52 | ||
160 | struct xenpf_change_freq { | ||
161 | /* IN variables */ | ||
162 | uint32_t flags; /* Must be zero. */ | ||
163 | uint32_t cpu; /* Physical cpu. */ | ||
164 | uint64_t freq; /* New frequency (Hz). */ | ||
165 | }; | ||
166 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_change_freq_t); | ||
167 | |||
168 | /* | ||
169 | * Get idle times (nanoseconds since boot) for physical CPUs specified in the | ||
170 | * @cpumap_bitmap with range [0..@cpumap_nr_cpus-1]. The @idletime array is | ||
171 | * indexed by CPU number; only entries with the corresponding @cpumap_bitmap | ||
172 | * bit set are written to. On return, @cpumap_bitmap is modified so that any | ||
173 | * non-existent CPUs are cleared. Such CPUs have their @idletime array entry | ||
174 | * cleared. | ||
175 | */ | ||
176 | #define XENPF_getidletime 53 | ||
177 | struct xenpf_getidletime { | ||
178 | /* IN/OUT variables */ | ||
179 | /* IN: CPUs to interrogate; OUT: subset of IN which are present */ | ||
180 | GUEST_HANDLE(uchar) cpumap_bitmap; | ||
181 | /* IN variables */ | ||
182 | /* Size of cpumap bitmap. */ | ||
183 | uint32_t cpumap_nr_cpus; | ||
184 | /* Must be indexable for every cpu in cpumap_bitmap. */ | ||
185 | GUEST_HANDLE(uint64_t) idletime; | ||
186 | /* OUT variables */ | ||
187 | /* System time when the idletime snapshots were taken. */ | ||
188 | uint64_t now; | ||
189 | }; | ||
190 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_getidletime_t); | ||
191 | |||
192 | #define XENPF_set_processor_pminfo 54 | ||
193 | |||
194 | /* ability bits */ | ||
195 | #define XEN_PROCESSOR_PM_CX 1 | ||
196 | #define XEN_PROCESSOR_PM_PX 2 | ||
197 | #define XEN_PROCESSOR_PM_TX 4 | ||
198 | |||
199 | /* cmd type */ | ||
200 | #define XEN_PM_CX 0 | ||
201 | #define XEN_PM_PX 1 | ||
202 | #define XEN_PM_TX 2 | ||
203 | |||
204 | /* Px sub info type */ | ||
205 | #define XEN_PX_PCT 1 | ||
206 | #define XEN_PX_PSS 2 | ||
207 | #define XEN_PX_PPC 4 | ||
208 | #define XEN_PX_PSD 8 | ||
209 | |||
210 | struct xen_power_register { | ||
211 | uint32_t space_id; | ||
212 | uint32_t bit_width; | ||
213 | uint32_t bit_offset; | ||
214 | uint32_t access_size; | ||
215 | uint64_t address; | ||
216 | }; | ||
217 | |||
218 | struct xen_processor_csd { | ||
219 | uint32_t domain; /* domain number of one dependent group */ | ||
220 | uint32_t coord_type; /* coordination type */ | ||
221 | uint32_t num; /* number of processors in same domain */ | ||
222 | }; | ||
223 | DEFINE_GUEST_HANDLE_STRUCT(xen_processor_csd); | ||
224 | |||
225 | struct xen_processor_cx { | ||
226 | struct xen_power_register reg; /* GAS for Cx trigger register */ | ||
227 | uint8_t type; /* cstate value, c0: 0, c1: 1, ... */ | ||
228 | uint32_t latency; /* worst latency (ms) to enter/exit this cstate */ | ||
229 | uint32_t power; /* average power consumption(mW) */ | ||
230 | uint32_t dpcnt; /* number of dependency entries */ | ||
231 | GUEST_HANDLE(xen_processor_csd) dp; /* NULL if no dependency */ | ||
232 | }; | ||
233 | DEFINE_GUEST_HANDLE_STRUCT(xen_processor_cx); | ||
234 | |||
235 | struct xen_processor_flags { | ||
236 | uint32_t bm_control:1; | ||
237 | uint32_t bm_check:1; | ||
238 | uint32_t has_cst:1; | ||
239 | uint32_t power_setup_done:1; | ||
240 | uint32_t bm_rld_set:1; | ||
241 | }; | ||
242 | |||
243 | struct xen_processor_power { | ||
244 | uint32_t count; /* number of C state entries in array below */ | ||
245 | struct xen_processor_flags flags; /* global flags of this processor */ | ||
246 | GUEST_HANDLE(xen_processor_cx) states; /* supported c states */ | ||
247 | }; | ||
248 | |||
249 | struct xen_pct_register { | ||
250 | uint8_t descriptor; | ||
251 | uint16_t length; | ||
252 | uint8_t space_id; | ||
253 | uint8_t bit_width; | ||
254 | uint8_t bit_offset; | ||
255 | uint8_t reserved; | ||
256 | uint64_t address; | ||
257 | }; | ||
258 | |||
259 | struct xen_processor_px { | ||
260 | uint64_t core_frequency; /* megahertz */ | ||
261 | uint64_t power; /* milliWatts */ | ||
262 | uint64_t transition_latency; /* microseconds */ | ||
263 | uint64_t bus_master_latency; /* microseconds */ | ||
264 | uint64_t control; /* control value */ | ||
265 | uint64_t status; /* success indicator */ | ||
266 | }; | ||
267 | DEFINE_GUEST_HANDLE_STRUCT(xen_processor_px); | ||
268 | |||
269 | struct xen_psd_package { | ||
270 | uint64_t num_entries; | ||
271 | uint64_t revision; | ||
272 | uint64_t domain; | ||
273 | uint64_t coord_type; | ||
274 | uint64_t num_processors; | ||
275 | }; | ||
276 | |||
277 | struct xen_processor_performance { | ||
278 | uint32_t flags; /* flag for Px sub info type */ | ||
279 | uint32_t platform_limit; /* Platform limitation on freq usage */ | ||
280 | struct xen_pct_register control_register; | ||
281 | struct xen_pct_register status_register; | ||
282 | uint32_t state_count; /* total available performance states */ | ||
283 | GUEST_HANDLE(xen_processor_px) states; | ||
284 | struct xen_psd_package domain_info; | ||
285 | uint32_t shared_type; /* coordination type of this processor */ | ||
286 | }; | ||
287 | DEFINE_GUEST_HANDLE_STRUCT(xen_processor_performance); | ||
288 | |||
289 | struct xenpf_set_processor_pminfo { | ||
290 | /* IN variables */ | ||
291 | uint32_t id; /* ACPI CPU ID */ | ||
292 | uint32_t type; /* {XEN_PM_CX, XEN_PM_PX} */ | ||
293 | union { | ||
294 | struct xen_processor_power power;/* Cx: _CST/_CSD */ | ||
295 | struct xen_processor_performance perf; /* Px: _PPC/_PCT/_PSS/_PSD */ | ||
296 | }; | ||
297 | }; | ||
298 | DEFINE_GUEST_HANDLE_STRUCT(xenpf_set_processor_pminfo); | ||
299 | |||
300 | struct xen_platform_op { | ||
301 | uint32_t cmd; | ||
302 | uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ | ||
303 | union { | ||
304 | struct xenpf_settime settime; | ||
305 | struct xenpf_add_memtype add_memtype; | ||
306 | struct xenpf_del_memtype del_memtype; | ||
307 | struct xenpf_read_memtype read_memtype; | ||
308 | struct xenpf_microcode_update microcode; | ||
309 | struct xenpf_platform_quirk platform_quirk; | ||
310 | struct xenpf_firmware_info firmware_info; | ||
311 | struct xenpf_enter_acpi_sleep enter_acpi_sleep; | ||
312 | struct xenpf_change_freq change_freq; | ||
313 | struct xenpf_getidletime getidletime; | ||
314 | struct xenpf_set_processor_pminfo set_pminfo; | ||
315 | uint8_t pad[128]; | ||
316 | } u; | ||
317 | }; | ||
318 | DEFINE_GUEST_HANDLE_STRUCT(xen_platform_op_t); | ||
319 | |||
320 | #endif /* __XEN_PUBLIC_PLATFORM_H__ */ | ||
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h index 6acd9cefd517..6a6e91449347 100644 --- a/include/xen/interface/xen.h +++ b/include/xen/interface/xen.h | |||
@@ -492,6 +492,7 @@ struct dom0_vga_console_info { | |||
492 | /* These flags are passed in the 'flags' field of start_info_t. */ | 492 | /* These flags are passed in the 'flags' field of start_info_t. */ |
493 | #define SIF_PRIVILEGED (1<<0) /* Is the domain privileged? */ | 493 | #define SIF_PRIVILEGED (1<<0) /* Is the domain privileged? */ |
494 | #define SIF_INITDOMAIN (1<<1) /* Is this the initial control domain? */ | 494 | #define SIF_INITDOMAIN (1<<1) /* Is this the initial control domain? */ |
495 | #define SIF_PM_MASK (0xFF<<8) /* reserve 1 byte for xen-pm options */ | ||
495 | 496 | ||
496 | typedef uint64_t cpumap_t; | 497 | typedef uint64_t cpumap_t; |
497 | 498 | ||
diff --git a/include/xen/platform_pci.h b/include/xen/platform_pci.h index a785a3b0c8c7..438c256c274b 100644 --- a/include/xen/platform_pci.h +++ b/include/xen/platform_pci.h | |||
@@ -29,8 +29,7 @@ | |||
29 | static inline int xen_must_unplug_nics(void) { | 29 | static inline int xen_must_unplug_nics(void) { |
30 | #if (defined(CONFIG_XEN_NETDEV_FRONTEND) || \ | 30 | #if (defined(CONFIG_XEN_NETDEV_FRONTEND) || \ |
31 | defined(CONFIG_XEN_NETDEV_FRONTEND_MODULE)) && \ | 31 | defined(CONFIG_XEN_NETDEV_FRONTEND_MODULE)) && \ |
32 | (defined(CONFIG_XEN_PLATFORM_PCI) || \ | 32 | defined(CONFIG_XEN_PVHVM) |
33 | defined(CONFIG_XEN_PLATFORM_PCI_MODULE)) | ||
34 | return 1; | 33 | return 1; |
35 | #else | 34 | #else |
36 | return 0; | 35 | return 0; |
@@ -40,8 +39,7 @@ static inline int xen_must_unplug_nics(void) { | |||
40 | static inline int xen_must_unplug_disks(void) { | 39 | static inline int xen_must_unplug_disks(void) { |
41 | #if (defined(CONFIG_XEN_BLKDEV_FRONTEND) || \ | 40 | #if (defined(CONFIG_XEN_BLKDEV_FRONTEND) || \ |
42 | defined(CONFIG_XEN_BLKDEV_FRONTEND_MODULE)) && \ | 41 | defined(CONFIG_XEN_BLKDEV_FRONTEND_MODULE)) && \ |
43 | (defined(CONFIG_XEN_PLATFORM_PCI) || \ | 42 | defined(CONFIG_XEN_PVHVM) |
44 | defined(CONFIG_XEN_PLATFORM_PCI_MODULE)) | ||
45 | return 1; | 43 | return 1; |
46 | #else | 44 | #else |
47 | return 0; | 45 | return 0; |
diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h index aceeca799fd7..b1b6676c1c43 100644 --- a/include/xen/xenbus.h +++ b/include/xen/xenbus.h | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/device.h> | 37 | #include <linux/device.h> |
38 | #include <linux/notifier.h> | 38 | #include <linux/notifier.h> |
39 | #include <linux/mutex.h> | 39 | #include <linux/mutex.h> |
40 | #include <linux/export.h> | ||
40 | #include <linux/completion.h> | 41 | #include <linux/completion.h> |
41 | #include <linux/init.h> | 42 | #include <linux/init.h> |
42 | #include <linux/slab.h> | 43 | #include <linux/slab.h> |
@@ -156,9 +157,9 @@ int xenbus_scanf(struct xenbus_transaction t, | |||
156 | __attribute__((format(scanf, 4, 5))); | 157 | __attribute__((format(scanf, 4, 5))); |
157 | 158 | ||
158 | /* Single printf and write: returns -errno or 0. */ | 159 | /* Single printf and write: returns -errno or 0. */ |
160 | __printf(4, 5) | ||
159 | int xenbus_printf(struct xenbus_transaction t, | 161 | int xenbus_printf(struct xenbus_transaction t, |
160 | const char *dir, const char *node, const char *fmt, ...) | 162 | const char *dir, const char *node, const char *fmt, ...); |
161 | __attribute__((format(printf, 4, 5))); | ||
162 | 163 | ||
163 | /* Generic read function: NULL-terminated triples of name, | 164 | /* Generic read function: NULL-terminated triples of name, |
164 | * sprintf-style type string, and pointer. Returns 0 or errno.*/ | 165 | * sprintf-style type string, and pointer. Returns 0 or errno.*/ |
@@ -200,11 +201,11 @@ int xenbus_watch_path(struct xenbus_device *dev, const char *path, | |||
200 | struct xenbus_watch *watch, | 201 | struct xenbus_watch *watch, |
201 | void (*callback)(struct xenbus_watch *, | 202 | void (*callback)(struct xenbus_watch *, |
202 | const char **, unsigned int)); | 203 | const char **, unsigned int)); |
204 | __printf(4, 5) | ||
203 | int xenbus_watch_pathfmt(struct xenbus_device *dev, struct xenbus_watch *watch, | 205 | int xenbus_watch_pathfmt(struct xenbus_device *dev, struct xenbus_watch *watch, |
204 | void (*callback)(struct xenbus_watch *, | 206 | void (*callback)(struct xenbus_watch *, |
205 | const char **, unsigned int), | 207 | const char **, unsigned int), |
206 | const char *pathfmt, ...) | 208 | const char *pathfmt, ...); |
207 | __attribute__ ((format (printf, 4, 5))); | ||
208 | 209 | ||
209 | int xenbus_switch_state(struct xenbus_device *dev, enum xenbus_state new_state); | 210 | int xenbus_switch_state(struct xenbus_device *dev, enum xenbus_state new_state); |
210 | int xenbus_grant_ring(struct xenbus_device *dev, unsigned long ring_mfn); | 211 | int xenbus_grant_ring(struct xenbus_device *dev, unsigned long ring_mfn); |
@@ -223,9 +224,9 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int port); | |||
223 | 224 | ||
224 | enum xenbus_state xenbus_read_driver_state(const char *path); | 225 | enum xenbus_state xenbus_read_driver_state(const char *path); |
225 | 226 | ||
226 | __attribute__((format(printf, 3, 4))) | 227 | __printf(3, 4) |
227 | void xenbus_dev_error(struct xenbus_device *dev, int err, const char *fmt, ...); | 228 | void xenbus_dev_error(struct xenbus_device *dev, int err, const char *fmt, ...); |
228 | __attribute__((format(printf, 3, 4))) | 229 | __printf(3, 4) |
229 | void xenbus_dev_fatal(struct xenbus_device *dev, int err, const char *fmt, ...); | 230 | void xenbus_dev_fatal(struct xenbus_device *dev, int err, const char *fmt, ...); |
230 | 231 | ||
231 | const char *xenbus_strstate(enum xenbus_state state); | 232 | const char *xenbus_strstate(enum xenbus_state state); |