[PATCH] arc: add support for TIF_NOTIFY_SIGNAL
Vineet Gupta
Vineet.Gupta1 at synopsys.com
Fri Oct 30 14:47:43 EDT 2020
On 10/29/20 9:09 AM, Jens Axboe wrote:
> Wire up TIF_NOTIFY_SIGNAL handling for arc.
>
> Cc:linux-arm-kernel at lists.infradead.org
Just to be clear, ARC and ARM seem to differ in 1 letter, they are in no
way related :-)
> Signed-off-by: Jens Axboe<axboe at kernel.dk>
> ---
>
> 5.11 has support queued up for TIF_NOTIFY_SIGNAL, see this posting
> for details:
>
> https://urldefense.com/v3/__https://lore.kernel.org/io-uring/20201026203230.386348-1-axboe@kernel.dk/__;!!A4F2R9G_pg!Oo4kwr6Yy8y5ByC8jIONjU28gLsqpyfzT10u5kfdsj2E-U2VIXQs7SvTmBRIkupZ$
TL'DR ignore this url rewrite.
Corporate mailer fudging the urls and I can't seem to find this msg in
my mailing group subscription in Thunderbird (although it shows up in
web achieve) hence need to reply from office account rather than the
newsgroup account.
> 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.
I'm fine either ways too, best to do whatever you are doing for other
arches. Although this patch per se is broken, please see below.
>
> GET_CURR_THR_INFO_FLAGS r9
> - bbit0 r9, TIF_SIGPENDING, .Lchk_notify_resume
> + and.f 0, r9, TIF_SIGPENDING|TIF_NOTIFY_SIGNAL, .Lchk_notify_resume
This is not correct, AND is a simple ALU instruction with format: AND
dest, src2, src1
With dest 0, it won't update any register. With .f suffix it would set
CC flag based on ALU operation which can subsequent used for a
predicated instruction such as BZ.
So you need something like
and.f 0, r9, TIF_SIGPENDING|TIF_NOTIFY_SIGNAL
bz .Lchk_notify_resume
>
> ; Normal Trap/IRQ entry only saves Scratch (caller-saved) regs
> ; in pt_reg since the "C" ABI (kernel code) will automatically
> diff --git a/arch/arc/kernel/signal.c b/arch/arc/kernel/signal.c
> index 2be55fb96d87..a78d8f745a67 100644
> --- a/arch/arc/kernel/signal.c
> +++ b/arch/arc/kernel/signal.c
> @@ -362,7 +362,7 @@ void do_signal(struct pt_regs *regs)
>
> restart_scall = in_syscall(regs) && syscall_restartable(regs);
>
> - if (get_signal(&ksig)) {
> + if (test_thread_flag(TIF_SIGPENDING) && get_signal(&ksig)) {
> if (restart_scall) {
> arc_restart_syscall(&ksig.ka, regs);
> syscall_wont_restart(regs); /* No more restarts */
I've not seen your entire patchset, but it seems we are now hitting
do_signal() for either of TIF_{SIGPENDING|NOTIFY_SIGNAL} but then only
handling signal for TIF_SIGPENDING, so why even bother to come here. Do
you plan to add additional arch handling later ?
Thx,
-Vineet
More information about the linux-snps-arc
mailing list