hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/include/linux/irqflags.h
....@@ -13,6 +13,7 @@
1313 #define _LINUX_TRACE_IRQFLAGS_H
1414
1515 #include <linux/typecheck.h>
16
+#include <asm-generic/irq_pipeline.h>
1617 #include <asm/irqflags.h>
1718 #include <asm/percpu.h>
1819
....@@ -52,7 +53,9 @@
5253 extern void trace_hardirqs_on_prepare(void);
5354 extern void trace_hardirqs_off_finish(void);
5455 extern void trace_hardirqs_on(void);
56
+extern void trace_hardirqs_on_pipelined(void);
5557 extern void trace_hardirqs_off(void);
58
+extern void trace_hardirqs_off_pipelined(void);
5659
5760 # define lockdep_hardirq_context() (raw_cpu_read(hardirq_context))
5861 # define lockdep_softirq_context(p) ((p)->softirq_context)
....@@ -122,7 +125,9 @@
122125 # define trace_hardirqs_on_prepare() do { } while (0)
123126 # define trace_hardirqs_off_finish() do { } while (0)
124127 # define trace_hardirqs_on() do { } while (0)
128
+# define trace_hardirqs_on_pipelined() do { } while (0)
125129 # define trace_hardirqs_off() do { } while (0)
130
+# define trace_hardirqs_off_pipelined() do { } while (0)
126131 # define lockdep_hardirq_context() 0
127132 # define lockdep_softirq_context(p) 0
128133 # define lockdep_hardirqs_enabled() 0
....@@ -228,6 +233,38 @@
228233
229234 #endif /* CONFIG_TRACE_IRQFLAGS */
230235
236
+#ifdef CONFIG_IRQ_PIPELINE
237
+#define local_irq_enable_full() \
238
+ do { \
239
+ hard_local_irq_enable(); \
240
+ local_irq_enable(); \
241
+ } while (0)
242
+
243
+#define local_irq_disable_full() \
244
+ do { \
245
+ hard_local_irq_disable(); \
246
+ local_irq_disable(); \
247
+ } while (0)
248
+
249
+#define local_irq_save_full(__flags) \
250
+ do { \
251
+ hard_local_irq_disable(); \
252
+ local_irq_save(__flags); \
253
+ } while (0)
254
+
255
+#define local_irq_restore_full(__flags) \
256
+ do { \
257
+ if (!irqs_disabled_flags(__flags)) \
258
+ hard_local_irq_enable(); \
259
+ local_irq_restore(__flags); \
260
+ } while (0)
261
+#else
262
+#define local_irq_enable_full() local_irq_enable()
263
+#define local_irq_disable_full() local_irq_disable()
264
+#define local_irq_save_full(__flags) local_irq_save(__flags)
265
+#define local_irq_restore_full(__flags) local_irq_restore(__flags)
266
+#endif
267
+
231268 #define local_save_flags(flags) raw_local_save_flags(flags)
232269
233270 /*