genirq: Add IRQ_INPROGRESS to core
We need to maintain the flag for now in both fields status and istate.
Add a CONFIG_GENERIC_HARDIRQS_NO_COMPAT switch to allow testing w/o
the status one. Wrap the access to status IRQ_INPROGRESS in a inline
which can be turned of with CONFIG_GENERIC_HARDIRQS_NO_COMPAT along
with the define.
There is no reason that anything outside of core looks at this. That
needs some modifications, but we'll get there.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index f5d28e1..d1cb1f8 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -13,6 +13,7 @@
# define IRQ_BITMAP_BITS NR_IRQS
#endif
+#include "compat.h"
#include "settings.h"
#define istate core_internal_state__do_not_mess_with_it
@@ -40,11 +41,13 @@
* IRQS_SPURIOUS_DISABLED - was disabled due to spurious interrupt
* detection
* IRQS_POLL_INPROGRESS - polling in progress
+ * IRQS_INPROGRESS - Interrupt in progress
*/
enum {
IRQS_AUTODETECT = 0x00000001,
IRQS_SPURIOUS_DISABLED = 0x00000002,
IRQS_POLL_INPROGRESS = 0x00000008,
+ IRQS_INPROGRESS = 0x00000010,
};
#define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data)
@@ -128,7 +131,6 @@
print_symbol("%s\n", (unsigned long)desc->action->handler);
}
- P(IRQ_INPROGRESS);
P(IRQ_DISABLED);
P(IRQ_PENDING);
P(IRQ_REPLAY);
@@ -143,6 +145,7 @@
P(IRQ_NOAUTOEN);
PS(IRQS_AUTODETECT);
+ PS(IRQS_INPROGRESS);
}
#undef P