hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/kernel/irq/debugfs.c
....@@ -56,6 +56,8 @@
5656 BIT_MASK_DESCR(IRQCHIP_ONESHOT_SAFE),
5757 BIT_MASK_DESCR(IRQCHIP_EOI_THREADED),
5858 BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI),
59
+ BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI),
60
+ BIT_MASK_DESCR(IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND),
5961 };
6062
6163 static void
....@@ -111,6 +113,7 @@
111113 BIT_MASK_DESCR(IRQD_AFFINITY_SET),
112114 BIT_MASK_DESCR(IRQD_SETAFFINITY_PENDING),
113115 BIT_MASK_DESCR(IRQD_AFFINITY_MANAGED),
116
+ BIT_MASK_DESCR(IRQD_AFFINITY_ON_ACTIVATE),
114117 BIT_MASK_DESCR(IRQD_MANAGED_SHUTDOWN),
115118 BIT_MASK_DESCR(IRQD_CAN_RESERVE),
116119 BIT_MASK_DESCR(IRQD_MSI_NOMASK_QUIRK),
....@@ -119,6 +122,12 @@
119122
120123 BIT_MASK_DESCR(IRQD_WAKEUP_STATE),
121124 BIT_MASK_DESCR(IRQD_WAKEUP_ARMED),
125
+
126
+ BIT_MASK_DESCR(IRQD_DEFAULT_TRIGGER_SET),
127
+
128
+ BIT_MASK_DESCR(IRQD_HANDLE_ENFORCE_IRQCTX),
129
+
130
+ BIT_MASK_DESCR(IRQD_IRQ_ENABLED_ON_SUSPEND),
122131 };
123132
124133 static const struct irq_bit_descr irqdesc_states[] = {
....@@ -130,6 +139,8 @@
130139 BIT_MASK_DESCR(_IRQ_PER_CPU_DEVID),
131140 BIT_MASK_DESCR(_IRQ_IS_POLLED),
132141 BIT_MASK_DESCR(_IRQ_DISABLE_UNLAZY),
142
+ BIT_MASK_DESCR(_IRQ_HIDDEN),
143
+ BIT_MASK_DESCR(_IRQ_RAW),
133144 };
134145
135146 static const struct irq_bit_descr irqdesc_istates[] = {
....@@ -141,6 +152,7 @@
141152 BIT_MASK_DESCR(IRQS_WAITING),
142153 BIT_MASK_DESCR(IRQS_PENDING),
143154 BIT_MASK_DESCR(IRQS_SUSPENDED),
155
+ BIT_MASK_DESCR(IRQS_NMI),
144156 };
145157
146158
....@@ -151,7 +163,7 @@
151163
152164 raw_spin_lock_irq(&desc->lock);
153165 data = irq_desc_get_irq_data(desc);
154
- seq_printf(m, "handler: %pf\n", desc->handle_irq);
166
+ seq_printf(m, "handler: %ps\n", desc->handle_irq);
155167 seq_printf(m, "device: %s\n", desc->dev_name);
156168 seq_printf(m, "status: 0x%08x\n", desc->status_use_accessors);
157169 irq_debug_show_bits(m, 0, desc->status_use_accessors, irqdesc_states,
....@@ -188,33 +200,7 @@
188200 return -EFAULT;
189201
190202 if (!strncmp(buf, "trigger", size)) {
191
- unsigned long flags;
192
- int err;
193
-
194
- /* Try the HW interface first */
195
- err = irq_set_irqchip_state(irq_desc_get_irq(desc),
196
- IRQCHIP_STATE_PENDING, true);
197
- if (!err)
198
- return count;
199
-
200
- /*
201
- * Otherwise, try to inject via the resend interface,
202
- * which may or may not succeed.
203
- */
204
- chip_bus_lock(desc);
205
- raw_spin_lock_irqsave(&desc->lock, flags);
206
-
207
- if (irq_settings_is_level(desc)) {
208
- /* Can't do level, sorry */
209
- err = -EINVAL;
210
- } else {
211
- desc->istate |= IRQS_PENDING;
212
- check_irq_resend(desc);
213
- err = 0;
214
- }
215
-
216
- raw_spin_unlock_irqrestore(&desc->lock, flags);
217
- chip_bus_sync_unlock(desc);
203
+ int err = irq_inject_interrupt(irq_desc_get_irq(desc));
218204
219205 return err ? err : count;
220206 }
....@@ -257,8 +243,6 @@
257243 int irq;
258244
259245 root_dir = debugfs_create_dir("irq", NULL);
260
- if (!root_dir)
261
- return -ENOMEM;
262246
263247 irq_domain_debugfs_init(root_dir);
264248