Received: by 2002:a4f:b056:0:0:0:0:0 with SMTP id m22csp1387144ivi; Fri, 2 Oct 2020 08:57:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDn9KX1U+ZlJll5GJWUlRAjSa83RDGmky/4Oc+badIXr+3hEOFlFE2lbCDFnwcc+bethDS X-Received: by 2002:a17:906:14d8:: with SMTP id y24mr2849061ejc.123.1601654232338; Fri, 02 Oct 2020 08:57:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601654232; cv=none; d=google.com; s=arc-20160816; b=MtL+q8znAo6NMveLbgctmNWQJDIIEzsqts+B8zG69eB96VIU18BLd3vT3+Upu0R4vU aUol/dp7tpBYBCVrc60HKMqaRrrAH1c/AFLlJ+Ug5UaFiELY0rvo3yo/8F6pfhZ058kw 1rUMpBSNRd+7E5PBL8vwDrrTh0bY8MGYt5xpIbPRUnKpgrkc9ut9KnQqw8F8ffEfSBt9 pIPJ1pJDE/QYgVj80dOjmASwzu5jtOQDyWJ0sGz2xFyvZPLVRvjes/gHE5nynLkZtBPK QpbffE4yd3xBgovND2VFGdBp23YRQpkbSixp+sC6MlMX8/ly8CgPiwEsk2CrpeTz7v5i w1kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=FbzYt+1lqJQv+Lx05+RRyPDz9iRfh2zyAaBiUET49Dc=; b=tOY1qna0nnu+iFRwTa5/CeR+o65jm2tQABkGC1Qr/exhQ+XoVzqFibm6bl8avxFz0U 3puwXdfdJXPyxl2y+9Fvm3cnthlaBoFVr5Z3/tb/6wX8QwbSId7edzMpbQmNO6PJU/vH s5yyaGa1dWFg0WwCdhvZeRUiM9k+7x+Dv9ggrV2hVOT26Pcz+rQQ3kQDr/eBgLYvGoDu EQFhguUC3SnwB0hGBh4plw5BGApK/UWRp5KxfJBYNEPT0Ks8qUMypLXFYbKsAK6DbnpX 4XcYhaMrQKAwNTrvbCpDFxY3M6pzryzVr64iD/cCxw73Tvp3v9xC4WgI/OXjOXUNAl8S nSdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b="BdiF/jQH"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ds18si1249607ejc.745.2020.10.02.08.56.49; Fri, 02 Oct 2020 08:57:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b="BdiF/jQH"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387917AbgJBPxt (ORCPT + 99 others); Fri, 2 Oct 2020 11:53:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726090AbgJBPxt (ORCPT ); Fri, 2 Oct 2020 11:53:49 -0400 Received: from mail-il1-x141.google.com (mail-il1-x141.google.com [IPv6:2607:f8b0:4864:20::141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 461C2C0613E2 for ; Fri, 2 Oct 2020 08:53:49 -0700 (PDT) Received: by mail-il1-x141.google.com with SMTP id f15so1688898ilj.2 for ; Fri, 02 Oct 2020 08:53:49 -0700 (PDT) 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=FbzYt+1lqJQv+Lx05+RRyPDz9iRfh2zyAaBiUET49Dc=; b=BdiF/jQHkXOGJ5tGB7XMAQY3DWt9p2gn//KwbsXishc37at0GxMGsz3BqaHq+6Tb+Z lavVukWvQu9yruLKDUNeCt0bCIHftctaFyTEsaW4XvB95yKWABJbP0V8pxt5hL7qeWLl YNLp/bHplcCa+IIqog1ljsc82OJEejzY40f4h40IzjYHXq4LYpOniRMPu7NvnSPTCA40 itljo27NycITPYXMd4G8VMwPXbw2VXgS5Iy1Ow0kTuJZ1P62zxm4faMz/hDxeo49+xan 9TFFLXKMe0vGQdFEE+pyHucsWA+r7xlT4GFuAYukfv8D/0HfwAUStaX9xVBNDNQ6Luqj 9+Cg== 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=FbzYt+1lqJQv+Lx05+RRyPDz9iRfh2zyAaBiUET49Dc=; b=A8l7+Uqnj+CzWY4UGK5uLuvncqCAiXFOPF/W5oHv12nZnpu+hetMEtZhMaTiY/kkJp tdhFiOTuJto5vXBU6zJrHDsfwey3W/CDa0m6dp1wz5uUpdYVBVg9BphNa0O9bNazIqnj LAqHPB1UJUAfx/d80famI6Oo2cdOfDq4dbLYxoEMdeAemsKxXw6PgBXW7hKmPp9acUnO 0SUSRJe4bDhYIGpsTFST0rczqYWXwryyNUDz7JyaGBA9O59iOaMagSVdRgUP/hnmjTbv J3nXXgQjyhQc0213Fq+HNlgtZT+5JFETS/ES4et9vRMGoe//LzQS1KvD7kZ9s61VVUzd b/jw== X-Gm-Message-State: AOAM532B23rMrO2AYBc1oWPS/bUj9UB/V8jH5e6EAkUeVXKQcJZlXMcU C7AjiSIaInrus371Wod1g/scDg== X-Received: by 2002:a92:c148:: with SMTP id b8mr1843075ilh.269.1601654028568; Fri, 02 Oct 2020 08:53:48 -0700 (PDT) Received: from [192.168.1.30] ([65.144.74.34]) by smtp.gmail.com with ESMTPSA id y28sm962240ilk.13.2020.10.02.08.53.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Oct 2020 08:53:47 -0700 (PDT) Subject: Re: [PATCH 3/3] task_work: use TIF_TASKWORK if available To: Oleg Nesterov Cc: linux-kernel@vger.kernel.org, io-uring@vger.kernel.org, peterz@infradead.org, tglx@linutronix.de References: <20201001194208.1153522-1-axboe@kernel.dk> <20201001194208.1153522-4-axboe@kernel.dk> <20201002151415.GA29066@redhat.com> From: Jens Axboe Message-ID: Date: Fri, 2 Oct 2020 09:53:47 -0600 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: <20201002151415.GA29066@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/2/20 9:14 AM, Oleg Nesterov wrote: > Heh. To be honest I don't really like 1-2 ;) > > Unfortunately, I do not see a better approach right now. Let me think > until Monday, it is not that I think I will find a better solution, but > I'd like to try anyway. > > Let me comment 3/3 for now. Thanks, appreciate your time on this! >> +static void task_work_signal(struct task_struct *task) >> +{ >> +#ifndef TIF_TASKWORK >> + unsigned long flags; >> + >> + /* >> + * Only grab the sighand lock if we don't already have some >> + * task_work pending. This pairs with the smp_store_mb() >> + * in get_signal(), see comment there. >> + */ >> + if (!(READ_ONCE(task->jobctl) & JOBCTL_TASK_WORK) && >> + lock_task_sighand(task, &flags)) { >> + task->jobctl |= JOBCTL_TASK_WORK; >> + signal_wake_up(task, 0); >> + unlock_task_sighand(task, &flags); >> + } >> +#else >> + set_tsk_thread_flag(task, TIF_TASKWORK); >> + set_notify_resume(task); >> +#endif > > Again, I can't understand. task_work_signal(task) should set TIF_TASKWORK > to make signal_pending() = T _and_ wake/kick the target up, just like > signal_wake_up() does. Why do we set TIF_NOTIFY_RESUME ? > > So I think that if we are going to add TIF_TASKWORK we should generalize > this logic and turn it into TIF_NOTIFY_SIGNAL. Similar to TIF_NOTIFY_RESUME > but implies signal_pending(). > > IOW, something like > > void set_notify_signal(task) > { > if (!test_and_set_tsk_thread_flag(task, TIF_NOTIFY_SIGNAL)) { > if (!wake_up_state(task, TASK_INTERRUPTIBLE)) > kick_process(t); > } > } > > // called by exit_to_user_mode_loop() if ti_work & _TIF_NOTIFY_SIGNAL > void tracehook_notify_signal(regs) > { > clear_thread_flag(TIF_NOTIFY_SIGNAL); > smp_mb__after_atomic(); > if (unlikely(current->task_works)) > task_work_run(); > } > > This way task_work_run() doesn't need to clear TIF_NOTIFY_SIGNAL and it can > have more users. > > What do you think? I like that. It'll achieve the same thing as far as I'm concerned, but not tie the functionality to task_work. Not that we have anything that'd use it right now, but it still seems like a better base. I'll adapt patch 2+3 for this, thanks Oleg. -- Jens Axboe