]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
Revert "powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled"
authorNicholas Piggin <npiggin@gmail.com>
Thu, 2 Apr 2020 12:04:01 +0000 (22:04 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 3 Apr 2020 05:55:34 +0000 (16:55 +1100)
commitabc3fce76adbdfa8f87272c784b388cd20b46049
tree9b8444b53a86c003cfca6e41ca96c4b2ea4c07f9
parent60083063b755e29685902609e024ecd0c4a1a7d9
Revert "powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled"

This reverts commit ebb37cf3ffd39fdb6ec5b07111f8bb2f11d92c5f.

That commit does not play well with soft-masked irq state
manipulations in idle, interrupt replay, and possibly others due to
tracing code sometimes using irq_work_queue (e.g., in
trace_hardirqs_on()). That can cause PACA_IRQ_DEC to become set when
it is not expected, and be ignored or cleared or cause warnings.

The net result seems to be missing an irq_work until the next timer
interrupt in the worst case which is usually not going to be noticed,
however it could be a long time if the tick is disabled, which is
against the spirit of irq_work and might cause real problems.

The idea is still solid, but it would need more work. It's not really
clear if it would be worth added complexity, so revert this for
now (not a straight revert, but replace with a comment explaining why
we might see interrupts happening, and gives git blame something to
find).

Fixes: ebb37cf3ffd3 ("powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200402120401.1115883-1-npiggin@gmail.com
arch/powerpc/kernel/time.c