From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YT5PR01CU002.outbound.protection.outlook.com (mail-canadacentralazon11021118.outbound.protection.outlook.com [40.107.192.118]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD23D350297 for ; Thu, 12 Mar 2026 14:05:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.192.118 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773324308; cv=fail; b=NJxxIh5ERF05DHP5EZItu2T2V4Jm90CWsmnj1bDdk2L9CqFYOXSCI+MoYSNm7guOYPb4Crs7uGDC7nXwJdni46xG1Uu/9RFfVeW6IJZ2SS1Kn39qclN66Yd2fXByt6MbRqbrB+9/MTfatOpCb1+g2fjXbDfe9wNov4VXHQjE2MY= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773324308; c=relaxed/simple; bh=o5W++UUew+B9dpuVnD8KarSPMzu8/VCdZYnaeTCn9iA=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=L5xeRYQHS18+5CSZUtEXpt7iCIh91REnzPEzAZsd7nIhiDkoZSlAAyZj0ScBq+ZzVOuY9I5zjF/WCCtCzyVt28MEWhyPq/DyqJJVXitTB5QGt9ZSBzau9S2EyQ69WNHLWslC+TSprs/K9knXQw6hNt4pTwg4/b0mVkXIjUmC+dg= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com; spf=pass smtp.mailfrom=efficios.com; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b=kTSGtnoe; arc=fail smtp.client-ip=40.107.192.118 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=efficios.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="kTSGtnoe" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YRXOUm4Mq1BEVQo2mAmV4xj32nNbzJnLxZQVi1U2w7o6xekrzxwjEwfJOrZ3Fq40M0pC+acmTP62OTTGByRg3/jdIpyqkj11++jxZzfQeBt2cGSsa3rU+6iX2dw6FS56aVIzXYQ+EThSadMF3tz1SwRwO8M6omB8h/m6VqR2wUZvtalxHvjyHX5ID+1BQZjXBIA2khccYm91FnPe7WCeGnkX//PKEhBF0CzyuDJmsaw3/AoIThrfYAjJR8fUMg850cXN3pK7pMF/h+WbU0sGAzdgxtmQfNXILpV7d3Ihq9ryqfuaA1MKYn1xRiIMoxiKfOGvf/9fGZBTnvNq93dzUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e+TQUPPlah7uGWYxtQZel5fWDmNofYx2JOlpD5MDkVw=; b=shQZ9E0x87NgnqqBH4Wwnub7ne+y9vNfbfqSIQbYL/+K3bz0Fp0N+rXNyPnZ8Q8ej4njQ/WfNjZtv++zEvFhLaX5KTBOfWXiUfPQmxh3cRKLWIHJazoLEkp6TOKePUfmHyhJWSgfNw/d+tsqbh0IAQWADM6g+JKjUZIUzDO+wSESCG/x4iPQxRMi2gDLZQnWn7gQC5iIMxDZqyFZz6hCLdca8uJP5vPkBUtrDBim2t/1JmbbdMuvxtRmS0FjHvCnqTARLDHCGVST6PfeNMkTQMJU42+GE4g8m55sTDfcP2ccjoMfBi1ng8mugHXlR3LgdcixMMrpnxz+fuqeZ2nB0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e+TQUPPlah7uGWYxtQZel5fWDmNofYx2JOlpD5MDkVw=; b=kTSGtnoe/XsQoYV+6zTuaIUnws/lPz/Gf2Ied0H+fw5rHv12dfpv4loJiD4b6CZ9ldlvZShxAloLqQ7oXRO+Xfw4VWBbRM3dXPuvZF0rHA8Bno5GhOZ0EiykhBlhfimBTDgZ0sGRFSTk5eu/kgZrqIrEbW8qivNgM2c6SvCjpYrHyhBUOrmAoYJObIq6X33+5NSDdbwWXdUKbCXqjuYqEvuT+WZrNddDkb8p80CCVlqeGi5yYdrCQ3K7j00Y38Dgo3l/6/nixpre9whd/VlWIu7A01x/hrCEFBKOkX7GvkiU+uoNSV33HNo5P1BlJZu6n1dUZS4kwiZq2gukvMXksg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by YT1PR01MB8507.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:c6::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.16; Thu, 12 Mar 2026 14:05:01 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1%3]) with mapi id 15.20.9700.015; Thu, 12 Mar 2026 14:04:59 +0000 Message-ID: Date: Thu, 12 Mar 2026 10:04:59 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH] futex: Introduce __vdso_robust_futex_unlock To: =?UTF-8?Q?Andr=C3=A9_Almeida?= Cc: linux-kernel@vger.kernel.org, Carlos O'Donell , Sebastian Andrzej Siewior , Peter Zijlstra , Florian Weimer , Rich Felker , Torvald Riegel , Darren Hart , Thomas Gleixner , Ingo Molnar , Davidlohr Bueso , Arnd Bergmann , "Liam R . Howlett" References: <20260311185409.1988269-1-mathieu.desnoyers@efficios.com> <2993f778-c4f4-4aa8-8e42-1dca4d5e29e1@igalia.com> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <2993f778-c4f4-4aa8-8e42-1dca4d5e29e1@igalia.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: YT4PR01CA0395.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:108::27) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|YT1PR01MB8507:EE_ X-MS-Office365-Filtering-Correlation-Id: 4efe443a-8bfa-4062-8a2f-08de804058ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: hjPBiN1Fv9q0m/oxG1/R7VQW/2n0AyrroxslcoRq1pu2mJqCMTRhj1zuBe3UMfYaN11Zog9hBfmiaoKZllNV6IgwWJ902OlUnUesAsq48a6LZa1RKqLCuAGcRGtIJiRAjmPAO8/Pqj8Dj6/MamRTrudpQ31XfBi7i4xMAag8f15bIotmMCgM5geD7KlJTuOHOs9tHtOA2+ntamv657YHcMqcM2TaW0M84qoKGjwWBtymMWA3urfia+IPnKdisbE0vLqwaYhWwIWPUqW7AE2AnzcCPorS+Bv/tgPu8njsRdTVU+MKhr/Ra4fCigG2FaXgsd3ycsQmrAocIi+2DaEGJPRSSTsEDktkeqmbNyUQriA0EnDREMiyHd7V4OSKtUROrZK4Jn5Hix8mTueuzzPxDCws5xrbxVYEV+Tvb84EsP7LoPyeGy0UQqIPLg+zBfigQkJD9Cg67RiBDuf+ZdJmF1vdDYVgN+0icXNF9iQ8ET/oQR2Xb6uOwvBKb3lHme1qg8pwX/Fhrub0NsOaVvlO3xXOY0uVJggAuaiRVRP/BOQjX6+bKhBnldhhuEOUXDN7No4NCg9oV5gP6bm0GZyocjuOtPVZ33RAosm7uU3h75d3vnfZaYt3EwGW26HHtROOKCmXfafPuUDGLPFSKg3cZ/jdjRCmEh9shzdj53C7w1lbrausjnKiEOshZOTURnIa X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?djVFYkc3KzcrVGFuMHhUN0JJaEpUTnFXOWp4b2FSU0VLUmJnTlBYS2dsTWxS?= =?utf-8?B?amk2bmdYRHNZTnA2V0JwYW1FUDROS20vTitSNkgxVDZTR1RURnNlWkVHa05Z?= =?utf-8?B?NDFvY3djTUtkSVN0cjFucGh2TExSKzVUY3MyWTVJT1I5VVJpZlpCR1JubER4?= =?utf-8?B?NXhKQzg1VmM4cEF5QTVMbU1Ca3F0dU9nbnVCZitpdFp4RnZ1RDFkWFlMN3hY?= =?utf-8?B?T0ZYQlNDZDVNallRLy9DajQrNkc4WlNsUFl4bEg4dUQwTHY4M3BaYXJsTE1Q?= =?utf-8?B?YnlWTDMwbFI1a0xQczFMQTdKVDFCeThVbkdoOU44UmhwU0hkSHIrUGVMWVR2?= =?utf-8?B?TEUwYm54RllVdGpIdVJXWjZKOGxDcE5iQTFVek1MUzVPVEwrbU95U3VyNjNO?= =?utf-8?B?ZW9ERTE2QlZRbE1TL2hvTkI2a1NyZ0JvSWdpSHhSOGVuNXhsNmZTa3FhK3NX?= =?utf-8?B?bi9ORWkyK1RabXJvZ2E2TnNWeS9wY3padDhJaGpLbkI0U1Y1K2FFdlFqRHNP?= =?utf-8?B?MWpNVEp3cktxeHRNTGhOSXR5MWZFSWFmWGEzR2VDTGMydW90dzJaVkFQK1VI?= =?utf-8?B?cTZJWTYybzIveDVMSkcvbDJBZ0s0S01zV3NDR3cvbG1Cb3hvN05ETUFTaERE?= =?utf-8?B?dUo3THVKWkQxU1UwejZSTXhiQVpDRU5UL2o1UXB2UzlqQmhWeFNoQkFUVm9z?= =?utf-8?B?TFNGb1NtQ3B2OHhveENhNllhU3NxTjI2OGhxVTdlVEdRcEJ5QkhPdWtNVGYv?= =?utf-8?B?ZkFIcitHSXRrODZ0UG5QYnlLcXUwT1dUcTl6eURNSGh2SDZYMWhUMnJxTE9p?= =?utf-8?B?dWp3M3lEZFFXUCtJUnNYUndPQUxla2szU1BBSGJXNm9wdHJlZmJJOVhsRnFh?= =?utf-8?B?QUxTNnB3MTR2MC9zNVRzRzl5ZzJaYjRaSEJaL1BrNW9FMUc2blh2cHRkNnBh?= =?utf-8?B?NjFCSGErYk8zTmVZQWJETzhIeXZUd2ptdTZTWWZQNC8yR3FoeHQzemk4Y28z?= =?utf-8?B?N1Q0RDVDRWhxc1FPZW55dlRrNHV5NWZkbnZkeUhZaDk0dHpmRnQxYThhR0hM?= =?utf-8?B?cklsUmcyY3NwcWpBSFo1SFNrL1V6QnlrTFhpQTVwNnpraGFCWnNUQzJnK3Rx?= =?utf-8?B?c0RaK1VFZldyWHBwSWNEL2xCVGM1YVc4WHhqdXExYmZycHJaVmlmTjNSWUFV?= =?utf-8?B?Q0xXT092ZHlwRVo1ankxZE1oTitYNGJtSHRhbytDdTRCd3h6RFhHeUpmLzVP?= =?utf-8?B?NUwzM203NXB2UkZoY25HanYyNjV6bWtXVUpYUmkvZmFDY3JKbVdGcHVVWk1u?= =?utf-8?B?TldmT2RXdWdTME1UOUJ3dG1EU283bk9GdFVtd1o5THpHckk1OVhTeXowNFhs?= =?utf-8?B?UkRsdFIyUkxpaXYycWhTRUMwZU14UUxwSXEycmpRR2NkR1V1a2s4bkoyc1N1?= =?utf-8?B?QUg1cEdPUHcrT3dFOGcxbitVL0Q0YW9yRDRDNXRGQ0Y3UERyWDJNdHRGYUhW?= =?utf-8?B?RUN5bkJEbEJjVkM1M2l5bEU5MzVlUWRQVGdMdWc0eDR5L0lkYi94bmFrUElN?= =?utf-8?B?MGYrWWszNDZPcTZ1M1V6RlFMVmZaK1VjbWxrSmcrZ09ZTDRQN0RjM1dISHBu?= =?utf-8?B?aVJnald2UVUzT0VqSlRpRm5Ib00wWkZBcHVaWXJJaElzVFpQc2lyRDVwZ2lj?= =?utf-8?B?SDJuRXlmVTRjNHFhRWdzQTk3THVZTThsdlFhaTl5V1QvNU9sMDZuby9FaUYz?= =?utf-8?B?c05Rcm1VdzRLaVplZENBWXhLakU3ZjZaeXp6TnExMW5hLzNaL0gycG9aTzZs?= =?utf-8?B?TE15YnA1aWxsVEFpQjk0dm5MdDQ1ODNhTVd3eE9PUDFSNnN2WFFQNzVWWWxm?= =?utf-8?B?ZzFBT015ajUrUVZtWjV0VUFwTmFyMGhzUnZzeXkrS0pwQk9jN2xZaERoWGFM?= =?utf-8?B?alVOZXJDVG5HdVIzTFhXZ2owRjJ2NmY1NFE4TDBZdjgrTk9qU0xNTGRqUDc2?= =?utf-8?B?blEwdHQ5RjVHM1JuVDR0b213ckUvWE9lSWhTbXBWWmRRbHFQb3hFU3lFY2Fj?= =?utf-8?B?bGJrbEZxV2svWTZ4QlhYOEtSdUc1T1J6aFBiczAwZXN3UVRvaHFld3F4K0wv?= =?utf-8?B?ZWFjSVd0UnZkaXZWUjRaNmltSGFmcy8rOXo3OTBpcGZzamZicmEwTUxsQzUv?= =?utf-8?B?dDA5bStCZXFlZThPVGJYamtSN1ZtT2xZTUNkWTcxNG5GcDEycm1tdDNNcDNW?= =?utf-8?B?NXRlYS9Gd1JoNnJoNklYOGNFNW8zZ2s3dTQvV0RwRGI3TEFMZVgyR2xsUm9j?= =?utf-8?B?MmtRQk4rVEpJaDd6T1RqSnVRWnV3Zmd3SzZwRi91NUQ4VHowY2l5YUhWaENX?= =?utf-8?Q?sl28CsLRwBUcdx7E=3D?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4efe443a-8bfa-4062-8a2f-08de804058ff X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2026 14:04:59.4447 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YVnQ7cgMsm7TGVGV1+D+4oLag4bOeU5A4lo5SRmhfLtA+G9Bxe9TqT3YupMFatQLYWX1J4MNZWTPJrem5v/0TwMuoh7IqPRq23GosBnzMQ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT1PR01MB8507 On 2026-03-12 09:46, André Almeida wrote: > Hi Mathieu, > > Thanks for your patch! > > Em 11/03/2026 15:54, Mathieu Desnoyers escreveu: >> This vDSO unlocks the robust futex by exchanging the content of >> *uaddr with 0 with a store-release semantic. If the futex has >> waiters, it sets bit 1 of *op_pending_addr, else it clears >> *op_pending_addr. Those operations are within a code region >> known by the kernel, making them safe with respect to asynchronous >> program termination either from thread context or from a nested >> signal handler. >> >> Expected use of this vDSO: >> >> if ((__vdso_robust_futex_unlock((u32 *) &mutex->__data.__lock, &pd- >> >robust_head.list_op_pending) >>      & FUTEX_WAITERS) != 0) >>          futex_wake((u32 *) &mutex->__data.__lock, 1, private); >> WRITE_ONCE(pd->robust_head.list_op_pending, 0); >> > > [...] > >> + >> +u32 __vdso_robust_futex_unlock(u32 *uaddr, uintptr_t *op_pending_addr) >> +{ > > The interface that I would propose here would be a bit more "generic" or > "flexible": > > __vdso_robust_futex_unlock(void *uaddr, int uval, struct > robust_list_head *head, unsigned int flags) I agree on adding explicit "uval" and pointer to robust list head, I'm not convinced that the rest is an improvement. This would require the caller to deal with errors, making it more complex than a simple replacement for atomic xchg/cmpxchg. "flags" could be unsupported, so the handler would have to deal with -EINVAL. The "size" could be unsupported (e.g. 64-bit on a 32-bit arch), which would also require the caller to deal with -EINVAL. > First because we have FUTEX2_SIZE's, so uaddr could have different size > here. Even in your proposal, "int uval" would be limited to 32-bit and would not cover the 64-bit size case. Making this input parameter a void pointer would remove type validation and adds complexity. > And we need `flags` to determine the size. Also `flags` is a great > way to expand this funciton in the future without the need to create > __vdso_robust_futex_unlock2(). But adding flags leaves additional error handling burden for the caller. I'm not sure it's a win. > I would also have `uval` instead of `val = 0`, because even though the > most common semanthics for futex is that (LOCK_FREE == 0), futex has no > predetermined semanthics of what each value means, and the userspace is > free to choose what value they want to choose for a free lock. Agreed on adding a u32 val parameter. We can specialise the vdso for the size, e.g.: extern u32 __vdso_robust_futex_unlock_u32(u32 *uaddr, u32 val, struct robust_list_head *robust_list_head); and eventually add vdsos for u8, u16, u64. Thoughts ? Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com