From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BAA9C388F9 for ; Tue, 3 Nov 2020 15:13:49 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1CABE206DB for ; Tue, 3 Nov 2020 15:13:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="X2R9ZQF4"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel-dk.20150623.gappssmtp.com header.i=@kernel-dk.20150623.gappssmtp.com header.b="tX5u3EmN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1CABE206DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Y3SEWIjSTw6Z5W0DvDOI5iA4ItHDP+LOaJLx7DvFlls=; b=X2R9ZQF4yMh0N4ElO2wI3ON4y lwBKdaNMnF7BMx6qgIELC+7gq0BQwLqUARrA/DCf5WoNxC0fTD11CjYjRFDfQ17vK6AVUMO3jpNYG hEPs5c2GKfmQc9b/iL9NIVD6XAZlExy2LWiPdRpZveIpOOHCmYpqISD4F9uQn4CZ0EhPgVPgWbZ9I +8GqbtqMxFFBqFLBFivlYzHP96KQ0Ere7C0zBQ7ESRo1LY3TS5r7nxCSPaMzKHCdaDOhvHipkEGc/ rpICL7fN4x2bVcxjc4HHouDtvPYQtWCUJKwu/FC3heg1oWu2Ofiu38EgQz6Dg83TVJFwp/91/wpH8 DyfOPGakw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kZxyX-0005ne-2p; Tue, 03 Nov 2020 15:11:57 +0000 Received: from mail-il1-x142.google.com ([2607:f8b0:4864:20::142]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kZxyT-0005mR-1o for linux-arm-kernel@lists.infradead.org; Tue, 03 Nov 2020 15:11:54 +0000 Received: by mail-il1-x142.google.com with SMTP id g15so1666197ilc.9 for ; Tue, 03 Nov 2020 07:11:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=nWUL2iLApG2uVuhg6xAFLEmClDzH+jc1RVgEj2noe7g=; b=tX5u3EmN+FXtSIYR8mZ+3vWexEm++j/M/0Fma15Lu+xOd9WfR+eTKXPGABLCHwY/l+ EAzlEdiZ+NZuVF+elwMctOiil+Qbaj+CyvIYuwrUADeZazEU2TJRbb8FacvQS88Qsn2l zm5WNaYzTb1JKHPkgVxlKEcPFq3IZ5gCRxRLvL15XRDRttnq+bdtlIS6RCOe2LWVpcRH Gl8tpopP/lBe6SdDqCoY10fCQgiHJAE4LEGASPlK/R08itBrybnFyww9o8QgaNFu8qch b0CjMLbi+CJQCnpYUnaSJ7DN4az0o/l8cR97IeTUWJf7jvYp/6+D7vXCQ3eg6E86FU1n lF2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=nWUL2iLApG2uVuhg6xAFLEmClDzH+jc1RVgEj2noe7g=; b=sZ6+6FqUcr1v8gAxDxTJnhuNBiPezMSNQfLzXls/vh1ccITlWGOnO1PGyNJ2PYtqAw DE4OOUReWtNdNCzsDQijNccZ598gq8oWT9ZuR3MRKInWPbRCrakepQc7zcixP43JezCC nj0zDrKCaj7CxLPoox7SvGbyFXsvPfAKh4rkG5jdk1ejVylaEpCcNZuvAhnxzvc/6vUl bEanQhKV22jZkUKaoKtQBs0XoZNTzDQQD8JkHqPaBAu3/IbEzdqVNHCBjtQizt3JhIbL pNGZyagwR61w8yY3HX2Ycw72/zjlw+rOlNZNn3ne/BHxyl2lDJYXkNhQH5mG3r3Fpth3 qV7Q== X-Gm-Message-State: AOAM532ybmGYeN2ll+Et1g+TO5Pvn3h5wqBtNH6i0oajsaUoA9kRL5N7 L2n82UfbaxB0inoi7nGyATpSS+mi2+CkxQ== X-Google-Smtp-Source: ABdhPJyG6npPn6M/d4isr2gVbHjGalJJOuU/Mv37VEoNkw9H7VpXTxmw/PSY/17Zciu7lFdlr3RQjA== X-Received: by 2002:a92:d08f:: with SMTP id h15mr10608316ilh.8.1604416310498; Tue, 03 Nov 2020 07:11:50 -0800 (PST) Received: from [192.168.1.30] ([65.144.74.34]) by smtp.gmail.com with ESMTPSA id n28sm14449060ila.52.2020.11.03.07.11.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Nov 2020 07:11:49 -0800 (PST) Subject: Re: [PATCH] arm: add support for TIF_NOTIFY_SIGNAL To: Russell King - ARM Linux admin References: <3c1ebfa5-38d9-e6b2-fcf7-d8b17c0fa515@kernel.dk> <20201029162934.GX1551@shell.armlinux.org.uk> <20201029170110.GY1551@shell.armlinux.org.uk> <3a512c06-8387-e989-af5c-d9698d42cb11@kernel.dk> <20201029171738.GZ1551@shell.armlinux.org.uk> <20201029174236.GA1551@shell.armlinux.org.uk> From: Jens Axboe Message-ID: <06f3c4cc-0cf7-b57e-acb4-d4fc8ea2fc25@kernel.dk> Date: Tue, 3 Nov 2020 08:11:49 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20201029174236.GA1551@shell.armlinux.org.uk> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201103_101153_320390_8E7F55F6 X-CRM114-Status: GOOD ( 23.35 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 10/29/20 11:42 AM, Russell King - ARM Linux admin wrote: > On Thu, Oct 29, 2020 at 11:20:07AM -0600, Jens Axboe wrote: >> On 10/29/20 11:17 AM, Russell King - ARM Linux admin wrote: >>> On Thu, Oct 29, 2020 at 11:15:37AM -0600, Jens Axboe wrote: >>>> How about this? >>>> >>>> commit c03932936d8f99ff7c1c6c7d984e7a457284396c >>>> Author: Jens Axboe >>>> Date: Fri Oct 9 16:00:49 2020 -0600 >>>> >>>> arm: add support for TIF_NOTIFY_SIGNAL >>>> >>>> Wire up TIF_NOTIFY_SIGNAL handling for arm. >>>> >>>> Cc: linux-arm-kernel@lists.infradead.org >>>> Signed-off-by: Jens Axboe >>>> >>>> diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h >>>> index 536b6b979f63..eb7ce2747eb0 100644 >>>> --- a/arch/arm/include/asm/thread_info.h >>>> +++ b/arch/arm/include/asm/thread_info.h >>>> @@ -126,6 +126,8 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, >>>> * thread information flags: >>>> * TIF_USEDFPU - FPU was used by this task this quantum (SMP) >>>> * TIF_POLLING_NRFLAG - true if poll_idle() is polling TIF_NEED_RESCHED >>>> + * >>>> + * Any bit in the range of 0..15 will cause do_work_pending() to be invoked. >>>> */ >>>> #define TIF_SIGPENDING 0 /* signal pending */ >>>> #define TIF_NEED_RESCHED 1 /* rescheduling necessary */ >>>> @@ -135,6 +137,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, >>>> #define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */ >>>> #define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */ >>>> #define TIF_SECCOMP 7 /* seccomp syscall filtering active */ >>>> +#define TIF_NOTIFY_SIGNAL 8 /* signal notifications exist */ >>>> >>>> #define TIF_USING_IWMMXT 17 >>>> #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ >>>> @@ -148,6 +151,7 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, >>>> #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) >>>> #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) >>>> #define _TIF_SECCOMP (1 << TIF_SECCOMP) >>>> +#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL) >>>> #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT) >>>> >>>> /* Checks for any syscall work in entry-common.S */ >>>> @@ -158,7 +162,8 @@ extern int vfp_restore_user_hwstate(struct user_vfp *, >>>> * Change these and you break ASM code in entry-common.S >>>> */ >>>> #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ >>>> - _TIF_NOTIFY_RESUME | _TIF_UPROBE) >>>> + _TIF_NOTIFY_RESUME | _TIF_UPROBE | \ >>>> + _TIF_NOTIFY_SIGNAL) >>>> >>>> #endif /* __KERNEL__ */ >>>> #endif /* __ASM_ARM_THREAD_INFO_H */ >>>> diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S >>>> index 271cb8a1eba1..77d16390a524 100644 >>>> --- a/arch/arm/kernel/entry-common.S >>>> +++ b/arch/arm/kernel/entry-common.S >>>> @@ -53,7 +53,7 @@ __ret_fast_syscall: >>>> cmp r2, #TASK_SIZE >>>> blne addr_limit_check_failed >>>> ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing >>>> - tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK >>>> + movs r1, r1, lsl #16 >>>> bne fast_work_pending >>>> >>>> >>>> @@ -90,7 +90,7 @@ __ret_fast_syscall: >>>> cmp r2, #TASK_SIZE >>>> blne addr_limit_check_failed >>>> ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing >>>> - tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK >>>> + movs r1, r1, lsl #16 >>>> beq no_work_pending >>>> UNWIND(.fnend ) >>>> ENDPROC(ret_fast_syscall) >>>> @@ -131,7 +131,7 @@ ENTRY(ret_to_user_from_irq) >>>> cmp r2, #TASK_SIZE >>>> blne addr_limit_check_failed >>>> ldr r1, [tsk, #TI_FLAGS] >>>> - tst r1, #_TIF_WORK_MASK >>>> + movs r1, r1, lsl #16 >>>> bne slow_work_pending >>>> no_work_pending: >>>> asm_trace_hardirqs_on save = 0 >>>> diff --git a/arch/arm/kernel/entry-v7m.S b/arch/arm/kernel/entry-v7m.S >>>> index de1f20624be1..d0e898608d30 100644 >>>> --- a/arch/arm/kernel/entry-v7m.S >>>> +++ b/arch/arm/kernel/entry-v7m.S >>>> @@ -59,7 +59,7 @@ __irq_entry: >>>> >>>> get_thread_info tsk >>>> ldr r2, [tsk, #TI_FLAGS] >>>> - tst r2, #_TIF_WORK_MASK >>>> + movs r2, r2, lsl #16 >>>> beq 2f @ no work pending >>>> mov r0, #V7M_SCB_ICSR_PENDSVSET >>>> str r0, [r1, V7M_SCB_ICSR] @ raise PendSV >>>> diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c >>>> index 585edbfccf6d..9d2e916121be 100644 >>>> --- a/arch/arm/kernel/signal.c >>>> +++ b/arch/arm/kernel/signal.c >>>> @@ -655,7 +655,7 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) >>>> if (unlikely(!user_mode(regs))) >>>> return 0; >>>> local_irq_enable(); >>>> - if (thread_flags & _TIF_SIGPENDING) { >>>> + if (thread_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL)) { >>>> int restart = do_signal(regs, syscall); >>>> if (unlikely(restart)) { >>>> /* >>>> >>> >>> Looks perfect to me, thanks! I assume the pre-requisits for this are >>> already in mainline or linux-next? >> >> Great! Thanks for your expedient attention and help. >> >> The bits using this are queued in tip for 5.11, so not in mainline yet, >> but should be in linux-next tomorrow I guess. But it was done such that >> arch patches could be queued up independently, so we didn't have weird >> cross dependencies. > > Okay, I'll wait a few days and see about temporarily dumping it in > my for-next branch so it gets a spin through kernelci next week. > I'm not anticipating any breakage, so (if I remember) I'll give you > a reviewed-by next week once it seems good. As I say, if I remember. Russell, did you have a chance to run it through the machinery? -- Jens Axboe _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel