Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp5990067ybf; Thu, 5 Mar 2020 10:53:06 -0800 (PST) X-Google-Smtp-Source: ADFU+vsrO6+Ze5FEpm1tvDTYOhgiJCyUFV/Jtf3vNSdc5+qiwN4Qx17BWZG57SmrJ8Pfc5UDj79k X-Received: by 2002:a05:6808:3cb:: with SMTP id o11mr338926oie.11.1583434386823; Thu, 05 Mar 2020 10:53:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583434386; cv=none; d=google.com; s=arc-20160816; b=TQVsNrVpfEok3q+OcEOHXTtshsqXX7fZAK/fyBjTF555onmIYBf6pR/Ye4y2qoQHWE rGXmFmZg24zin9mRJhxz6y7OejqjkGUJiAt5OeJSaN3TDHxuvT+c7EvurfgJsre0+Zxn rfZVsVUivCeuAk5R6OIn/UU2HgW5kGjLX55h1O/fAymqiCSLcjCQNKFwgBEX4LxIS2+U aoAsFdkpvpz+NuDlNV246Yh8AHuAFoy/+vqPghi2AZXtZPpp4s8IJRq5BxATQJfCrbKp dTFRT5gHtzzQ0nnlK7F1O9yT84pXR87VYkbxK4MycZnFzd2k/SZl4dd2HCAY3lkQSHKm IgSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Yn5/IW3OYHf5EUn3GzmHogT1LV9Dftj667FAvQnTKI4=; b=QEVl3GwvCFEv9Ire+7op56re/pn1Qq0MH8kAfgiEHOPW94wOuoM5LmoxOcxOnUD/xx ZZx5kGxPHHvvkDz8yklDFeW3j3fSKqeOC9mQ46ayXHSrnr9pWWifV2xAykCP9L1Ml1in fCivI/BtpLO5lCMw3W+sRcendQbqhAT94PmY+jLToibMk0m21aRvL6SHM7Y5n62bLYxa CT3U+kB6/9L/ktwk1rZSn4anuGsP6LzGUVzECaAfXcXlEGlX/czGBqSzQgny6EDivlCX h1+OQqZ9Him60h/dej9rXq7BZrCBt9Q5DBN/PgQs+1pfSNgFHJnD3zCQOR9xZCliQ5LT odGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=VVk6Byjs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x2si3682380oie.56.2020.03.05.10.52.54; Thu, 05 Mar 2020 10:53:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=VVk6Byjs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726504AbgCESvx (ORCPT + 99 others); Thu, 5 Mar 2020 13:51:53 -0500 Received: from bombadil.infradead.org ([198.137.202.133]:44288 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725946AbgCESvx (ORCPT ); Thu, 5 Mar 2020 13:51:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Transfer-Encoding :Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=Yn5/IW3OYHf5EUn3GzmHogT1LV9Dftj667FAvQnTKI4=; b=VVk6ByjsRM3wpWY+qvfeAVvFex XSR3Yje5R00vVodKBhThEv3KsINHfdyK4sDscmpZv3NRJq5tIIABEiVi6J/lt6WJh2neZ//CU+xSB rECagYV5W63kkDmeLBsfyRon75GkhHqJkKSGoJ46JVs87XqpW19FnOFHt5Pb6lkgecjeDhebwIxD8 smPH00JfG0iTvdM6x1U4xwQTwATpB7D5Fj+9WzRaT3+tdzn9MRsVeFpcD07fiTbCRWzLw2l4Tv5Mb t2hFpnkyadlZ6M6P8MxkYKd60qZwJMVKFn+tMcVe3efktI5e/147Vgg9+G1/63fiSBRGQQW0Z1GBk oW6khrUw==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=worktop.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1j9vas-0005bE-DZ; Thu, 05 Mar 2020 18:51:38 +0000 Received: by worktop.programming.kicks-ass.net (Postfix, from userid 1000) id 6FE8E980EDA; Thu, 5 Mar 2020 19:51:36 +0100 (CET) Date: Thu, 5 Mar 2020 19:51:36 +0100 From: Peter Zijlstra To: =?iso-8859-1?Q?Andr=E9?= Almeida Cc: Florian Weimer , "Pierre-Loup A. Griffais" , Thomas Gleixner , linux-kernel@vger.kernel.org, kernel@collabora.com, krisman@collabora.com, shuah@kernel.org, linux-kselftest@vger.kernel.org, rostedt@goodmis.org, ryao@gentoo.org, dvhart@infradead.org, mingo@redhat.com, z.figura12@gmail.com, steven@valvesoftware.com, steven@liquorix.net, malteskarupke@web.de, carlos@redhat.com, adhemerval.zanella@linaro.org, libc-alpha@sourceware.org, linux-api@vger.kernel.org Subject: Re: 'simple' futex interface [Was: [PATCH v3 1/4] futex: Implement mechanism to wait on any of several futexes] Message-ID: <20200305185136.GB3348@worktop.programming.kicks-ass.net> References: <87tv3aflqm.fsf@nanos.tec.linutronix.de> <967d5047-2cb6-d6d8-6107-edb99a4c9696@valvesoftware.com> <87o8thg031.fsf@nanos.tec.linutronix.de> <20200303120050.GC2596@hirez.programming.kicks-ass.net> <87pndth9ur.fsf@oldenburg2.str.redhat.com> <20200303132150.GD2596@hirez.programming.kicks-ass.net> <878skhh7og.fsf@oldenburg2.str.redhat.com> <20200303150104.GE2596@hirez.programming.kicks-ass.net> <52406c54-60b3-dcfe-65d8-4c425459e37b@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <52406c54-60b3-dcfe-65d8-4c425459e37b@collabora.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 05, 2020 at 01:14:17PM -0300, Andr? Almeida wrote: > > sys_futex_wait(void *uaddr, u64 val, unsigned long flags, ktime_t *timo); > > struct futex_wait { > > void *uaddr; > > u64 val; > > u64 flags; > > }; > > sys_futex_waitv(struct futex_wait *waiters, unsigned int nr_waiters, > > u64 flags, ktime_t *timo); > > sys_futex_wake(void *uaddr, unsigned int nr, u64 flags); > > sys_futex_cmp_requeue(void *uaddr1, void *uaddr2, unsigned int nr_wake, > > unsigned int nr_requeue, u64 cmpval, unsigned long flags); > > > > And that makes 7 arguments for cmp_requeue, which can't be. Maybe we if > > combine nr_wake and nr_requeue in one as 2 u16... ? > > > > And then we need to go detector if the platform supports it or not.. > > > > Thanks everyone for the feedback around our mechanism. Are the > performance benefits of implementing a syscall to wait on a single futex > significant enough to maintain it instead of just using > `sys_futex_waitv()` with `nr_waiters = 1`? If we join both cases in a > single interface, we may even add a new member for NUMA hint in `struct > futex_wait`. My consideration was that avoiding the get_user/copy_from_user might become measurable on !PTI systems with SMAP. But someone would have to build it and measure it before we can be sure of course.