Commit a6967caf authored by Thomas Gleixner's avatar Thomas Gleixner

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: default avatarThomas Gleixner <tglx@linutronix.de>
parent e1ef8241
...@@ -64,7 +64,11 @@ struct irq_desc { ...@@ -64,7 +64,11 @@ struct irq_desc {
unsigned int __percpu *kstat_irqs; unsigned int __percpu *kstat_irqs;
irq_flow_handler_t handle_irq; irq_flow_handler_t handle_irq;
struct irqaction *action; /* IRQ action list */ struct irqaction *action; /* IRQ action list */
#ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
unsigned int status_use_accessors;
#else
unsigned int status; /* IRQ status */ unsigned int status; /* IRQ status */
#endif
unsigned int core_internal_state__do_not_mess_with_it; unsigned int core_internal_state__do_not_mess_with_it;
unsigned int depth; /* nested irq disables */ unsigned int depth; /* nested irq disables */
unsigned int wake_depth; /* nested wake enables */ unsigned int wake_depth; /* nested wake enables */
...@@ -164,6 +168,7 @@ static inline int irq_has_action(unsigned int irq) ...@@ -164,6 +168,7 @@ static inline int irq_has_action(unsigned int irq)
return desc->action != NULL; return desc->action != NULL;
} }
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static inline int irq_balancing_disabled(unsigned int irq) static inline int irq_balancing_disabled(unsigned int irq)
{ {
struct irq_desc *desc; struct irq_desc *desc;
...@@ -171,6 +176,7 @@ static inline int irq_balancing_disabled(unsigned int irq) ...@@ -171,6 +176,7 @@ static inline int irq_balancing_disabled(unsigned int irq)
desc = irq_to_desc(irq); desc = irq_to_desc(irq);
return desc->status & IRQ_NO_BALANCING_MASK; return desc->status & IRQ_NO_BALANCING_MASK;
} }
#endif
/* caller has locked the irq_desc and both params are valid */ /* caller has locked the irq_desc and both params are valid */
static inline void __set_irq_handler_unlocked(int irq, static inline void __set_irq_handler_unlocked(int irq,
......
...@@ -15,6 +15,10 @@ ...@@ -15,6 +15,10 @@
#define istate core_internal_state__do_not_mess_with_it #define istate core_internal_state__do_not_mess_with_it
#ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
# define status status_use_accessors
#endif
extern int noirqdebug; extern int noirqdebug;
/* /*
......
...@@ -134,4 +134,5 @@ static inline bool irq_settings_is_nested_thread(struct irq_desc *desc) ...@@ -134,4 +134,5 @@ static inline bool irq_settings_is_nested_thread(struct irq_desc *desc)
} }
/* Nothing should touch desc->status from now on */ /* Nothing should touch desc->status from now on */
#undef status
#define status USE_THE_PROPER_WRAPPERS_YOU_MORON #define status USE_THE_PROPER_WRAPPERS_YOU_MORON
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment