commit 3d5bfbd97163 versus -rt

From: Rasmus Villemoes
Date: Tue Jun 15 2021 - 08:35:36 EST


Hi

Booting 5.10.41-rt42 with CONFIG_PREEMPT_RT=y gives this splat:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 29 at kernel/irq/handle.c:159
__handle_irq_event_percpu+0x1ec/0x27c
irq 66 handler irq_default_primary_handler+0x0/0x1c enabled interrupts
Modules linked in:
CPU: 0 PID: 29 Comm: irq/45-gpio-cas Not tainted
5.10.41-rt42-00001-g3ce830134091 #495
Hardware name: Freescale LS1021A
Backtrace:
[<806ad420>] (dump_backtrace) from [<806ad7c4>] (show_stack+0x20/0x24)
r7:80abad04 r6:60070013 r5:00000000 r4:80abad04
[<806ad7a4>] (show_stack) from [<806b0a94>] (dump_stack+0x88/0xa4)
[<806b0a0c>] (dump_stack) from [<8011d424>] (__warn+0xd4/0x100)
r7:80e3fe14 r6:00000000 r5:00000009 r4:80170c48
[<8011d350>] (__warn) from [<806ade3c>] (warn_slowpath_fmt+0x88/0xcc)
r9:ffffe000 r8:807e5943 r7:00000009 r6:80170c48 r5:0000009f r4:807e596a
[<806addb8>] (warn_slowpath_fmt) from [<80170c48>]
(__handle_irq_event_percpu+0x1ec/0x27c)
r8:80e3fe80 r7:80fff800 r6:00000042 r5:00000002 r4:80ea2000
[<80170a5c>] (__handle_irq_event_percpu) from [<80170d38>]
(handle_irq_event_percpu+0x60/0xc0)
r10:80ae2508 r9:80171c48 r8:80e3e000 r7:80e282e4 r6:00000000 r5:80fff800
r4:00000000
[<80170cd8>] (handle_irq_event_percpu) from [<80170e2c>]
(handle_irq_event+0x94/0xb8)
r7:80e282e4 r6:80fff878 r5:80fff818 r4:80fff800
[<80170d98>] (handle_irq_event) from [<801761a4>]
(handle_edge_irq+0xec/0x10c)
r7:80e282e4 r6:80fff878 r5:80fff818 r4:80fff800
[<801760b8>] (handle_edge_irq) from [<8016fbb8>]
(generic_handle_irq+0x38/0x48)
r7:80e282e4 r6:ffffe000 r5:80e3a640 r4:0000000c
[<8016fb80>] (generic_handle_irq) from [<8043e98c>]
(mpc8xxx_gpio_irq_cascade+0xac/0xd0)
[<8043e8e0>] (mpc8xxx_gpio_irq_cascade) from [<80171c80>]
(irq_forced_thread_fn+0x38/0x8c)
r5:80e282c0 r4:80deda00
[<80171c48>] (irq_forced_thread_fn) from [<80171eb4>]
(irq_thread+0x11c/0x238)
r7:80e282e4 r6:ffffe000 r5:80e282c0 r4:80deda00
[<80171d98>] (irq_thread) from [<8013d9bc>] (kthread+0x18c/0x19c)
r10:80e121c0 r9:80e282c0 r8:80171d98 r7:80d15bf4 r6:80e28300 r5:80e3e000
r4:80e28340
[<8013d830>] (kthread) from [<80100130>] (ret_from_fork+0x14/0x24)
Exception stack(0x80e3ffb0 to 0x80e3fff8)
ffa0: 00000000 00000000 00000000
00000000
ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000
ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:8013d830
r4:80e28300 r3:80e121c0
---[ end trace 0000000000000002 ]---

Reverting commit 3d5bfbd9716318b1ca5c38488aa69f64d38a9aa5 (gpio:
mpc8xxx: change the gpio interrupt flags.) makes it go away, as does
disabling CONFIG_PREEMPT_RT or simply booting a vanilla v5.10.42 (where
that option exists but cannot be selected).

This seems to be the kind of thing where an -rt expert can immediately
see what's wrong and how to fix it. Ideas anyone?

Thanks,
Rasmus