]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
genirq: Merge irqaction::{dev_id,percpu_dev_id}
authorMarc Zyngier <maz@kernel.org>
Mon, 20 Oct 2025 12:29:29 +0000 (13:29 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 27 Oct 2025 16:16:34 +0000 (17:16 +0100)
When irqaction::percpu_dev_id was introduced, it was hoped that it could be
part of an anonymous union with dev_id, as the two fields are mutually
exclusive.

However, toolchains used at the time were often showing terrible support
for anonymous unions, breaking the build on a number of architectures. It
was therefore decided to keep the two fields separate and address this down
the line.

14 years later, the compiler dark age is over, and there is universal
support for anonymous unions. Get a whole pointer back that can immediately
be spent on something else.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Will Deacon <will@kernel.org>
Link: https://patch.msgid.link/20251020122944.3074811-13-maz@kernel.org
include/linux/interrupt.h

index 51b6484c049345c75816c4a63b4efa813f42f27b..0ec1a71ab4e84f6f0aade0d414e6f9309b52528a 100644 (file)
@@ -121,8 +121,10 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
  */
 struct irqaction {
        irq_handler_t           handler;
-       void                    *dev_id;
-       void __percpu           *percpu_dev_id;
+       union {
+               void            *dev_id;
+               void __percpu   *percpu_dev_id;
+       };
        struct irqaction        *next;
        irq_handler_t           thread_fn;
        struct task_struct      *thread;