diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-02-10 16:01:25 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-02-19 06:58:22 -0500 |
commit | a6967caf00ebbb2d4acdebcb72a25f2e9ba43fd2 (patch) | |
tree | fbc957bb2e34d644164d3b0df874da88fa01ec3e | |
parent | e1ef824146131709d7466e37f889f2dab24ca98e (diff) |
genirq: Remove desc->status when GENERIC_HARDIRQS_NO_COMPAT=y
If everything uses the right accessors, then enabling
GENERIC_HARDIRQS_NO_COMPAT should just work. If not it will tell you.
Don't be lazy and use the trick which I use in the core code!
git grep status_use_accessors
will unearth it in a split second. Offenders are tracked down and not
slapped with stinking trouts. This time we use frozen shark for a
better educational value.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | include/linux/irqdesc.h | 6 | ||||
-rw-r--r-- | kernel/irq/internals.h | 4 | ||||
-rw-r--r-- | kernel/irq/settings.h | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index 581d9665fd38..36c95f08023d 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
@@ -64,7 +64,11 @@ struct irq_desc { | |||
64 | unsigned int __percpu *kstat_irqs; | 64 | unsigned int __percpu *kstat_irqs; |
65 | irq_flow_handler_t handle_irq; | 65 | irq_flow_handler_t handle_irq; |
66 | struct irqaction *action; /* IRQ action list */ | 66 | struct irqaction *action; /* IRQ action list */ |
67 | #ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT | ||
68 | unsigned int status_use_accessors; | ||
69 | #else | ||
67 | unsigned int status; /* IRQ status */ | 70 | unsigned int status; /* IRQ status */ |
71 | #endif | ||
68 | unsigned int core_internal_state__do_not_mess_with_it; | 72 | unsigned int core_internal_state__do_not_mess_with_it; |
69 | unsigned int depth; /* nested irq disables */ | 73 | unsigned int depth; /* nested irq disables */ |
70 | unsigned int wake_depth; /* nested wake enables */ | 74 | unsigned int wake_depth; /* nested wake enables */ |
@@ -164,6 +168,7 @@ static inline int irq_has_action(unsigned int irq) | |||
164 | return desc->action != NULL; | 168 | return desc->action != NULL; |
165 | } | 169 | } |
166 | 170 | ||
171 | #ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT | ||
167 | static inline int irq_balancing_disabled(unsigned int irq) | 172 | static inline int irq_balancing_disabled(unsigned int irq) |
168 | { | 173 | { |
169 | struct irq_desc *desc; | 174 | struct irq_desc *desc; |
@@ -171,6 +176,7 @@ static inline int irq_balancing_disabled(unsigned int irq) | |||
171 | desc = irq_to_desc(irq); | 176 | desc = irq_to_desc(irq); |
172 | return desc->status & IRQ_NO_BALANCING_MASK; | 177 | return desc->status & IRQ_NO_BALANCING_MASK; |
173 | } | 178 | } |
179 | #endif | ||
174 | 180 | ||
175 | /* caller has locked the irq_desc and both params are valid */ | 181 | /* caller has locked the irq_desc and both params are valid */ |
176 | static inline void __set_irq_handler_unlocked(int irq, | 182 | static inline void __set_irq_handler_unlocked(int irq, |
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index 5e2366da9f38..fd5777ab2d34 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h | |||
@@ -15,6 +15,10 @@ | |||
15 | 15 | ||
16 | #define istate core_internal_state__do_not_mess_with_it | 16 | #define istate core_internal_state__do_not_mess_with_it |
17 | 17 | ||
18 | #ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT | ||
19 | # define status status_use_accessors | ||
20 | #endif | ||
21 | |||
18 | extern int noirqdebug; | 22 | extern int noirqdebug; |
19 | 23 | ||
20 | /* | 24 | /* |
diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h index 55ebe1e09da4..0227ad358272 100644 --- a/kernel/irq/settings.h +++ b/kernel/irq/settings.h | |||
@@ -134,4 +134,5 @@ static inline bool irq_settings_is_nested_thread(struct irq_desc *desc) | |||
134 | } | 134 | } |
135 | 135 | ||
136 | /* Nothing should touch desc->status from now on */ | 136 | /* Nothing should touch desc->status from now on */ |
137 | #undef status | ||
137 | #define status USE_THE_PROPER_WRAPPERS_YOU_MORON | 138 | #define status USE_THE_PROPER_WRAPPERS_YOU_MORON |