From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YT3PR01CU008.outbound.protection.outlook.com (mail-canadacentralazon11020083.outbound.protection.outlook.com [52.101.189.83]) (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 B3829AD2C for ; Mon, 16 Mar 2026 00:41:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.189.83 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773621682; cv=fail; b=XH5KwCO+OJCGHBBLj0Vk6utiboPGaaTJtTu8vP/cgCXpnuamELVeGDfvfUPmpo4y5vL5nxQmRuX7zgIXPaCMjQetvDCtSW6M9OPb2e9Ud7SilrugcF7/FmGX3rh7rbHPurbLT5mLCZHDFoWjJhk97yIMiX0cBynuq4il47c/CJw= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773621682; c=relaxed/simple; bh=oZJkq+farJpX7XuQOVHsIWjs7ScYiiRuuhpfm5lLq88=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=HKJd1139tsmMMhS8SfnRmJnIULYM9OITlD5aX2Ur6CKRoc9p3aKSY+BrBmVVSH3GrtG7S737st21kTAWCk3B3DFRQrPWeZ2quB4n8OOssEt8wIjP8Bt6USiDJFP0+1oGRtGauD4CEee/wr+5wXc5nXbigafB7xlbS0HkruHytGo= 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=kVlIN43M; arc=fail smtp.client-ip=52.101.189.83 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="kVlIN43M" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l/u6MgK0b/PFz/g9GNZ/DdY4mEDqSddj9h/O01TLVIf4WMaE0Lyu+u0WDONhWInTLN6b9afLjwc4lGfdY+mf6Sw6uoESdtJkhXlArnnX0ta1xhGMlQyNu26EK7tdD6sW0zCPuxkzoD2+idHUGmeIqcTb/XKtMySVa7zq9UpG2YD7L32kOY/iz2aVBSP7oRpvLSIGY/opbbtA444F+wISgZHATla7oxDcZ3auM/kTpn5HqUP/s/7A/2v/Fdv/7QibuL+IPJfI4A8ChnaVMW04aBDtPpKmMi1eZ9Hv4r8MULVW13XV87kBMMdqgDc0mUjyboR6694thViebqmWt/ZJjQ== 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=M07V7xaLjg86TcjQtzVLk5H+MFPemy3gDGdvikrYRkQ=; b=IiBYi0/LoHx9/SGQZZO4pXnU99s0/d2uG4ZVEg/iKyjLaHUVRyCAGPNVYKIBlPveZh2PbImrRDxjXuaD8h2am+FKrh3jnO3jxVFptEu5wz3vW949UttB43srPvGFfil01OrvCW+mJhLmZuIEh6Dq5JrmjwbCUX9PS8RGP34AXpDyd2IxKagGxa19kZ0yx50956WporXobxDh8YPVEQgu4fikExQvOzMoPmcdiFeQGn3FZia+ORI28Z2eF9Fxt9i4snZtl3Wdx+jcHp50GuLENlA2RORjkbAHcUrAUCw3Dc5ldTRB78jAyTnogEnKtZBhnenuCS+EeDhH4z9zdZ7kYQ== 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=M07V7xaLjg86TcjQtzVLk5H+MFPemy3gDGdvikrYRkQ=; b=kVlIN43MI3Vp4Ga1GWaNzr6OZA5ydZziQNafnajTO7EmqVuItXDqa24FN5fG9U5taqVyhpVLNaLOZECo2tcKn40b0ZEbGfsrgxTBoBNdLqq2PVSE6dKjfOd442rbYEzXWRsQ6NTHg/IOXTj4Jt+1XbO0wQjLo/Wic5xm4tnxiDFJAvKJ3Hj/ZQqwp+d/LqrmQGl4Kt7JngcxYG4zBA8uY+Cr3psuhLMzCTuH5fHs9glyNzFYohZgZWwOKb2iLsbr6eyV+gBv6bwJeQ5llYyq1L22h8Z2MPkCoz2dKlCuLUduBAi9Wzf6g7rf8BtJwH6kU37+YwIqEiReg3Dcqb9G7A== 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 YT2PR01MB10538.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f7::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.24; Mon, 16 Mar 2026 00:41:05 +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.021; Mon, 16 Mar 2026 00:41:09 +0000 Message-ID: Date: Sun, 15 Mar 2026 20:41:15 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] lib: fix compare_delta parameter order in percpu_counter_tree To: David CARLIER Cc: Andrew Morton , Josh Law , Dennis Zhou , linux-kernel@vger.kernel.org References: <20260313175424.132735-1-devnexen@gmail.com> <20260314144508.ba3504b4338eb1ae84017028@linux-foundation.org> <65bc70e0-c9a8-44b7-aa8e-3ffa31b0ed75@efficios.com> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQBPR0101CA0311.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:6c::14) 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_|YT2PR01MB10538:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e921639-845d-4417-64dc-08de82f4b794 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|376014|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: F83a3hUg7osKMxV/0xiWWs+g+YOWtBb4V8ogBXfhxWmRi46A3FsomR+MSisM7dyp6uTptlynxJL3r0zeZakaddbxqyWXbZBy2pOzSKLVWFO2KF3/Wvp4SWV42Pwdc99QPNYC6MwuNaXTjX6jdFogDZjejlAJfYsEhtOTdLYnZIhqXFzfVYupmREq/6RLfyasHUjsVHGXStXaPUdT5iVcQ0TNsvC5R/sva/HQAX7rlVBheOJFOOJF2lgFshJ8Fksm+upffNK2TvTkWrYGtlmfEb/lmCkoJk28YxLxWv3ilUgK9w4WxQPlrMUFvTCVPi/3uKV/lPnJeMErivJhnG/NxyUrCULEYRSpLFDs9lupS/j7jojPhVwOR93ySEF0QOoQ82LJvwrDjMB+MMvAUwGdcE99T1JfL1yjSBcycakkf0mujpq4G0ikUyb6+4fwqe401607U5xsu9+GRsq06193qSar+AcN7p3s/psaDpF92UX86g1HUr/K1UBZsbzQgWzQhES/FW9SkSQRQNF0xyAo1gnlW9FZssDtaPVQSPnQh/urQtS9Dq//plDE+kJAPYhbJmJIVzQJvKu1ORZ+e1Fap82mBmKlXNyPPg+MmWJj2+xWQvbsHcZDsw3JLt5b0ihCGyeopb/06OVfmBdrP6PzEivh/sCtM3bguTv7gKDYrukn4UFNy6iMLG6tj28yjCfo 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)(1800799024)(10070799003)(376014)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y2hkT2hPUEdPMmdKK1poQ3d1aDFZdVJ2ek9DYjVZeEZxT3I4OFRBcHR6MkRz?= =?utf-8?B?R1JkSTJTcStnMEZsbHNXQy9pblc3TkduMFFRaXFWZFhTN0l3UkZiRi9TR2lS?= =?utf-8?B?ai9vekJzYU4xK3pjNjNIZklGcVZTZ3AvRFZYa1d5OXBjS0w1ZVhpZDFpUExP?= =?utf-8?B?OUNlYUFUVHYwcjlqNUF3b2JNL2tZbzRLcDFGSXY5V1VpOG9TbjlsUEZOUFdl?= =?utf-8?B?WGQ0R1V2TFpMVVc5Tjl3bXduM1ptYSs0b3BoOGlEVkNnMWZRRmpNVXJVbHlp?= =?utf-8?B?ZjZndnR4SUMrRnIveHFYMWhONzB5cFFwSFJJWnUrNGFqRWMrMXN5c1Vack5B?= =?utf-8?B?RUwxaFUydnpXSEhHb3BWRjFVNFJZV3Y3ZGdDa0x5S0oyRWVSWHFQY0szYllG?= =?utf-8?B?aVYzeDZUcHJnUVdDTXlFaTEvRkM4NWM3YjNHUy9Kakx3WGNBem9OOUFvd1R1?= =?utf-8?B?WUlKaGs5QlVxMFEwTzViNHk4SmlpSS85MTZZeitTczFzdUtqKzUyeGw2TWVs?= =?utf-8?B?bUMzNkM5bkV2SVhvLytsWS9WWmh0M3hyMkdHY2lETkRYMjFiRFRrMHNoZXZE?= =?utf-8?B?ZXI4VlJDcDdkSE5qZUdiSXp6NHR3T2FleEt2R2ZyRnZjQ1kwODNiNSttOHlM?= =?utf-8?B?VmpPblVWVXU1cjc5bVhqM3QreklaRlpaVlUyZ1Jta0FtTjhPNXRXVW9FKzVa?= =?utf-8?B?S3kwNVdhZWFXYk9JdG8xblUrbktyVERXTUxqOHd4N2JkcnRUVjVVWTZzaUpO?= =?utf-8?B?Ulk3b3ZpWnYwOVFxaUVocW1sVUhWZEQ3MmZlRjAvYWsxaFJhT21xR3FyTmtT?= =?utf-8?B?cmdVN0lUYmNub1BTUjUvSkhSTkU1NFg3MnF4VVdtRXYwSUk5dzdkUHdQYmxn?= =?utf-8?B?dFZEQ2NEUzNBMnRtbE1rV1BCU2lnMS9DODJPbGwxeno2NHl4S0tFL1E1azVl?= =?utf-8?B?L05CT0RSNHJ6UjQ4bkRjd3NOeFRpdEpnTG1qTE12U2MxNWZQakphN2xqMmFl?= =?utf-8?B?RllBb1pJd1cyTHNlbEtZU0tEemNKYXhZNTRvNmM5R3VtaWxBbkx3L2llQk5D?= =?utf-8?B?OXhLTW83V00zbTN1Y2FMTFhVTTZLSGdqaE4zZy9yTlVmVjRSZWtKRStQdElR?= =?utf-8?B?eFNDK2M1cThuR1hub3kxZG1FMy9YZGs3SXNLSW5oUFBOdlFUb1BuTGsrZDZa?= =?utf-8?B?ZkxEOC9qWlR0ekFrQU40R1NldldwQ2VDNEtZY2FvdkphdDJsN2ZESkFoZkhh?= =?utf-8?B?NUVrWWlYc1YzVzUyeGxrb2pDL3Nob2pNaDNkMk5VNUFCUCtiOHNTL3BoQTQ5?= =?utf-8?B?aVg5SFYzWHB3eEgwTmJMLzMram9NZDhIRXU5RGV4NGxyT2p3LzlZY3l6MDh5?= =?utf-8?B?RkxJOS9KcG1samZROTVCbFB1T0gzbG1lRVRxQmRsSStOV1RnR3hnT2R2emYw?= =?utf-8?B?aWgzd296ZkpmYWVwclJGWXN0YjhWR3QvaVBVT0wwTTB3dytqYjFPTzMvUVdv?= =?utf-8?B?dnRveUllOVFRUmdBTXk2TG5XV2ZaT0dCME9XaE9LT3crZUxMc1lBRDVUN242?= =?utf-8?B?d1VJSU5RT2xKV21QeG9wL0FpTXJUK1h6NzM0N1I1bHpRTTVaZTloRHNhTVdM?= =?utf-8?B?ZGYzZWxWMGdlQnRSekJBRVRCeUdaSHNYNjREYUpXbFQyRFh4SXFaY2svUDVK?= =?utf-8?B?UEUwc25qUHI5ZVkvLzUrQjlPK0Z1Vm9WWWpkZlBRSFN0ckRERDM0RUFzR0JP?= =?utf-8?B?QTI1Mm5uV3BkejdSdy9iUlRpay9sWUJRb3Y5T3E5WHJSQ0VtMy81bUQ5Zll2?= =?utf-8?B?d1RCRGdyZDR1eGRBZERISXlUOUFXcWNoVm40MHRIc0tBQmpTZWNnTm9NdTZQ?= =?utf-8?B?ZkR1QUx6a1BvRUFvRDByY3EvUHY0b2F5alBrWFZsVW1YNG1jMi9DVUpycDZq?= =?utf-8?B?RGVKZnhEYnQ2cDlvMzhwM0pyMkJzZ2ovNWdzR285bEUxaENsdUgzS2g0Q1h1?= =?utf-8?B?czd6UXpWQTJzemZsNWNsNTR5YjZpeEcyd0VxbzcwZS80emxsSFFlejN2c3Qz?= =?utf-8?B?K2VXdlp5TUhuWHNJa3ZqU01DeXpHVytXU0lnU05SQnhtS281OE9tZGFMbldV?= =?utf-8?B?cU1JbXVjM1dWQVRmNGpsUXJiZEQ4WTRyVmFiS2FpN2FxaTdWKzRvVUExM1ZV?= =?utf-8?B?dVd3YkFrOW0wcDM4YU5uMEJrZ2RSUUQrNkV5TE1ma3N2aVJQckszbXIzLzBD?= =?utf-8?B?a1JDNUpjTTJQSFRwV2J0alUrdlh2N3cvSWFnZVpuWnlRaE8wRHliV01FaGVD?= =?utf-8?B?Z3RhQ3RhRGNVZ29HV1h1L1NaNEREZDlCbUlHV1J5TGEyMXcwcHBSU0RDN2tr?= =?utf-8?Q?N98rMsZ6/BeD8l2Ju93mreIrXD1nhxex+LWzrvHAHA0MD?= X-MS-Exchange-AntiSpam-MessageData-1: C6bIViNAnV9BIy9pW3Dh1xOH271yCLKgN0Q= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e921639-845d-4417-64dc-08de82f4b794 X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2026 00:41:09.8037 (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: rW1lrpHqi2rQ0S9SS8KCIsL3UdMVegV+grEus/soMfnUI+h8JtJ3dUsPIdSjOaTY8BFmLOYMItUv78c3wspS8cx5MQCAkWAVDx3kwwGpGQI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT2PR01MB10538 On 2026-03-15 20:05, David CARLIER wrote: > Ok what about this revised version ? > > static void hpcc_test_compare_value_boundaries(struct kunit *test) > { > struct percpu_counter_tree pct; > struct percpu_counter_tree_level_item *counter_items; > unsigned long under = 0, over = 0; > int ret; > > counter_items = kzalloc(percpu_counter_tree_items_size(), GFP_KERNEL); > KUNIT_ASSERT_PTR_NE(test, counter_items, NULL); > ret = percpu_counter_tree_init(&pct, counter_items, 32, GFP_KERNEL); > KUNIT_ASSERT_EQ(test, ret, 0); > > percpu_counter_tree_set(&pct, 0); > percpu_counter_tree_approximate_accuracy_range(&pct, &under, &over); > > /* > * With approx_sum = precise_sum = 0, from the accuracy invariant: > * approx_sum - over <= precise_sum <= approx_sum + under > * Positive deltas use 'under' as tolerance, negative use 'over'. > */ > > /* At boundary: indeterminate */ > KUNIT_EXPECT_EQ(test, 0, > percpu_counter_tree_approximate_compare_value(&pct, > (long)under)); > KUNIT_EXPECT_EQ(test, 0, > percpu_counter_tree_approximate_compare_value(&pct, > -(long)over)); > > /* Beyond boundary: definitive */ > KUNIT_EXPECT_EQ(test, 1, > percpu_counter_tree_approximate_compare_value(&pct, > (long)(under + 1))); > KUNIT_EXPECT_EQ(test, -1, > percpu_counter_tree_approximate_compare_value(&pct, > -(long)(over + 1))); > > /* > * When ranges are asymmetric, test values in the gap between the > * smaller and larger range to catch swapped accuracy parameters. > * Determine which range is larger at runtime to avoid assuming a > * specific relationship between under and over. > */ > if (under != over) { > unsigned long a = max(under, over); > unsigned long b = min(under, over); Looking at the resulting code, I wonder if the a/b variables are useful after all. > > /* > * b + 1 is beyond the smaller range but within the larger. > * The side with the larger tolerance must return indeterminate, > * the side with the smaller tolerance must return definitive. > */ > if (a == under) { This can become if (under > over) { > /* Positive side has larger tolerance */ > KUNIT_EXPECT_EQ(test, 0, > percpu_counter_tree_approximate_compare_value( > &pct, (long)(b + 1))); "b" becomes "under" > KUNIT_EXPECT_EQ(test, -1, > percpu_counter_tree_approximate_compare_value( > &pct, -(long)(b + 1))); same. > } else { > /* Negative side has larger tolerance */ > KUNIT_EXPECT_EQ(test, 1, > percpu_counter_tree_approximate_compare_value( > &pct, (long)(b + 1))); "b" becomes "over". > KUNIT_EXPECT_EQ(test, 0, > percpu_counter_tree_approximate_compare_value( > &pct, -(long)(b + 1))); same. Thanks, Mathieu > } > } > > percpu_counter_tree_destroy(&pct); > kfree(counter_items); > } -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com