• Greentime Hu's avatar
    irqchip/sifive-plic: Fix broken irq_set_affinity() callback · a7480c5d
    Greentime Hu authored
    An interrupt submitted to an affinity change will always be left enabled
    after plic_set_affinity() has been called, while the expectation is that
    it should stay in whatever state it was before the call.
    
    Preserving the configuration fixes a PWM hang issue on the Unleashed
    board.
    
    [  919.015783] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
    [  919.020922] rcu:     0-...0: (0 ticks this GP)
    idle=7d2/1/0x4000000000000002 softirq=1424/1424 fqs=105807
    [  919.030295]  (detected by 1, t=225825 jiffies, g=1561, q=3496)
    [  919.036109] Task dump for CPU 0:
    [  919.039321] kworker/0:1     R  running task        0    30      2 0x00000008
    [  919.046359] Workqueue: events set_brightness_delayed
    [  919.051302] Call Trace:
    [  919.053738] [<ffffffe000930d92>] __schedule+0x194/0x4de
    [  982.035783] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
    [  982.040923] rcu:     0-...0: (0 ticks this GP)
    idle=7d2/1/0x4000000000000002 softirq=1424/1424 fqs=113325
    [  982.050294]  (detected by 1, t=241580 jiffies, g=1561, q=3509)
    [  982.056108] Task dump for CPU 0:
    [  982.059321] kworker/0:1     R  running task        0    30      2 0x00000008
    [  982.066359] Workqueue: events set_brightness_delayed
    [  982.071302] Call Trace:
    [  982.073739] [<ffffffe000930d92>] __schedule+0x194/0x4de
    [..]
    
    Fixes: bb0fed1c ("irqchip/sifive-plic: Switch to fasteoi flow")
    Signed-off-by: default avatarGreentime Hu <greentime.hu@sifive.com>
    [maz: tidy-up commit message]
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Reviewed-by: default avatarAnup Patel <anup@brainfault.org>
    Link: https://lore.kernel.org/r/20201020081532.2377-1-greentime.hu@sifive.com
    a7480c5d
irq-sifive-plic.c 10 KB