diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-29 03:45:15 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-29 03:45:15 -0500 |
commit | e1df957670aef74ffd9a4ad93e6d2c90bf6b4845 (patch) | |
tree | bca1fcfef55b3e3e82c9a822b4ac6428fce2b419 /arch/arm | |
parent | 2b583d8bc8d7105b58d7481a4a0ceb718dac49c6 (diff) | |
parent | 3c92ec8ae91ecf59d88c798301833d7cf83f2179 (diff) |
Merge branch 'linus' into perfcounters/core
Conflicts:
fs/exec.c
include/linux/init_task.h
Simple context conflicts.
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/common/sa1111.c | 2 | ||||
-rw-r--r-- | arch/arm/kernel/armksyms.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/traps.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/fsg-setup.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/include/mach/qmgr.h | 35 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | 44 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/nas100d-setup.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/nslu2-setup.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/palmasoc.h | 13 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/reset.h | 5 | ||||
-rw-r--r-- | arch/arm/mm/fault.c | 1 |
11 files changed, 94 insertions, 30 deletions
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index 47ccec95f3e8..ef12794c3c68 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
@@ -630,7 +630,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) | |||
630 | return -ENOMEM; | 630 | return -ENOMEM; |
631 | 631 | ||
632 | sachip->clk = clk_get(me, "SA1111_CLK"); | 632 | sachip->clk = clk_get(me, "SA1111_CLK"); |
633 | if (!sachip->clk) { | 633 | if (IS_ERR(sachip->clk)) { |
634 | ret = PTR_ERR(sachip->clk); | 634 | ret = PTR_ERR(sachip->clk); |
635 | goto err_free; | 635 | goto err_free; |
636 | } | 636 | } |
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index c74f766ffc12..23af3c972c9a 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
@@ -115,6 +115,8 @@ EXPORT_SYMBOL(__strnlen_user); | |||
115 | EXPORT_SYMBOL(__strncpy_from_user); | 115 | EXPORT_SYMBOL(__strncpy_from_user); |
116 | 116 | ||
117 | #ifdef CONFIG_MMU | 117 | #ifdef CONFIG_MMU |
118 | EXPORT_SYMBOL(copy_page); | ||
119 | |||
118 | EXPORT_SYMBOL(__copy_from_user); | 120 | EXPORT_SYMBOL(__copy_from_user); |
119 | EXPORT_SYMBOL(__copy_to_user); | 121 | EXPORT_SYMBOL(__copy_to_user); |
120 | EXPORT_SYMBOL(__clear_user); | 122 | EXPORT_SYMBOL(__clear_user); |
@@ -181,8 +183,6 @@ EXPORT_SYMBOL(_find_first_bit_be); | |||
181 | EXPORT_SYMBOL(_find_next_bit_be); | 183 | EXPORT_SYMBOL(_find_next_bit_be); |
182 | #endif | 184 | #endif |
183 | 185 | ||
184 | EXPORT_SYMBOL(copy_page); | ||
185 | |||
186 | #ifdef CONFIG_FUNCTION_TRACER | 186 | #ifdef CONFIG_FUNCTION_TRACER |
187 | EXPORT_SYMBOL(mcount); | 187 | EXPORT_SYMBOL(mcount); |
188 | #endif | 188 | #endif |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 57e6874d0b80..79abc4ddc0cf 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/personality.h> | 18 | #include <linux/personality.h> |
19 | #include <linux/kallsyms.h> | 19 | #include <linux/kallsyms.h> |
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <linux/hardirq.h> | ||
21 | #include <linux/init.h> | 22 | #include <linux/init.h> |
22 | #include <linux/uaccess.h> | 23 | #include <linux/uaccess.h> |
23 | 24 | ||
diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c index e7c6386782ed..5add22fc9899 100644 --- a/arch/arm/mach-ixp4xx/fsg-setup.c +++ b/arch/arm/mach-ixp4xx/fsg-setup.c | |||
@@ -177,7 +177,6 @@ static irqreturn_t fsg_reset_handler(int irq, void *dev_id) | |||
177 | 177 | ||
178 | static void __init fsg_init(void) | 178 | static void __init fsg_init(void) |
179 | { | 179 | { |
180 | DECLARE_MAC_BUF(mac_buf); | ||
181 | uint8_t __iomem *f; | 180 | uint8_t __iomem *f; |
182 | 181 | ||
183 | ixp4xx_sys_init(); | 182 | ixp4xx_sys_init(); |
@@ -256,10 +255,10 @@ static void __init fsg_init(void) | |||
256 | #endif | 255 | #endif |
257 | iounmap(f); | 256 | iounmap(f); |
258 | } | 257 | } |
259 | printk(KERN_INFO "FSG: Using MAC address %s for port 0\n", | 258 | printk(KERN_INFO "FSG: Using MAC address %pM for port 0\n", |
260 | print_mac(mac_buf, fsg_plat_eth[0].hwaddr)); | 259 | fsg_plat_eth[0].hwaddr); |
261 | printk(KERN_INFO "FSG: Using MAC address %s for port 1\n", | 260 | printk(KERN_INFO "FSG: Using MAC address %pM for port 1\n", |
262 | print_mac(mac_buf, fsg_plat_eth[1].hwaddr)); | 261 | fsg_plat_eth[1].hwaddr); |
263 | 262 | ||
264 | } | 263 | } |
265 | 264 | ||
diff --git a/arch/arm/mach-ixp4xx/include/mach/qmgr.h b/arch/arm/mach-ixp4xx/include/mach/qmgr.h index 1e52b95cede5..0cbe6ceb67c5 100644 --- a/arch/arm/mach-ixp4xx/include/mach/qmgr.h +++ b/arch/arm/mach-ixp4xx/include/mach/qmgr.h | |||
@@ -12,6 +12,8 @@ | |||
12 | #include <linux/io.h> | 12 | #include <linux/io.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | 14 | ||
15 | #define DEBUG_QMGR 0 | ||
16 | |||
15 | #define HALF_QUEUES 32 | 17 | #define HALF_QUEUES 32 |
16 | #define QUEUES 64 /* only 32 lower queues currently supported */ | 18 | #define QUEUES 64 /* only 32 lower queues currently supported */ |
17 | #define MAX_QUEUE_LENGTH 4 /* in dwords */ | 19 | #define MAX_QUEUE_LENGTH 4 /* in dwords */ |
@@ -61,22 +63,51 @@ void qmgr_enable_irq(unsigned int queue); | |||
61 | void qmgr_disable_irq(unsigned int queue); | 63 | void qmgr_disable_irq(unsigned int queue); |
62 | 64 | ||
63 | /* request_ and release_queue() must be called from non-IRQ context */ | 65 | /* request_ and release_queue() must be called from non-IRQ context */ |
66 | |||
67 | #if DEBUG_QMGR | ||
68 | extern char qmgr_queue_descs[QUEUES][32]; | ||
69 | |||
64 | int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | 70 | int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, |
65 | unsigned int nearly_empty_watermark, | 71 | unsigned int nearly_empty_watermark, |
66 | unsigned int nearly_full_watermark); | 72 | unsigned int nearly_full_watermark, |
73 | const char *desc_format, const char* name); | ||
74 | #else | ||
75 | int __qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | ||
76 | unsigned int nearly_empty_watermark, | ||
77 | unsigned int nearly_full_watermark); | ||
78 | #define qmgr_request_queue(queue, len, nearly_empty_watermark, \ | ||
79 | nearly_full_watermark, desc_format, name) \ | ||
80 | __qmgr_request_queue(queue, len, nearly_empty_watermark, \ | ||
81 | nearly_full_watermark) | ||
82 | #endif | ||
83 | |||
67 | void qmgr_release_queue(unsigned int queue); | 84 | void qmgr_release_queue(unsigned int queue); |
68 | 85 | ||
69 | 86 | ||
70 | static inline void qmgr_put_entry(unsigned int queue, u32 val) | 87 | static inline void qmgr_put_entry(unsigned int queue, u32 val) |
71 | { | 88 | { |
72 | extern struct qmgr_regs __iomem *qmgr_regs; | 89 | extern struct qmgr_regs __iomem *qmgr_regs; |
90 | #if DEBUG_QMGR | ||
91 | BUG_ON(!qmgr_queue_descs[queue]); /* not yet requested */ | ||
92 | |||
93 | printk(KERN_DEBUG "Queue %s(%i) put %X\n", | ||
94 | qmgr_queue_descs[queue], queue, val); | ||
95 | #endif | ||
73 | __raw_writel(val, &qmgr_regs->acc[queue][0]); | 96 | __raw_writel(val, &qmgr_regs->acc[queue][0]); |
74 | } | 97 | } |
75 | 98 | ||
76 | static inline u32 qmgr_get_entry(unsigned int queue) | 99 | static inline u32 qmgr_get_entry(unsigned int queue) |
77 | { | 100 | { |
101 | u32 val; | ||
78 | extern struct qmgr_regs __iomem *qmgr_regs; | 102 | extern struct qmgr_regs __iomem *qmgr_regs; |
79 | return __raw_readl(&qmgr_regs->acc[queue][0]); | 103 | val = __raw_readl(&qmgr_regs->acc[queue][0]); |
104 | #if DEBUG_QMGR | ||
105 | BUG_ON(!qmgr_queue_descs[queue]); /* not yet requested */ | ||
106 | |||
107 | printk(KERN_DEBUG "Queue %s(%i) get %X\n", | ||
108 | qmgr_queue_descs[queue], queue, val); | ||
109 | #endif | ||
110 | return val; | ||
80 | } | 111 | } |
81 | 112 | ||
82 | static inline int qmgr_get_stat1(unsigned int queue) | 113 | static inline int qmgr_get_stat1(unsigned int queue) |
diff --git a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c index c6cb069a5a83..bfddc73d0a20 100644 --- a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c +++ b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | |||
@@ -14,8 +14,6 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <mach/qmgr.h> | 15 | #include <mach/qmgr.h> |
16 | 16 | ||
17 | #define DEBUG 0 | ||
18 | |||
19 | struct qmgr_regs __iomem *qmgr_regs; | 17 | struct qmgr_regs __iomem *qmgr_regs; |
20 | static struct resource *mem_res; | 18 | static struct resource *mem_res; |
21 | static spinlock_t qmgr_lock; | 19 | static spinlock_t qmgr_lock; |
@@ -23,6 +21,10 @@ static u32 used_sram_bitmap[4]; /* 128 16-dword pages */ | |||
23 | static void (*irq_handlers[HALF_QUEUES])(void *pdev); | 21 | static void (*irq_handlers[HALF_QUEUES])(void *pdev); |
24 | static void *irq_pdevs[HALF_QUEUES]; | 22 | static void *irq_pdevs[HALF_QUEUES]; |
25 | 23 | ||
24 | #if DEBUG_QMGR | ||
25 | char qmgr_queue_descs[QUEUES][32]; | ||
26 | #endif | ||
27 | |||
26 | void qmgr_set_irq(unsigned int queue, int src, | 28 | void qmgr_set_irq(unsigned int queue, int src, |
27 | void (*handler)(void *pdev), void *pdev) | 29 | void (*handler)(void *pdev), void *pdev) |
28 | { | 30 | { |
@@ -70,6 +72,7 @@ void qmgr_disable_irq(unsigned int queue) | |||
70 | spin_lock_irqsave(&qmgr_lock, flags); | 72 | spin_lock_irqsave(&qmgr_lock, flags); |
71 | __raw_writel(__raw_readl(&qmgr_regs->irqen[0]) & ~(1 << queue), | 73 | __raw_writel(__raw_readl(&qmgr_regs->irqen[0]) & ~(1 << queue), |
72 | &qmgr_regs->irqen[0]); | 74 | &qmgr_regs->irqen[0]); |
75 | __raw_writel(1 << queue, &qmgr_regs->irqstat[0]); /* clear */ | ||
73 | spin_unlock_irqrestore(&qmgr_lock, flags); | 76 | spin_unlock_irqrestore(&qmgr_lock, flags); |
74 | } | 77 | } |
75 | 78 | ||
@@ -81,9 +84,16 @@ static inline void shift_mask(u32 *mask) | |||
81 | mask[0] <<= 1; | 84 | mask[0] <<= 1; |
82 | } | 85 | } |
83 | 86 | ||
87 | #if DEBUG_QMGR | ||
84 | int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | 88 | int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, |
85 | unsigned int nearly_empty_watermark, | 89 | unsigned int nearly_empty_watermark, |
86 | unsigned int nearly_full_watermark) | 90 | unsigned int nearly_full_watermark, |
91 | const char *desc_format, const char* name) | ||
92 | #else | ||
93 | int __qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | ||
94 | unsigned int nearly_empty_watermark, | ||
95 | unsigned int nearly_full_watermark) | ||
96 | #endif | ||
87 | { | 97 | { |
88 | u32 cfg, addr = 0, mask[4]; /* in 16-dwords */ | 98 | u32 cfg, addr = 0, mask[4]; /* in 16-dwords */ |
89 | int err; | 99 | int err; |
@@ -151,12 +161,13 @@ int qmgr_request_queue(unsigned int queue, unsigned int len /* dwords */, | |||
151 | used_sram_bitmap[2] |= mask[2]; | 161 | used_sram_bitmap[2] |= mask[2]; |
152 | used_sram_bitmap[3] |= mask[3]; | 162 | used_sram_bitmap[3] |= mask[3]; |
153 | __raw_writel(cfg | (addr << 14), &qmgr_regs->sram[queue]); | 163 | __raw_writel(cfg | (addr << 14), &qmgr_regs->sram[queue]); |
154 | spin_unlock_irq(&qmgr_lock); | 164 | #if DEBUG_QMGR |
155 | 165 | snprintf(qmgr_queue_descs[queue], sizeof(qmgr_queue_descs[0]), | |
156 | #if DEBUG | 166 | desc_format, name); |
157 | printk(KERN_DEBUG "qmgr: requested queue %i, addr = 0x%02X\n", | 167 | printk(KERN_DEBUG "qmgr: requested queue %s(%i) addr = 0x%02X\n", |
158 | queue, addr); | 168 | qmgr_queue_descs[queue], queue, addr); |
159 | #endif | 169 | #endif |
170 | spin_unlock_irq(&qmgr_lock); | ||
160 | return 0; | 171 | return 0; |
161 | 172 | ||
162 | err: | 173 | err: |
@@ -189,6 +200,11 @@ void qmgr_release_queue(unsigned int queue) | |||
189 | while (addr--) | 200 | while (addr--) |
190 | shift_mask(mask); | 201 | shift_mask(mask); |
191 | 202 | ||
203 | #if DEBUG_QMGR | ||
204 | printk(KERN_DEBUG "qmgr: releasing queue %s(%i)\n", | ||
205 | qmgr_queue_descs[queue], queue); | ||
206 | qmgr_queue_descs[queue][0] = '\x0'; | ||
207 | #endif | ||
192 | __raw_writel(0, &qmgr_regs->sram[queue]); | 208 | __raw_writel(0, &qmgr_regs->sram[queue]); |
193 | 209 | ||
194 | used_sram_bitmap[0] &= ~mask[0]; | 210 | used_sram_bitmap[0] &= ~mask[0]; |
@@ -199,9 +215,10 @@ void qmgr_release_queue(unsigned int queue) | |||
199 | spin_unlock_irq(&qmgr_lock); | 215 | spin_unlock_irq(&qmgr_lock); |
200 | 216 | ||
201 | module_put(THIS_MODULE); | 217 | module_put(THIS_MODULE); |
202 | #if DEBUG | 218 | |
203 | printk(KERN_DEBUG "qmgr: released queue %i\n", queue); | 219 | while ((addr = qmgr_get_entry(queue))) |
204 | #endif | 220 | printk(KERN_ERR "qmgr: released queue %i not empty: 0x%08X\n", |
221 | queue, addr); | ||
205 | } | 222 | } |
206 | 223 | ||
207 | static int qmgr_init(void) | 224 | static int qmgr_init(void) |
@@ -272,5 +289,10 @@ EXPORT_SYMBOL(qmgr_regs); | |||
272 | EXPORT_SYMBOL(qmgr_set_irq); | 289 | EXPORT_SYMBOL(qmgr_set_irq); |
273 | EXPORT_SYMBOL(qmgr_enable_irq); | 290 | EXPORT_SYMBOL(qmgr_enable_irq); |
274 | EXPORT_SYMBOL(qmgr_disable_irq); | 291 | EXPORT_SYMBOL(qmgr_disable_irq); |
292 | #if DEBUG_QMGR | ||
293 | EXPORT_SYMBOL(qmgr_queue_descs); | ||
275 | EXPORT_SYMBOL(qmgr_request_queue); | 294 | EXPORT_SYMBOL(qmgr_request_queue); |
295 | #else | ||
296 | EXPORT_SYMBOL(__qmgr_request_queue); | ||
297 | #endif | ||
276 | EXPORT_SYMBOL(qmgr_release_queue); | 298 | EXPORT_SYMBOL(qmgr_release_queue); |
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index 0acd95ecf27e..921c947b5b6b 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -231,7 +231,6 @@ static irqreturn_t nas100d_reset_handler(int irq, void *dev_id) | |||
231 | 231 | ||
232 | static void __init nas100d_init(void) | 232 | static void __init nas100d_init(void) |
233 | { | 233 | { |
234 | DECLARE_MAC_BUF(mac_buf); | ||
235 | uint8_t __iomem *f; | 234 | uint8_t __iomem *f; |
236 | int i; | 235 | int i; |
237 | 236 | ||
@@ -294,8 +293,8 @@ static void __init nas100d_init(void) | |||
294 | #endif | 293 | #endif |
295 | iounmap(f); | 294 | iounmap(f); |
296 | } | 295 | } |
297 | printk(KERN_INFO "NAS100D: Using MAC address %s for port 0\n", | 296 | printk(KERN_INFO "NAS100D: Using MAC address %pM for port 0\n", |
298 | print_mac(mac_buf, nas100d_plat_eth[0].hwaddr)); | 297 | nas100d_plat_eth[0].hwaddr); |
299 | 298 | ||
300 | } | 299 | } |
301 | 300 | ||
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index bc9d920ae54f..ff6a08d02cc4 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -220,7 +220,6 @@ static struct sys_timer nslu2_timer = { | |||
220 | 220 | ||
221 | static void __init nslu2_init(void) | 221 | static void __init nslu2_init(void) |
222 | { | 222 | { |
223 | DECLARE_MAC_BUF(mac_buf); | ||
224 | uint8_t __iomem *f; | 223 | uint8_t __iomem *f; |
225 | int i; | 224 | int i; |
226 | 225 | ||
@@ -275,8 +274,8 @@ static void __init nslu2_init(void) | |||
275 | #endif | 274 | #endif |
276 | iounmap(f); | 275 | iounmap(f); |
277 | } | 276 | } |
278 | printk(KERN_INFO "NSLU2: Using MAC address %s for port 0\n", | 277 | printk(KERN_INFO "NSLU2: Using MAC address %pM for port 0\n", |
279 | print_mac(mac_buf, nslu2_plat_eth[0].hwaddr)); | 278 | nslu2_plat_eth[0].hwaddr); |
280 | 279 | ||
281 | } | 280 | } |
282 | 281 | ||
diff --git a/arch/arm/mach-pxa/include/mach/palmasoc.h b/arch/arm/mach-pxa/include/mach/palmasoc.h new file mode 100644 index 000000000000..6c4b1f7de20a --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/palmasoc.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #ifndef _INCLUDE_PALMASOC_H_ | ||
2 | #define _INCLUDE_PALMASOC_H_ | ||
3 | struct palm27x_asoc_info { | ||
4 | int jack_gpio; | ||
5 | }; | ||
6 | |||
7 | #ifdef CONFIG_SND_PXA2XX_SOC_PALM27X | ||
8 | void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data); | ||
9 | #else | ||
10 | static inline void palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) {} | ||
11 | #endif | ||
12 | |||
13 | #endif | ||
diff --git a/arch/arm/mach-pxa/include/mach/reset.h b/arch/arm/mach-pxa/include/mach/reset.h index 7b8842cfa5fc..31e6a7b6ad80 100644 --- a/arch/arm/mach-pxa/include/mach/reset.h +++ b/arch/arm/mach-pxa/include/mach/reset.h | |||
@@ -12,9 +12,8 @@ extern void clear_reset_status(unsigned int mask); | |||
12 | 12 | ||
13 | /** | 13 | /** |
14 | * init_gpio_reset() - register GPIO as reset generator | 14 | * init_gpio_reset() - register GPIO as reset generator |
15 | * | 15 | * @gpio: gpio nr |
16 | * @gpio - gpio nr | 16 | * @output: set gpio as out/low instead of input during normal work |
17 | * @output - set gpio as out/low instead of input during normal work | ||
18 | */ | 17 | */ |
19 | extern int init_gpio_reset(int gpio, int output); | 18 | extern int init_gpio_reset(int gpio, int output); |
20 | 19 | ||
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 2df8d9facf57..22c9530e91e2 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/signal.h> | 12 | #include <linux/signal.h> |
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/hardirq.h> | ||
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/kprobes.h> | 16 | #include <linux/kprobes.h> |
16 | #include <linux/uaccess.h> | 17 | #include <linux/uaccess.h> |