ARC: unbork 5.11 bootup: fix snafu in _TIF_NOTIFY_SIGNAL handling
diff mbox series

Message ID 20210107001225.3063163-1-vgupta@synopsys.com
State Accepted
Commit bb12433bf56e76789c6b08b36c546f745a6aa6e1
Headers show
Series
  • ARC: unbork 5.11 bootup: fix snafu in _TIF_NOTIFY_SIGNAL handling
Related show

Commit Message

Vineet Gupta Jan. 7, 2021, 12:12 a.m. UTC
Linux 5.11.rcX was failing to boot on ARC HSDK board. Turns out we have
a couple of issues, this being the first one, and I'm to blame as I
didn't pay attention during review.

TIF_NOTIFY_SIGNAL support requires checking multiple TIF_* bits in
kernel return code path. Old code only needed to check a single bit so
BBIT0 <TIF_SIGPENDING> worked. New code needs to check multiple bits so
AND <bit-mask> instruction. So needs to use bit mask variant _TIF_SIGPENDING

Cc: Jens Axboe <axboe@kernel.dk>
Fixes: 53855e12588743ea128 ("arc: add support for TIF_NOTIFY_SIGNAL")
Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/34
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 arch/arc/kernel/entry.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jens Axboe Jan. 7, 2021, 2:13 a.m. UTC | #1
On 1/6/21 5:12 PM, Vineet Gupta wrote:
> Linux 5.11.rcX was failing to boot on ARC HSDK board. Turns out we have
> a couple of issues, this being the first one, and I'm to blame as I
> didn't pay attention during review.
> 
> TIF_NOTIFY_SIGNAL support requires checking multiple TIF_* bits in
> kernel return code path. Old code only needed to check a single bit so
> BBIT0 <TIF_SIGPENDING> worked. New code needs to check multiple bits so
> AND <bit-mask> instruction. So needs to use bit mask variant _TIF_SIGPENDING

Sorry about that, my arc asm isn't that strong :-)
Thanks for fixing it.

Patch
diff mbox series

diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S
index 1f5308abf36d..1743506081da 100644
--- a/arch/arc/kernel/entry.S
+++ b/arch/arc/kernel/entry.S
@@ -307,7 +307,7 @@  resume_user_mode_begin:
 	mov r0, sp	; pt_regs for arg to do_signal()/do_notify_resume()
 
 	GET_CURR_THR_INFO_FLAGS   r9
-	and.f  0,  r9, TIF_SIGPENDING|TIF_NOTIFY_SIGNAL
+	and.f  0,  r9, _TIF_SIGPENDING|_TIF_NOTIFY_SIGNAL
 	bz .Lchk_notify_resume
 
 	; Normal Trap/IRQ entry only saves Scratch (caller-saved) regs