diff options
-rw-r--r-- | arch/parisc/lib/iomap.c | 4 | ||||
-rw-r--r-- | arch/parisc/mm/ioremap.c | 24 | ||||
-rw-r--r-- | include/asm-parisc/io.h | 33 | ||||
-rw-r--r-- | lib/Kconfig.debug | 13 |
4 files changed, 0 insertions, 74 deletions
diff --git a/arch/parisc/lib/iomap.c b/arch/parisc/lib/iomap.c index 01bec8fcbd0d..f4a811690ab3 100644 --- a/arch/parisc/lib/iomap.c +++ b/arch/parisc/lib/iomap.c | |||
@@ -263,11 +263,7 @@ static const struct iomap_ops iomem_ops = { | |||
263 | 263 | ||
264 | const struct iomap_ops *iomap_ops[8] = { | 264 | const struct iomap_ops *iomap_ops[8] = { |
265 | [0] = &ioport_ops, | 265 | [0] = &ioport_ops, |
266 | #ifdef CONFIG_DEBUG_IOREMAP | ||
267 | [6] = &iomem_ops, | ||
268 | #else | ||
269 | [7] = &iomem_ops | 266 | [7] = &iomem_ops |
270 | #endif | ||
271 | }; | 267 | }; |
272 | 268 | ||
273 | 269 | ||
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c index 21a16747e56e..a5967b7d3726 100644 --- a/arch/parisc/mm/ioremap.c +++ b/arch/parisc/mm/ioremap.c | |||
@@ -114,30 +114,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr, | |||
114 | return error; | 114 | return error; |
115 | } | 115 | } |
116 | 116 | ||
117 | #ifdef CONFIG_DEBUG_IOREMAP | ||
118 | static unsigned long last = 0; | ||
119 | |||
120 | void gsc_bad_addr(unsigned long addr) | ||
121 | { | ||
122 | if (time_after(jiffies, last + HZ*10)) { | ||
123 | printk("gsc_foo() called with bad address 0x%lx\n", addr); | ||
124 | dump_stack(); | ||
125 | last = jiffies; | ||
126 | } | ||
127 | } | ||
128 | EXPORT_SYMBOL(gsc_bad_addr); | ||
129 | |||
130 | void __raw_bad_addr(const volatile void __iomem *addr) | ||
131 | { | ||
132 | if (time_after(jiffies, last + HZ*10)) { | ||
133 | printk("__raw_foo() called with bad address 0x%p\n", addr); | ||
134 | dump_stack(); | ||
135 | last = jiffies; | ||
136 | } | ||
137 | } | ||
138 | EXPORT_SYMBOL(__raw_bad_addr); | ||
139 | #endif | ||
140 | |||
141 | /* | 117 | /* |
142 | * Generic mapping function (not visible outside): | 118 | * Generic mapping function (not visible outside): |
143 | */ | 119 | */ |
diff --git a/include/asm-parisc/io.h b/include/asm-parisc/io.h index bcfe0b09c93f..29da31194b91 100644 --- a/include/asm-parisc/io.h +++ b/include/asm-parisc/io.h | |||
@@ -25,31 +25,11 @@ extern unsigned long parisc_vmerge_max_size; | |||
25 | * eg dev->hpa or 0xfee00000. | 25 | * eg dev->hpa or 0xfee00000. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #ifdef CONFIG_DEBUG_IOREMAP | ||
29 | #define NYBBLE_SHIFT (BITS_PER_LONG - 4) | ||
30 | extern void gsc_bad_addr(unsigned long addr); | ||
31 | extern void __raw_bad_addr(const volatile void __iomem *addr); | ||
32 | #define gsc_check_addr(addr) \ | ||
33 | if ((addr >> NYBBLE_SHIFT) != 0xf) { \ | ||
34 | gsc_bad_addr(addr); \ | ||
35 | addr |= 0xfUL << NYBBLE_SHIFT; \ | ||
36 | } | ||
37 | #define __raw_check_addr(addr) \ | ||
38 | if (((unsigned long)addr >> NYBBLE_SHIFT) != 0xe) \ | ||
39 | __raw_bad_addr(addr); \ | ||
40 | addr = (void __iomem *)((unsigned long)addr | (0xfUL << NYBBLE_SHIFT)); | ||
41 | #else | ||
42 | #define gsc_check_addr(addr) | ||
43 | #define __raw_check_addr(addr) | ||
44 | #endif | ||
45 | |||
46 | static inline unsigned char gsc_readb(unsigned long addr) | 28 | static inline unsigned char gsc_readb(unsigned long addr) |
47 | { | 29 | { |
48 | long flags; | 30 | long flags; |
49 | unsigned char ret; | 31 | unsigned char ret; |
50 | 32 | ||
51 | gsc_check_addr(addr); | ||
52 | |||
53 | __asm__ __volatile__( | 33 | __asm__ __volatile__( |
54 | " rsm 2,%0\n" | 34 | " rsm 2,%0\n" |
55 | " ldbx 0(%2),%1\n" | 35 | " ldbx 0(%2),%1\n" |
@@ -64,8 +44,6 @@ static inline unsigned short gsc_readw(unsigned long addr) | |||
64 | long flags; | 44 | long flags; |
65 | unsigned short ret; | 45 | unsigned short ret; |
66 | 46 | ||
67 | gsc_check_addr(addr); | ||
68 | |||
69 | __asm__ __volatile__( | 47 | __asm__ __volatile__( |
70 | " rsm 2,%0\n" | 48 | " rsm 2,%0\n" |
71 | " ldhx 0(%2),%1\n" | 49 | " ldhx 0(%2),%1\n" |
@@ -79,8 +57,6 @@ static inline unsigned int gsc_readl(unsigned long addr) | |||
79 | { | 57 | { |
80 | u32 ret; | 58 | u32 ret; |
81 | 59 | ||
82 | gsc_check_addr(addr); | ||
83 | |||
84 | __asm__ __volatile__( | 60 | __asm__ __volatile__( |
85 | " ldwax 0(%1),%0\n" | 61 | " ldwax 0(%1),%0\n" |
86 | : "=r" (ret) : "r" (addr) ); | 62 | : "=r" (ret) : "r" (addr) ); |
@@ -91,7 +67,6 @@ static inline unsigned int gsc_readl(unsigned long addr) | |||
91 | static inline unsigned long long gsc_readq(unsigned long addr) | 67 | static inline unsigned long long gsc_readq(unsigned long addr) |
92 | { | 68 | { |
93 | unsigned long long ret; | 69 | unsigned long long ret; |
94 | gsc_check_addr(addr); | ||
95 | 70 | ||
96 | #ifdef __LP64__ | 71 | #ifdef __LP64__ |
97 | __asm__ __volatile__( | 72 | __asm__ __volatile__( |
@@ -108,8 +83,6 @@ static inline unsigned long long gsc_readq(unsigned long addr) | |||
108 | static inline void gsc_writeb(unsigned char val, unsigned long addr) | 83 | static inline void gsc_writeb(unsigned char val, unsigned long addr) |
109 | { | 84 | { |
110 | long flags; | 85 | long flags; |
111 | gsc_check_addr(addr); | ||
112 | |||
113 | __asm__ __volatile__( | 86 | __asm__ __volatile__( |
114 | " rsm 2,%0\n" | 87 | " rsm 2,%0\n" |
115 | " stbs %1,0(%2)\n" | 88 | " stbs %1,0(%2)\n" |
@@ -120,8 +93,6 @@ static inline void gsc_writeb(unsigned char val, unsigned long addr) | |||
120 | static inline void gsc_writew(unsigned short val, unsigned long addr) | 93 | static inline void gsc_writew(unsigned short val, unsigned long addr) |
121 | { | 94 | { |
122 | long flags; | 95 | long flags; |
123 | gsc_check_addr(addr); | ||
124 | |||
125 | __asm__ __volatile__( | 96 | __asm__ __volatile__( |
126 | " rsm 2,%0\n" | 97 | " rsm 2,%0\n" |
127 | " sths %1,0(%2)\n" | 98 | " sths %1,0(%2)\n" |
@@ -131,8 +102,6 @@ static inline void gsc_writew(unsigned short val, unsigned long addr) | |||
131 | 102 | ||
132 | static inline void gsc_writel(unsigned int val, unsigned long addr) | 103 | static inline void gsc_writel(unsigned int val, unsigned long addr) |
133 | { | 104 | { |
134 | gsc_check_addr(addr); | ||
135 | |||
136 | __asm__ __volatile__( | 105 | __asm__ __volatile__( |
137 | " stwas %0,0(%1)\n" | 106 | " stwas %0,0(%1)\n" |
138 | : : "r" (val), "r" (addr) ); | 107 | : : "r" (val), "r" (addr) ); |
@@ -140,8 +109,6 @@ static inline void gsc_writel(unsigned int val, unsigned long addr) | |||
140 | 109 | ||
141 | static inline void gsc_writeq(unsigned long long val, unsigned long addr) | 110 | static inline void gsc_writeq(unsigned long long val, unsigned long addr) |
142 | { | 111 | { |
143 | gsc_check_addr(addr); | ||
144 | |||
145 | #ifdef __LP64__ | 112 | #ifdef __LP64__ |
146 | __asm__ __volatile__( | 113 | __asm__ __volatile__( |
147 | " stda %0,0(%1)\n" | 114 | " stda %0,0(%1)\n" |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 6e8a60f67c7a..d57fd9181b18 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -157,19 +157,6 @@ config DEBUG_INFO | |||
157 | 157 | ||
158 | If unsure, say N. | 158 | If unsure, say N. |
159 | 159 | ||
160 | config DEBUG_IOREMAP | ||
161 | bool "Enable ioremap() debugging" | ||
162 | depends on DEBUG_KERNEL && PARISC | ||
163 | help | ||
164 | Enabling this option will cause the kernel to distinguish between | ||
165 | ioremapped and physical addresses. It will print a backtrace (at | ||
166 | most one every 10 seconds), hopefully allowing you to see which | ||
167 | drivers need work. Fixing all these problems is a prerequisite | ||
168 | for turning on USE_HPPA_IOREMAP. The warnings are harmless; | ||
169 | the kernel has enough information to fix the broken drivers | ||
170 | automatically, but we'd like to make it more efficient by not | ||
171 | having to do that. | ||
172 | |||
173 | config DEBUG_FS | 160 | config DEBUG_FS |
174 | bool "Debug Filesystem" | 161 | bool "Debug Filesystem" |
175 | depends on SYSFS | 162 | depends on SYSFS |