ARM: 9294/2: vfp: Fix broken softirq handling with instrumentation enabled
Commit 62b95a7b ("ARM: 9282/1: vfp: Manipulate task VFP state with softirqs disabled") replaced the en/disable preemption calls inside the VFP state handling code with en/disabling of soft IRQs, which is necessary to allow kernel use of the VFP/SIMD unit when handling a soft IRQ. Unfortunately, when lockdep is enabled (or other instrumentation that enables TRACE_IRQFLAGS), the disable path implemented in asm fails to perform the lockdep and RCU related bookkeeping, resulting in spurious warnings and other badness. Set let's rework the VFP entry code a little bit so we can make the local_bh_disable() call from C, with all the instrumentations that happen to have been configured. Calling local_bh_enable() can be done from asm, as it is a simple wrapper around __local_bh_enable_ip(), which is always a callable function. Link: https://lore.kernel.org/all/ZBBYCSZUJOWBg1s8@localhost.localdomain/ Fixes: 62b95a7b ("ARM: 9282/1: vfp: Manipulate task VFP state with softirqs disabled") Signed-off-by:Ard Biesheuvel <ardb@kernel.org> Reviewed-by:
Linus Walleij <linus.walleij@linaro.org> Tested-by:
Guenter Roeck <linux@roeck-us.net> Signed-off-by:
Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Showing
Please register or sign in to comment