From patchwork Tue Jul 22 14:58:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dora, Sunil Kumar" X-Patchwork-Id: 116777 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 54BD93857BBB for ; Tue, 22 Jul 2025 14:59:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54BD93857BBB X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) by sourceware.org (Postfix) with ESMTPS id 511653858CD1 for ; Tue, 22 Jul 2025 14:58:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 511653858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=windriver.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 511653858CD1 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.178.238 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1753196323; cv=pass; b=s4NQ5YknmjaIr77SJFlszkW6agXK0EAoY+QSn7OSYLcDLB0x3gC9OIZSn+g7WD0taB2X3KgqgwG3kfSlfZuQqhpq/3H4b5kymK/WsHalcKlQEmOXelb72XrpdJXhtDv+slpkoT1yerh7vr9tOkRdhUrqlDpzGIH2zyZ05pfhZaQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1753196323; c=relaxed/simple; bh=SKDenB5hSvgfWMkJ2IIu8k/T5tz06W5TsDKHtf9tyDI=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=rv96+4gYhqnCeae5ycqgTcVyQFMjItjmI4eFFDBR7VtBtCdBgijnTnySjVKLHeMPc0tQ+rUf7aQVNcHHGQGARgEVWy1tFX8fg+4vuW95Oiua3AJBqqVwCUggcrz2obM/q9VItHXJU+DBnam+AWY1OqbNTk3LHi8ggiHOMXaCOFs= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 511653858CD1 Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.8/8.18.1.8) with ESMTP id 56M5f5wY3558072; Tue, 22 Jul 2025 14:58:41 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2062.outbound.protection.outlook.com [40.107.244.62]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 481vqu8xc9-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 22 Jul 2025 14:58:41 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SnTDrGVWUv4heYyYqRLvoRLV5uHumAxNDDaLRi1EtzLqi1pC0wEN7cpfbhSNZMiE/tG88MpKfbgrcoYMkpSPQSvJ6lPg6R5qDlb/QMupxJoLEVcTgBj9G2OML/xfoXGnBWShXCAxQOgvIPTolvXusAJ/VSf3Io8kJ9OphTHKHvayTQonALujOyrjKBVU+uwOycHf6TemZmSf/KS2OVq7s0AfYnnvIgXgB1+MTmh8ZqFGnBjRa4cc/ljmcRTaWPjyosPhTgxzrHuP4TYaodNIukL//pmVmix8OgvcwGj1oSUoo662Eg+3EhtrYDjRuwNNurVX/FTzANppmkwCOdkzyA== 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=ALGaJDsr+M3ubyaWzLPFvDiYsIIE6soCIczxi+RVklU=; b=Y4Vs/8SjeaCWKjl/Ebffqr/1jh243DnSgQch1ahyg4foa0OsMVNgRw8WCQlnQ+r01OEZV73a93bBT7La4OGeEv1n/+saf5L8ZslrS8WaYaSbvIv/b89xR8EJnpjr2+ctK4n5XMsahelInBEwQhU7gFxhZLfWgIDUTYMWSn77Ei+mt06Tnvzcf/S54V2Pjv9mJvhMSpmYqU8P3fLzwA620OxN5Xa56ZokJua5pWQgaGGy7PL5d+VN2ux7LOJ9wsnCqZsptDxZ035fXzk6+ueIS61iguXC2FkXsJhPHebWxkwRmtDwU47N+IXebZBbGQlUZgSlriF2rbTZG20jdKxFpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) by BL3PR11MB6313.namprd11.prod.outlook.com (2603:10b6:208:3b0::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8943.29; Tue, 22 Jul 2025 14:58:37 +0000 Received: from DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d]) by DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d%3]) with mapi id 15.20.8943.029; Tue, 22 Jul 2025 14:58:37 +0000 From: sunilkumar.dora@windriver.com To: libc-alpha@sourceware.org Cc: sunilkumar.dora@windriver.com, carlos@redhat.com, fweimer@redhat.com, Sundeep.Kokkonda@windriver.com Subject: [PATCH 03/10] [2.36] nptl: Remove unnecessary catch-all-wake in condvar group switch Date: Tue, 22 Jul 2025 07:58:14 -0700 Message-ID: <20250722145821.2214847-4-sunilkumar.dora@windriver.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> References: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> X-ClientProxiedBy: SJ0PR13CA0232.namprd13.prod.outlook.com (2603:10b6:a03:2c1::27) To DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7901:EE_|BL3PR11MB6313:EE_ X-MS-Office365-Filtering-Correlation-Id: 8dcbf117-dbee-4e43-efb5-08ddc9303cc8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: NrMqwSwsSJChM+CTpis6dP255wtgjWfRR+bEI7UwtxtlujpD9ji9y7+kRqCKMyTEgbUMM5EjluHhJdTaN7EBNRI3WBUQC8IvDyB6WxckPAo2+hCy4io1EV2buUCXXYxSmJY+SW/YAvCLa3rhqb8L2sKhah7AYdO1+iR/HcEzYnCJsLMWEL5a9luYRKEShiFsg98IC9r90j3isnM+QuS8r7SB+NtoIiT1DOMGP16P08dEtwCFPmpkyGlzSWZ4PqVi6hI9whYlQWwhRT9Xrbqww/NJVXaKvtdklBDv6eAFD2V0gBRbZcHBGfpkkoh22jL+mlvfgHgjnE34AmDpdVqd/mTxSS3vVaObrE0grlt+FdO1Ga/iqMilNcPrnr9WHI7SAPXqwSA4VE/aIDDuxRsxNKhPmrKg7aUIEgjLF1+ETLLKMAP306vg2PaBAvNXJ5HoWdqtwTOgvfQj17bOmUbdMzktlNply/et3jyhPqnQtjfP5MhOGoAaY2KFtYBWwkwOLqv7YQE4RX3FmzETpxv3gT9MH4dye/kf20/FJbOWZt2TlIFGh8ceGndwC/xu6r5KBlvmtMw/7kWm1hecKBWchRd4fPkI/XkNRIW8jFyGEtTfC8lxtkVczB2dox04l6qYmrjwI2eTE19zM6ePHz8GGb+htVsBu7ztmnVtGPpSpaW7zEdYfbIJRm4Zmr/IHUCAxRmdModF3icqcN/8M+fkhQeld8wAUtuJ2al0iES2UTHTJsh/VPXA1qf/XzQx7vj9dyVlouR7ZbC96SXxPq1aV3Pm30x1SbE96hdeVZE96xSNaiZtE/aLp0+rYz4z1MG/2LBvULU/qLlPmFFNhgw4GBr7LmfXXkwpe31B1a3+zJhCjjrXetakz64idnboWIVi65T2dVz+cT1ObseG65zKZV50Js6O1+gQ4heOql/M8FWXjkd1H5OoYmrd+WXfZlmyQZ1FzOonllV9OBVhheoNwP0Zk1T5IccuvdAheDbbkU2FUaGbVNkXBD0NZLyWBPwZPYTuspE0MrhnDytT+C42G1LEEChNQhmOkwx5ou1IYURGcbIMEEH67DUyNNB9dCAtnhtQa5BJ0HUOAf32XWbuHukLZB8u5co6Sf9vuR5Ag/CK+Zdbq+3DdG2klJxH89QkjsjQQ8pHGXttbK0wVzndb7iuqmhBrTGVb8a71SrBNxTnE4ORW8YBuEG0eT6o0pC0PfQc3BzOM/GGmARr9PnUR2xfY9rQ0HeYrS1zLQMUMV96swl8vOpzitGLX3MbgqwdyzKN2vP5+zEaxLvNeTu5+qoMX1GWORttWxxHZmqGtSvSXl1anHC1o+hOElOOGBvR1cQ87EHXaUx2ge5RUVnRLUpzJAvZYmDunoO/3KNpg6BMZboKI1JDrv7mGNxaTqClIg47/tpqkpuEhdMZm2GY17ASPz95/zs5wn5mCZzrOlYQYnMEPHI4IIplh4ivfWWTbXGoDqPTxHqc8sCp4uFTCg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7901.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N55S8eTIhdf5RrS7tNLs0+T+M6EfMV/3YU3VC9LhNuhLkmxBMUsvnvrtAINsc0jtFRAytKGtLjOD+mZq/eaUbCeCBahH9o6BIiCT8C8hs1GDD4wT66Ide2EJGFOqghNMUdQUfctnX2HlY2XP0X6We4RS9W05K3LyIwqXPUabSTa4Svf9lDs49dt/F0B5UcVXRzddL1NPEmWz1Gb4v4BiLq3Hs928PDAGEyM4fCvFyLy5yFDDNq9hyUabIujbVqrYtOoJFYnW8SE178Zx3wCbuTwx2BIcZCvscNyBTYtVFfG8CRoEBkyyjLVHiIoZsLoIc3wg/wkNft1ZSFNYhrOWIRA9mvDsRx/6OrmQAUO3LZMlJ8iyaT5VsDHs+2kvIBWA9HZSZLvPAR6uFNfaEIo8DaSSlHJgl6TKDC9UbyrO47PLyPlsVh265F9L6GRu5d8K3c/aQtplK6b0XbPyRIwUjx0YYjkfgUHT0axrUrEQWF89k8MXNCcJQdIYjYngdz1pbNBQseGgjH3of//jn+IaqPchv9cdwSYlb6bHeiLDs1zu+dnr++xId8m2uqOtMJGzd9maqc8QiEfXB75yMdJsnUR+TO3fzjai3Uxzis07GcqHtrnAr49DCCyMyiQXPO8t2ktF9GifGmHugqeqI18HLIqYmu51eK+c0fIs0RGnbEdL7id4oegtQ74PdDCbzpQPctKfEK9lYk3Bux8pdav5Nkc3my1GyXAwppw7uYCEwPJ+5yf+GCIOISSGyw85ohXjtv40Cu18knmADFm6iDoBKIngYafjdGSxbq7hsrQQMVMzbyM48782HudIkq779BXiqeEFY19kElF/IcrUzz7ovLjrkK23B3XGIJaKFDu2UUdfV30h8iJrBlX+bOOxQ+6TTYOz0MTXsHv8nIPmjwbhHdn7y8BlgwRRGr1yZEU4KjKB0Nz0/VxphT91xlknKoYky8nBYSbZHHpBeO+xykGlPIrRGNC3OlJF0NX6muYM6kIx9au7+UpFR7x29rskYg9sQBq0+otgnzsuZYRlLz4/I2JudZbkCUYj9ZTFVHzUOao5EDYMDKEN6oj1U3w/TIj6kJ+Ot2Ibs2qzp13bNNzAcTnz0vwVJ8C3mN6f1a/+jWSdmZTd6/0Rg/+M/GCg/W4S/VsbE3QV5ksmWNPcyZyEu7T7QxW/pnYQawPpCE+9sNE3+VHY7bcqWKpehHszxZW6nwrDukRU6MkfsgbWN5a4335xqPbblYOIWSohMd5oCRxf+Bde2wrZVRCEciWN1P60YQl1MDUVttBJMtrGvatD9VzQl0+O1TXwgrvx3YCaGAsOMPs1gZF7V2/5+xZ17n3OuOAInOZW7GkvBwWOftlFAZXmWhzikDb2cyDCm1blC54yd9oSRyjt9suVpfiQNSe6PmtAKhj4nY+cT8qoA4cckns7xTsZYyzLAUHvqxolRvwk2VKgyKMCZfHMg/Pai5Odsbpljc1oa4bzuVFa9e1W4SD6TGBEKSC6XlCQhnNWCLuXiud3BJyTwm9pvc+no2Kox/uU5GLTWFHqZkXbh5Yx1y2JG+2+7ExFLcEZ1RVgTIN8V14m5/qOKVIq1s26jietqSTK89cHPhuxwbqQTVQdrg== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8dcbf117-dbee-4e43-efb5-08ddc9303cc8 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7901.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2025 14:58:37.3340 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SCQ3Xp9OU/+GJxhVYtJOC+hsMfDYENlhHGgW2EYRTK79mlQxcvRnEdblTqNZ6Gq3Q79H7sH11D29ePofHBhcMx/PIV3B7H8jkS4CXC5d8bE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB6313 X-Proofpoint-GUID: Lhb16HdzpaLzdDzEkLe0jj2Dqbcve-Th X-Proofpoint-ORIG-GUID: Lhb16HdzpaLzdDzEkLe0jj2Dqbcve-Th X-Authority-Analysis: v=2.4 cv=AbqxH2XG c=1 sm=1 tr=0 ts=687fa721 cx=c_pps a=7j0Ltmo+QGRCGvpdpD29zg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=t7CeM3EgAAAA:8 a=93FKfIyiHXBki5GTU3EA:9 a=0bXxn9q0MV6snEgNplNhOjQmxlI=:19 a=FdTzh2GWekK77mhwV6Dw:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzIyMDEyNCBTYWx0ZWRfX1WeFclDaY3/p urgS+tO8CbHRR6XZEmwoKjEqqgagR7eIrqoqPgt2sSQBRHUhXCJ1Cx76KnScGoa1ZiD1sb334G6 td2NW3fc5iD/DIxHd/32droCXKZlNfp/9UcEpC7KtQe8k+Tbq9Qyg66VqNvqR9OeLGZvdEuFjOA OjvaupiPiUK9JJdqtkwCiAvv4SWzsQ5ZrOraP8sYLt8sJHeIoz+k6Wpx6sLowOPXd+HAi9+khc5 BSFL+3p24ftdUCc0MMctim0u0lmWKwD6WnPy6F0ezZOkPCGLrNtJdEzBrLZEBC5ZbEMXLinXfgO ffj1l+OodrBDpOkQC+CzsDi99+zswMrUXqcfwuv2k/RzAkBD7sSFltCkVRfgLxLPrFxYr0WJj+3 3U1yqZPW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-22_02,2025-07-21_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 malwarescore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 priorityscore=1501 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2507210000 definitions=main-2507210183 X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org From: Malte Skarupke [BZ #25847] This wake is unnecessary. We only switch groups after every sleeper in a group has been woken. Sure, they may take a while to actually wake up and may still hold a reference, but waking them a second time doesn't speed that up. Instead this just makes the code more complicated and may hide problems. In particular this safety wake wouldn't even have helped with the bug that was fixed by Barrus' patch: The bug there was that pthread_cond_signal would not switch g1 when it should, so we wouldn't even have entered this code path. (cherry picked from commit b42cc6af11062c260c7dfa91f1c89891366fed3e) Signed-off-by: Sunil Dora --- nptl/pthread_cond_common.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c index 350a16fab2..f976a533a1 100644 --- a/nptl/pthread_cond_common.c +++ b/nptl/pthread_cond_common.c @@ -221,13 +221,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, * New waiters arriving concurrently with the group switching will all go into G2 until we atomically make the switch. Waiters existing in G2 are not affected. - * Waiters in G1 have already received a signal and been woken. If they - haven't woken yet, they will be closed out immediately by the advancing - of __g_signals to the next "lowseq" (low 31 bits of the new g1_start), - which will prevent waiters from blocking using a futex on - __g_signals since it provides enough signals for all possible - remaining waiters. As a result, they can each consume a signal - and they will eventually remove their group reference. */ + * Waiters in G1 have already received a signal and been woken. */ /* Update __g1_start, which finishes closing this group. The value we add will never be negative because old_orig_size can only be zero when we @@ -240,29 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U; - /* If any waiters still hold group references (and thus could be blocked), - then wake them all up now and prevent any running ones from blocking. - This is effectively a catch-all for any possible current or future - bugs that can allow the group size to reach 0 before all G1 waiters - have been awakened or at least given signals to consume, or any - other case that can leave blocked (or about to block) older waiters.. */ - if ((atomic_fetch_or_release (cond->__data.__g_refs + g1, 0) >> 1) > 0) - { - /* First advance signals to the end of the group (i.e. enough signals - for the entire G1 group) to ensure that waiters which have not - yet blocked in the futex will not block. - Note that in the vast majority of cases, this should never - actually be necessary, since __g_signals will have enough - signals for the remaining g_refs waiters. As an optimization, - we could check this first before proceeding, although that - could still leave the potential for futex lost wakeup bugs - if the signal count was non-zero but the futex wakeup - was somehow lost. */ - atomic_store_release (cond->__data.__g_signals + g1, lowseq); - - futex_wake (cond->__data.__g_signals + g1, INT_MAX, private); - } - /* At this point, the old G1 is now a valid new G2 (but not in use yet). No old waiter can neither grab a signal nor acquire a reference without noticing that __g1_start is larger.