hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/kernel/irq/settings.h
....@@ -17,7 +17,8 @@
1717 _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID,
1818 _IRQ_IS_POLLED = IRQ_IS_POLLED,
1919 _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY,
20
- _IRQ_NO_SOFTIRQ_CALL = IRQ_NO_SOFTIRQ_CALL,
20
+ _IRQ_HIDDEN = IRQ_HIDDEN,
21
+ _IRQ_RAW = IRQ_RAW,
2122 _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK,
2223 };
2324
....@@ -32,25 +33,22 @@
3233 #define IRQ_PER_CPU_DEVID GOT_YOU_MORON
3334 #define IRQ_IS_POLLED GOT_YOU_MORON
3435 #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON
35
-#define IRQ_NO_SOFTIRQ_CALL GOT_YOU_MORON
36
+#define IRQ_HIDDEN GOT_YOU_MORON
37
+#define IRQ_RAW GOT_YOU_MORON
3638 #undef IRQF_MODIFY_MASK
3739 #define IRQF_MODIFY_MASK GOT_YOU_MORON
3840
3941 static inline void
42
+__irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set, u32 mask)
43
+{
44
+ desc->status_use_accessors &= ~(clr & mask);
45
+ desc->status_use_accessors |= (set & mask);
46
+}
47
+
48
+static inline void
4049 irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set)
4150 {
42
- desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK);
43
- desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK);
44
-}
45
-
46
-static inline bool irq_settings_no_softirq_call(struct irq_desc *desc)
47
-{
48
- return desc->status_use_accessors & _IRQ_NO_SOFTIRQ_CALL;
49
-}
50
-
51
-static inline void irq_settings_set_no_softirq_call(struct irq_desc *desc)
52
-{
53
- desc->status_use_accessors |= _IRQ_NO_SOFTIRQ_CALL;
51
+ __irq_settings_clr_and_set(desc, clr, set, _IRQF_MODIFY_MASK);
5452 }
5553
5654 static inline bool irq_settings_is_per_cpu(struct irq_desc *desc)
....@@ -179,3 +177,21 @@
179177 {
180178 desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY;
181179 }
180
+
181
+static inline bool irq_settings_is_hidden(struct irq_desc *desc)
182
+{
183
+ return desc->status_use_accessors & _IRQ_HIDDEN;
184
+}
185
+
186
+static inline bool irq_settings_is_raw(struct irq_desc *desc)
187
+{
188
+ if (IS_ENABLED(CONFIG_ARCH_WANTS_IRQ_RAW))
189
+ return desc->status_use_accessors & _IRQ_RAW;
190
+
191
+ /*
192
+ * Using IRQ_RAW on architectures that don't expect it is
193
+ * likely to be wrong.
194
+ */
195
+ WARN_ON_ONCE(1);
196
+ return false;
197
+}