Wire up TIF_NOTIFY_SIGNAL handling for nds32.

Cc: Nick Hu <nic...@andestech.com>
Cc: Greentime Hu <green...@gmail.com>
Cc: Vincent Chen <deanbo...@gmail.com>
Signed-off-by: Jens Axboe <ax...@kernel.dk>
---

5.11 has support queued up for TIF_NOTIFY_SIGNAL, see this posting
for details:

https://lore.kernel.org/io-uring/20201026203230.386348-1-ax...@kernel.dk/

As part of that work, I'm adding TIF_NOTIFY_SIGNAL support to all archs,
as that will enable a set of cleanups once all of them support it. I'm
happy carrying this patch if need be, or it can be funelled through the
arch tree. Let me know.

 arch/nds32/include/asm/thread_info.h | 2 ++
 arch/nds32/kernel/ex-exit.S          | 2 +-
 arch/nds32/kernel/signal.c           | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/nds32/include/asm/thread_info.h 
b/arch/nds32/include/asm/thread_info.h
index c135111ec44e..d3967ad184f0 100644
--- a/arch/nds32/include/asm/thread_info.h
+++ b/arch/nds32/include/asm/thread_info.h
@@ -48,6 +48,7 @@ struct thread_info {
 #define TIF_NEED_RESCHED       2
 #define TIF_SINGLESTEP         3
 #define TIF_NOTIFY_RESUME      4       /* callback before returning to user */
+#define TIF_NOTIFY_SIGNAL      5       /* signal notifications exist */
 #define TIF_SYSCALL_TRACE      8
 #define TIF_POLLING_NRFLAG     17
 #define TIF_MEMDIE             18
@@ -57,6 +58,7 @@ struct thread_info {
 #define _TIF_SIGPENDING                (1 << TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED      (1 << TIF_NEED_RESCHED)
 #define _TIF_NOTIFY_RESUME     (1 << TIF_NOTIFY_RESUME)
+#define _TIF_NOTIFY_SIGNAL     (1 << TIF_NOTIFY_SIGNAL)
 #define _TIF_SINGLESTEP                (1 << TIF_SINGLESTEP)
 #define _TIF_SYSCALL_TRACE     (1 << TIF_SYSCALL_TRACE)
 #define _TIF_POLLING_NRFLAG    (1 << TIF_POLLING_NRFLAG)
diff --git a/arch/nds32/kernel/ex-exit.S b/arch/nds32/kernel/ex-exit.S
index 6a2966c2d8c8..b30699911b81 100644
--- a/arch/nds32/kernel/ex-exit.S
+++ b/arch/nds32/kernel/ex-exit.S
@@ -120,7 +120,7 @@ work_pending:
        andi    $p1, $r1, #_TIF_NEED_RESCHED
        bnez    $p1, work_resched
 
-       andi    $p1, $r1, #_TIF_SIGPENDING|#_TIF_NOTIFY_RESUME
+       andi    $p1, $r1, 
#_TIF_SIGPENDING|#_TIF_NOTIFY_RESUME|#_TIF_NOTIFY_SIGNAL
        beqz    $p1, no_work_pending
 
        move    $r0, $sp                        ! 'regs'
diff --git a/arch/nds32/kernel/signal.c b/arch/nds32/kernel/signal.c
index 2acb94812af9..7e3ca430a223 100644
--- a/arch/nds32/kernel/signal.c
+++ b/arch/nds32/kernel/signal.c
@@ -376,7 +376,7 @@ static void do_signal(struct pt_regs *regs)
 asmlinkage void
 do_notify_resume(struct pt_regs *regs, unsigned int thread_flags)
 {
-       if (thread_flags & _TIF_SIGPENDING)
+       if (thread_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
                do_signal(regs);
 
        if (thread_flags & _TIF_NOTIFY_RESUME)
-- 
2.29.0

-- 
Jens Axboe

Reply via email to