genirq: Move irq_set_lockdep_class() to core
authorThomas Gleixner <tglx@linutronix.de>
Thu, 10 Dec 2020 19:25:39 +0000 (20:25 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 15 Dec 2020 15:19:30 +0000 (16:19 +0100)
irq_set_lockdep_class() is used from modules and requires irq_to_desc() to
be exported. Move it into the core code which lifts another requirement for
the export.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20201210194042.860029489@linutronix.de
include/linux/irqdesc.h
kernel/irq/irqdesc.c

index 308d7db..4a1d016 100644 (file)
@@ -240,16 +240,14 @@ static inline bool irq_is_percpu_devid(unsigned int irq)
        return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);
 }
 
+void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,
+                            struct lock_class_key *request_class);
 static inline void
 irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,
                      struct lock_class_key *request_class)
 {
-       struct irq_desc *desc = irq_to_desc(irq);
-
-       if (desc) {
-               lockdep_set_class(&desc->lock, lock_class);
-               lockdep_set_class(&desc->request_mutex, request_class);
-       }
+       if (IS_ENABLED(CONFIG_LOCKDEP))
+               __irq_set_lockdep_class(irq, lock_class, request_class);
 }
 
 #endif
index e810eb9..20a54fa 100644 (file)
@@ -968,3 +968,17 @@ unsigned int kstat_irqs_usr(unsigned int irq)
        rcu_read_unlock();
        return sum;
 }
+
+#ifdef CONFIG_LOCKDEP
+void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,
+                            struct lock_class_key *request_class)
+{
+       struct irq_desc *desc = irq_to_desc(irq);
+
+       if (desc) {
+               lockdep_set_class(&desc->lock, lock_class);
+               lockdep_set_class(&desc->request_mutex, request_class);
+       }
+}
+EXPORT_SYMBOL_GPL(__irq_set_lockdep_class);
+#endif