From nobody Fri Dec 19 19:20:15 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2041.outbound.protection.outlook.com [40.107.93.41]) (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 4E15D14AD0D; Tue, 15 Apr 2025 13:36:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744724198; cv=fail; b=LztC4e8Sh4CGvYGtgsipNWX+AnItvNeXazK0AkJ7k9TJTgqBrGwak0sozjROTTJrJS7vgcEspF/ZLbFIXXj17+QrgXpVgw7dcpqpTNMLh74v+hjDDIV3DvR6u5Zo8+ES7QoNXmMq4eXsCQGtBZHS6gcoYO8EpF/yVXLMwseevrM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744724198; c=relaxed/simple; bh=QPOkbZSaTsv41VHFGW7yDfcZRVp3XP8WZhwS71BU+sI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Qdt79uj+uj0mZGd8oTiB2Ig4gF4XHc3cLs5xvIduVJ4slaRZNm8U2bpFSXRQrXUxJB03z/1Mpbxez61Ynh46ahgwse9RJB4rML0vw8xAgmySEoBpzbuF/406SNg1BmP2EypGkSbJh9cayX7L2UIQxaZZegZ9frxbIMSI7of6l6U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=Nvp7x/K+; arc=fail smtp.client-ip=40.107.93.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="Nvp7x/K+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jQ/IZ2N019CoRBpMxZRD5iwOmLpHhfwo6X+JNuGRqyxtd9NgbM1LRjxjR9T7QYGAPTGo0iCw7qe2Zh9qrqUdy5mixm2cobShmm8Ww3tR/S8BfR8Z7ws55yeuYN8VBx+kyAd+7dvEHxiLB4llccpuMVhv059A14pzE36qiqIZBygXzAaD9Lo/k1tqRLb1sfuTkLk0T6tKV8foLVdpDrwjoCCRAdibeuODuftqa4+92CI9HmuqjPfssF3pbGuc8ZAuorDpJYNJCV8bO2VvWyhjPEyvC+DLl+4GxTiFf4KYz82aR0BzSDZ3inTJ7+0ijKkiWMlaxD7tBDTG0Z/wTkWpWg== 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=Au/kVA0lTk+kNTsFjV0YJEfx9ZCiFsfubc0HvgdVpSo=; b=PvHgePldnyqzcF75o6zVwlBu6VUgzsrteJ72HNRlSO8MwP6vQHVUTwyj5gIz36jaZ9sf2yl0MZbsWqni+VLsO+g3nLgLBaCKLv4gwyFjEGE+htLJ/88+3PoqRdnu3MEzZ5G786ck32cjq2tjHIYTO97l1hQn194n0EMltmqUm9LeVcLsJOqwIElwvBMlEXTk9k3STsCO7eBpcvP5Z8jqaSASHex3yRwHBVk+OzRVPeGnL2Fc5BOMD+UTbhgafAfK2hFKSneNMOXcyOPo8NMI+3obJojalF2jfRgM5uftwCAvXLVoagjZ/JG1qQ5D4ldq9UsGjkp1F9cAkysvFwp0Qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Au/kVA0lTk+kNTsFjV0YJEfx9ZCiFsfubc0HvgdVpSo=; b=Nvp7x/K+sxAZ2u7Z4BgzPFnak2aDcD1pdJ4YMibHT+FOirhkUgqHH/1TCHxWLuOAyHgv0Wk1HcPXeK1KvE259rFKo/sO1OsBtL2xlDuG+YjM3is5YXp5v32HkT6YsuyOl73CNXTqhh+DTmRnRt8rRbHrgC/hpOWSskTTlApkIXMGgBb7KYKeUSx5sOCyrQ9dLimiLEkt+l9H4DqwF+Juhrahs/X9BvDjmi55Lha9mn4ZfSzZsKtCccipIXASo5/7C6szWowgkuZEeANu7CpAbiRLUNhX97dbwHqNYw5mnB5Hadv3ow1/qRvwSvYYUE6RqBXWeA5sJUAhrOH96dHMiw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by DM4PR12MB5868.namprd12.prod.outlook.com (2603:10b6:8:67::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Tue, 15 Apr 2025 13:36:31 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%5]) with mapi id 15.20.8632.025; Tue, 15 Apr 2025 13:36:31 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso Cc: Joel Fernandes , rcu@vger.kernel.org Subject: [PATCH v4 1/2] rcutorture: Perform more frequent testing of ->gpwrap Date: Tue, 15 Apr 2025 09:36:20 -0400 Message-ID: <20250415133622.1563137-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250415133622.1563137-1-joelagnelf@nvidia.com> References: <20250415133622.1563137-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BLAPR03CA0038.namprd03.prod.outlook.com (2603:10b6:208:32d::13) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|DM4PR12MB5868:EE_ X-MS-Office365-Filtering-Correlation-Id: 169d5074-d482-4a16-b0d1-08dd7c22883d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?FZ8/40QmH89tkosod5sd/K03oC7sOFU0esclWN7eYDxnXdhIoOedZeRy8eel?= =?us-ascii?Q?e3htVmhkCXT7lPek9XCLsuAp6gOeiqxa3SXloBIZRyH5VYzYO2gLQhNcOqzx?= =?us-ascii?Q?ZIwZxkZTNIiApa1MfeckbUYaMAzUQhFdU9Hv1NLPrW9jgSL/VNuQPcMxJY81?= =?us-ascii?Q?EI6K9cy3NuxK1y2fueuDaC1tHI6Sg+CSDNRTdDRUAXhDklzQhmHUWNxhE44O?= =?us-ascii?Q?AokjBEqwWB/qonDppo38IO5WXi7T5UU3E5pVbKluTvvQnVIVrScJqU4MNdSo?= =?us-ascii?Q?pIPUczPdqcNCt6VKRGBkORUUaHLeo7u89r+mp2xJJfVu4MjnlYwsr5YHITzB?= =?us-ascii?Q?V9Q3qEXmkc8YOb1rqaOg3wEHgMB2Oy4vv+2assyvQQoAUploraJQb1LKnGgu?= =?us-ascii?Q?/+nlOWnD24rW2jLCvqTYLjHhM2lbQHWginHWLWvXFTPiYso0D8vsRK93pCpZ?= =?us-ascii?Q?ohdXHDPYlDAqONLpknb4BFJX+Y2bskyNHbuWSU4wOH5RlLKa+JeA7+YE7HuB?= =?us-ascii?Q?GqbJ5fiqD0clvbxwll30UhEvwjXoRdoHujaIIcjc6rUHgfwVdMn7K//TvMuG?= =?us-ascii?Q?EfWMRChdTOcRh6igMtztFOoE207Ou6+KSpSneZtV7+UkZtXsUArQZvuVT/kt?= =?us-ascii?Q?zbUj5y3VBBVWJYM7OnsLwUaDWjDw3oCUJ2GkQrobShSQ12nrAZndg90kg2B8?= =?us-ascii?Q?mi4Tp+6A7gFdMHuQLT10CQIBCcnREEYeeUX2ZNU4B8zmvqpsIFIe84nIvDId?= =?us-ascii?Q?3F3qqKRNaOECgUb0SqXVwM5C2x6WVzXyjL+ipRNpleCkNmZCly6T6QyRR7yW?= =?us-ascii?Q?qze4hU0iO/Mq0X5QuI1kKq67w3INr1w/mnSB6hnGdbRu4p4qZ8HcA3/FnqAp?= =?us-ascii?Q?ZBiu8IY30wb0ELjNvC5xMQii5u4CWNce8WzunJnjD5Vd6/YhbHizdB9IuMd0?= =?us-ascii?Q?lzBtWpJAu4xaCRkaMaMqd217ndQgwlqCnkR7TsAq0h+4xYF4HE6C2I2t5IhC?= =?us-ascii?Q?61+qZKHEkwPlSAULoGK/HucJkK2yYlIM7STmR4EemBXiJwWLaCaH9PaeFDKE?= =?us-ascii?Q?1oQYAPVMRcci9IpsLUnyGUWLq8ZA/NWOgNGJ3uv4MoC2hfLcwWQBggIRkK2r?= =?us-ascii?Q?cf0155kUGbosWi9O0cDqYGGCUk/jFpUleVKipyBPzHGXgz9GfeBfwrOyI2kh?= =?us-ascii?Q?J+3GZtd/Iw1YeSBmYcXoqlXv7x3vZc6BfeYMTb95ssI2FhcYDd7dK3FBOT6C?= =?us-ascii?Q?vhd8FLE6LqaSpAcUpSfgeuLqWJH8Kv8WddDj5qtbKPuJpuEkJtDhxQdS8ggh?= =?us-ascii?Q?HQGQGQF/BdiQxUVLyOia0JeFFmO433tG80qfkY07nq+F/lkw1/tDkRKPGrxT?= =?us-ascii?Q?bdybiyvQpAKv+EJYYNJjwp/uQqR8TMT+w1Wjlo3j/PsskkCIjjqfENnI5sUG?= =?us-ascii?Q?QNAMNpAYf78NRya3LbV2IttFeD7jHXMVx1u2lJZj8r34FZfkgfpmmw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fm1hLsZuStTpRzpg7ogue7dc+j/yIucyDCRTz07x9Af8Cks1WyLMYTuBSDyi?= =?us-ascii?Q?4if2aeZ8HGPZKTyzS3FkhmHhyHMjMVEPQGQgW+JDt/8olIOtu3B773uvUB8O?= =?us-ascii?Q?tCPLEcR3RVxwxENsePWpCgPi1upiqtSLx+UNlzYrGMUFmiQkWia82UEaIeFn?= =?us-ascii?Q?64ZhaSXWvvjjfwlaijAqJip8o4K00NJg0Gbndh2lXmB1IyAcp+C8ooT2E/JH?= =?us-ascii?Q?chqTFW2ClGi1XlzqnvPALnby1p1RBwSiYMblzxcA9a/wRTKU8sKMFBD1M2nQ?= =?us-ascii?Q?rnkeKjUtNfAPbf8eFUEHcOS6Qo7kfD7xXeKgrZLIIYrLSc+Xks0GULPoKoik?= =?us-ascii?Q?nXfz2VIgVldg0WSx069Y4PHbL8h2FIqDK8IVCJc9iHLqZWM9GTyeNKDJjMN4?= =?us-ascii?Q?wtlV3/BlrNCOVr80dpotUJgtAbHPdsl6no9vvaSMvBaCtSP30OnjT7JdsBDi?= =?us-ascii?Q?BDO6OZ+aoimpdEElbz+IfXmyzVvYMO8Z17bfzjAEBw0kc/sLEgK6qvQ3Wuuk?= =?us-ascii?Q?OskGoXlbX4lSGTVgejaJAB1XdXkmPY6Qa6B6bnU6tCPlILIt8fJeHBORN0ih?= =?us-ascii?Q?E4HnCt9cqiM+L8ikifN9Br4Q+Kr2V71lUsxTWAzHxKF7fAub1kcCpUnDJmMQ?= =?us-ascii?Q?NBrBUEKE7D+47YjgmebghirVehj2+1B/6hhvSiR+ifS/ze1xMI/nIJNksahV?= =?us-ascii?Q?kaiaKTI7sBggELwgCWCU8gLbVRt7xPp9ZR2085yqL+T1IIcFx/cXCRlPmGYt?= =?us-ascii?Q?KC/uAYLM7ckqmiQWlFDS4/awq1HVGEKLrJiM4LRkoC3EyoB+YipQOYCW+M2K?= =?us-ascii?Q?Uyo8pDjgYS7C3jmfqZiwKHLcu8clA3gfTUE2HgQ96boU1SwFf91FpLK/0YWX?= =?us-ascii?Q?ibBiIFSY8ciqXQiL8HiE0avyH9688pZww3ahamxOfv6IynpD+Ct1mhPf/DX4?= =?us-ascii?Q?9mseNhufHk1NkEv7QNchV7RHM2fY3dwY3YpXH11YUbb907TAZYYnojkWDmcJ?= =?us-ascii?Q?Fadsmg028by+JoR7DGDav2Do/iy35F6xI0fxiC77K6z10bj+G2O98h3tRtOd?= =?us-ascii?Q?w00do7xa4bbPl1AwVP5h+Mh//VLLZrI1x6Cncb5nThDNV0lS4qZ8I/I4wubV?= =?us-ascii?Q?hwbG+QD0g3b41aEP8ebjmaa+EVsXWjnC2Ju0pNnhpml8Rqe7yrl4jPRCK3j6?= =?us-ascii?Q?JS0PKYLpiZYr8/geSCXpTbv+5cHzWkEq0XEyH2cvECSRMPTwKFt64Wy2Jzdr?= =?us-ascii?Q?MHr67DpvUvol421BKH3kSTZr8w80x63NZ3UFGsRmT+wyE0rCKFEynRVlvOta?= =?us-ascii?Q?+MgFLCsZRcdeZAYDZyAVKj36anvh75KoDh2pqSpmMgcloZ7aQn2kKzV3S+Nm?= =?us-ascii?Q?0JS/iEZxr1ls9mHkmbOmEw3AqkCEsq6gjzbbAMrD+fRcEDvR9L4WH5K2y8Tp?= =?us-ascii?Q?xGBbTdDERKl2L+n86d953vlQ/DgKWmlhGO13N2bBT5oai9sGuy9ixJyFFjM7?= =?us-ascii?Q?d2xiBvEgbw8psaR3QQmaUQeSttKRMHTYY7m4m4bMtRwDEwMHBzNcuyUoYTLm?= =?us-ascii?Q?Xwdqm6hg5DeHlICXHxYNmsSitcqbXNMVGnBAn4PR?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 169d5074-d482-4a16-b0d1-08dd7c22883d X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2025 13:36:31.4237 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rIYK/KtCZHxa7him4uKdtRWVtAIOu0VzO3TkeK6aoRmHZ7aUadh0pPv1arBMVVFAPf3tdnTL2oltQ+h7CEZsCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5868 Content-Type: text/plain; charset="utf-8" Currently, the ->gpwrap is not tested (at all per my testing) due to the requirement of a large delta between a CPU's rdp->gp_seq and its node's rnp->gpseq. This results in no testing of ->gpwrap being set. This patch by default adds 5 minutes of testing with ->gpwrap forced by lowering the delta between rdp->gp_seq and rnp->gp_seq to just 8 GPs. All of this is configurable, including the active time for the setting and a full testing cycle. By default, the first 25 minutes of a test will have the _default_ behavior there is right now (ULONG_MAX / 4) delta. Then for 5 minutes, we switch to a smaller delta causing 1-2 wraps in 5 minutes. I believe this is reasonable since we at least add a little bit of testing for usecases where ->gpwrap is set. Tested-by: Paul E. McKenney Signed-off-by: Joel Fernandes --- kernel/rcu/rcu.h | 4 +++ kernel/rcu/rcutorture.c | 67 ++++++++++++++++++++++++++++++++++++++++- kernel/rcu/tree.c | 34 +++++++++++++++++++-- kernel/rcu/tree.h | 1 + 4 files changed, 103 insertions(+), 3 deletions(-) diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h index eed2951a4962..516b26024a37 100644 --- a/kernel/rcu/rcu.h +++ b/kernel/rcu/rcu.h @@ -572,6 +572,8 @@ void do_trace_rcu_torture_read(const char *rcutorturena= me, unsigned long c_old, unsigned long c); void rcu_gp_set_torture_wait(int duration); +void rcu_set_gpwrap_lag(unsigned long lag); +int rcu_get_gpwrap_count(int cpu); #else static inline void rcutorture_get_gp_data(int *flags, unsigned long *gp_se= q) { @@ -589,6 +591,8 @@ void do_trace_rcu_torture_read(const char *rcutorturena= me, do { } while (0) #endif static inline void rcu_gp_set_torture_wait(int duration) { } +static inline void rcu_set_gpwrap_lag(unsigned long lag) { } +static inline int rcu_get_gpwrap_count(int cpu) { return 0; } #endif unsigned long long rcutorture_gather_gp_seqs(void); void rcutorture_format_gp_seqs(unsigned long long seqs, char *cp, size_t l= en); diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 4fa7772be183..74de92c3a9ab 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -115,6 +115,9 @@ torture_param(int, nreaders, -1, "Number of RCU reader = threads"); torture_param(int, object_debug, 0, "Enable debug-object double call_rcu()= testing"); torture_param(int, onoff_holdoff, 0, "Time after boot before CPU hotplugs = (s)"); torture_param(int, onoff_interval, 0, "Time between CPU hotplugs (jiffies)= , 0=3Ddisable"); +torture_param(int, gpwrap_lag_cycle_mins, 30, "Total cycle duration for ov= f lag testing (in minutes)"); +torture_param(int, gpwrap_lag_active_mins, 5, "Duration for which ovf lag = is active within each cycle (in minutes)"); +torture_param(int, gpwrap_lag_gps, 8, "Value to set for set_gpwrap_lag dur= ing an active testing period."); torture_param(int, nocbs_nthreads, 0, "Number of NOCB toggle threads, 0 to= disable"); torture_param(int, nocbs_toggle, 1000, "Time between toggling nocb state (= ms)"); torture_param(int, preempt_duration, 0, "Preemption duration (ms), zero to= disable"); @@ -413,6 +416,8 @@ struct rcu_torture_ops { bool (*reader_blocked)(void); unsigned long long (*gather_gp_seqs)(void); void (*format_gp_seqs)(unsigned long long seqs, char *cp, size_t len); + void (*set_gpwrap_lag)(unsigned long lag); + int (*get_gpwrap_count)(int cpu); long cbflood_max; int irq_capable; int can_boost; @@ -619,6 +624,8 @@ static struct rcu_torture_ops rcu_ops =3D { : NULL, .gather_gp_seqs =3D rcutorture_gather_gp_seqs, .format_gp_seqs =3D rcutorture_format_gp_seqs, + .set_gpwrap_lag =3D rcu_set_gpwrap_lag, + .get_gpwrap_count =3D rcu_get_gpwrap_count, .irq_capable =3D 1, .can_boost =3D IS_ENABLED(CONFIG_RCU_BOOST), .extendables =3D RCUTORTURE_MAX_EXTEND, @@ -2394,6 +2401,7 @@ rcu_torture_stats_print(void) int i; long pipesummary[RCU_TORTURE_PIPE_LEN + 1] =3D { 0 }; long batchsummary[RCU_TORTURE_PIPE_LEN + 1] =3D { 0 }; + long n_gpwraps =3D 0; struct rcu_torture *rtcp; static unsigned long rtcv_snap =3D ULONG_MAX; static bool splatted; @@ -2404,6 +2412,7 @@ rcu_torture_stats_print(void) pipesummary[i] +=3D READ_ONCE(per_cpu(rcu_torture_count, cpu)[i]); batchsummary[i] +=3D READ_ONCE(per_cpu(rcu_torture_batch, cpu)[i]); } + n_gpwraps +=3D cur_ops->get_gpwrap_count(cpu); } for (i =3D RCU_TORTURE_PIPE_LEN; i >=3D 0; i--) { if (pipesummary[i] !=3D 0) @@ -2435,8 +2444,9 @@ rcu_torture_stats_print(void) data_race(n_barrier_attempts), data_race(n_rcu_torture_barrier_error)); pr_cont("read-exits: %ld ", data_race(n_read_exits)); // Statistic. - pr_cont("nocb-toggles: %ld:%ld\n", + pr_cont("nocb-toggles: %ld:%ld ", atomic_long_read(&n_nocb_offload), atomic_long_read(&n_nocb_deoffload)); + pr_cont("gpwraps: %ld\n", n_gpwraps); =20 pr_alert("%s%s ", torture_type, TORTURE_FLAG); if (atomic_read(&n_rcu_torture_mberror) || @@ -3607,6 +3617,54 @@ static int rcu_torture_preempt(void *unused) =20 static enum cpuhp_state rcutor_hp; =20 +static struct hrtimer gpwrap_lag_timer; +static bool gpwrap_lag_active; + +/* Timer handler for toggling RCU grace-period sequence overflow test lag = value */ +static enum hrtimer_restart rcu_gpwrap_lag_timer(struct hrtimer *timer) +{ + ktime_t next_delay; + + if (gpwrap_lag_active) { + pr_alert("rcu-torture: Disabling ovf lag (value=3D0)\n"); + cur_ops->set_gpwrap_lag(0); + gpwrap_lag_active =3D false; + next_delay =3D ktime_set((gpwrap_lag_cycle_mins - gpwrap_lag_active_mins= ) * 60, 0); + } else { + pr_alert("rcu-torture: Enabling ovf lag (value=3D%d)\n", gpwrap_lag_gps); + cur_ops->set_gpwrap_lag(gpwrap_lag_gps); + gpwrap_lag_active =3D true; + next_delay =3D ktime_set(gpwrap_lag_active_mins * 60, 0); + } + + if (torture_must_stop()) + return HRTIMER_NORESTART; + + hrtimer_forward_now(timer, next_delay); + return HRTIMER_RESTART; +} + +static int rcu_gpwrap_lag_init(void) +{ + if (gpwrap_lag_cycle_mins <=3D 0 || gpwrap_lag_active_mins <=3D 0) { + pr_alert("rcu-torture: lag timing parameters must be positive\n"); + return -EINVAL; + } + + hrtimer_setup(&gpwrap_lag_timer, rcu_gpwrap_lag_timer, CLOCK_MONOTONIC, H= RTIMER_MODE_REL); + gpwrap_lag_active =3D false; + hrtimer_start(&gpwrap_lag_timer, + ktime_set((gpwrap_lag_cycle_mins - gpwrap_lag_active_mins) * 60, 0= ), HRTIMER_MODE_REL); + + return 0; +} + +static void rcu_gpwrap_lag_cleanup(void) +{ + hrtimer_cancel(&gpwrap_lag_timer); + cur_ops->set_gpwrap_lag(0); + gpwrap_lag_active =3D false; +} static void rcu_torture_cleanup(void) { @@ -3776,6 +3834,9 @@ rcu_torture_cleanup(void) torture_cleanup_end(); if (cur_ops->gp_slow_unregister) cur_ops->gp_slow_unregister(NULL); + + if (cur_ops->set_gpwrap_lag) + rcu_gpwrap_lag_cleanup(); } =20 static void rcu_torture_leak_cb(struct rcu_head *rhp) @@ -4275,6 +4336,10 @@ rcu_torture_init(void) torture_init_end(); if (cur_ops->gp_slow_register && !WARN_ON_ONCE(!cur_ops->gp_slow_unregist= er)) cur_ops->gp_slow_register(&rcu_fwd_cb_nodelay); + + if (cur_ops->set_gpwrap_lag && rcu_gpwrap_lag_init()) + goto unwind; + return 0; =20 unwind: diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 659f83e71048..6ec30d07759d 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -80,6 +80,15 @@ static void rcu_sr_normal_gp_cleanup_work(struct work_st= ruct *); static DEFINE_PER_CPU_SHARED_ALIGNED(struct rcu_data, rcu_data) =3D { .gpwrap =3D true, }; + +int rcu_get_gpwrap_count(int cpu) +{ + struct rcu_data *rdp =3D per_cpu_ptr(&rcu_data, cpu); + + return READ_ONCE(rdp->gpwrap_count); +} +EXPORT_SYMBOL_GPL(rcu_get_gpwrap_count); + static struct rcu_state rcu_state =3D { .level =3D { &rcu_state.node[0] }, .gp_state =3D RCU_GP_IDLE, @@ -757,6 +766,25 @@ void rcu_request_urgent_qs_task(struct task_struct *t) smp_store_release(per_cpu_ptr(&rcu_data.rcu_urgent_qs, cpu), true); } =20 +/** + * rcu_set_gpwrap_lag - Set RCU GP sequence overflow lag value. + * @lag_gps: Set overflow lag to this many grace period worth of counters + * which is used by rcutorture to quickly force a gpwrap situation. + * @lag_gps =3D 0 means we reset it back to the boot-time value. + */ +static unsigned long seq_gpwrap_lag =3D ULONG_MAX / 4; + +void rcu_set_gpwrap_lag(unsigned long lag_gps) +{ + unsigned long lag_seq_count; + + lag_seq_count =3D (lag_gps =3D=3D 0) + ? ULONG_MAX / 4 + : lag_gps << RCU_SEQ_CTR_SHIFT; + WRITE_ONCE(seq_gpwrap_lag, lag_seq_count); +} +EXPORT_SYMBOL_GPL(rcu_set_gpwrap_lag); + /* * When trying to report a quiescent state on behalf of some other CPU, * it is our responsibility to check for and handle potential overflow @@ -767,9 +795,11 @@ void rcu_request_urgent_qs_task(struct task_struct *t) static void rcu_gpnum_ovf(struct rcu_node *rnp, struct rcu_data *rdp) { raw_lockdep_assert_held_rcu_node(rnp); - if (ULONG_CMP_LT(rcu_seq_current(&rdp->gp_seq) + ULONG_MAX / 4, - rnp->gp_seq)) + if (ULONG_CMP_LT(rcu_seq_current(&rdp->gp_seq) + seq_gpwrap_lag, + rnp->gp_seq)) { WRITE_ONCE(rdp->gpwrap, true); + WRITE_ONCE(rdp->gpwrap_count, READ_ONCE(rdp->gpwrap_count) + 1); + } if (ULONG_CMP_LT(rdp->rcu_iw_gp_seq + ULONG_MAX / 4, rnp->gp_seq)) rdp->rcu_iw_gp_seq =3D rnp->gp_seq + ULONG_MAX / 4; } diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index a9a811d9d7a3..63bea388c243 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -183,6 +183,7 @@ struct rcu_data { bool core_needs_qs; /* Core waits for quiescent state. */ bool beenonline; /* CPU online at least once. */ bool gpwrap; /* Possible ->gp_seq wrap. */ + unsigned int gpwrap_count; /* Count of GP sequence wrap. */ bool cpu_started; /* RCU watching this onlining CPU. */ struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ unsigned long grpmask; /* Mask to apply to leaf qsmask. */ --=20 2.43.0 From nobody Fri Dec 19 19:20:15 2025 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2059.outbound.protection.outlook.com [40.107.92.59]) (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 0605C144304; Tue, 15 Apr 2025 13:36:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744724209; cv=fail; b=FZ6brl/vX64gOtNKhfh/e1bwXx08moL0A0SSQxAGihVtDkDKrffxRohryHMKq5ESFZhaxAlNN8FtlvZDxxcJcT4xvwRAGAwrJ6NxFp+6v1QGpojiCYWtP+tqEXS3kIQqtFP1GWmpuWgQjQ6lbOguYEFt0/Y3SVujDukqPadBWNE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744724209; c=relaxed/simple; bh=zRN3AAgYfZk5Md3GUNrojX4m3COTD452oHOlpQ+2YiI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=BS7LqkZotIg5hhnAPcQYVhafzqYdXXqIOiC6ewQtP41y/7HKklmoWzAY99snNfLIje5fFr/TWqW482QtpzITgg+62TsLg/ZhxXI3INVQ7gktbWgNg//8+2cPB11itfDNyvD6l9kYJCv203XWlMyQ/WbD8vsnc2CJ6gw9kJbNDpc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=lD54X55+; arc=fail smtp.client-ip=40.107.92.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="lD54X55+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cAGk2w1x3xjlbe0bgy8lnqKxEV1T4aC+VmZehO6m0ce2KFoWKaQRMYC6ufi9y2WCkhHWcv9wRenn4LlMv8juMTIb8rhKc1IPvUFaCVc9Scy0dICcUM2JNVxzWTrSt3B3NWpLOPrzRKviRdSl6z1S7hTvSwCkT7KbhI8x0/B9hM3DA/HEoRWIZrIIuubTPOD3s4P5RrpOBO+LbSkXMesizgkrRhpx4+Ushp8U2nbzCtyeGNYP5/0pPa6hDsisktbNUPAIHm/7MJU2tzbC6ARoHsL0OU7NJz61QpVS3Fp+yg5bvHxYU3t39d0QmcFKe3/KBms3zG8uu9aP8Od6oP1SkQ== 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=oUnprEcCPnSDifmar/p0T3SZHbnNh1eEY3zl5LYRp0c=; b=Cw1dkN0CLisiqHYwM2Z5pYLrFgpiVMurIlxlS5RTnCbNzsmeadp32NNKXyN4CBs78ttgUekrjRADzMCCI4nt2cUfJrbCdXGmTAOXIcxOIP9oGboT2o0nfb+H6azBj7LeNDfbwvjNdXm2F3+W9ixMktEqc1O4DIqO5rbR5BGdqcDX6EqT7dLyhGCa383PuVFJCUA1jWJHiAo3e78uSRjZnG7th0BpHoJjlSpNpRFyM9bzEGKQusYhiwlCA90OGfCHnLC398BofLvmi23ylZlvec7sd4hnYpmL9REdXMHslBfprJMicFI88BAc4LcU+L/3LZUMldotUPzjHLAqU9Oy2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oUnprEcCPnSDifmar/p0T3SZHbnNh1eEY3zl5LYRp0c=; b=lD54X55+ilSYglMtxu/NTAqKuuvgjKXenmXdbMwc57JWTV6kLEzj89ytZzhAC7tp3DZdkGOAnUjdm0wbJC4IUuxfMH0h0ZR/2eHY2eNni6ZJcy9XolB6v/SFNuJ0DNKpMOkjV9d4CLj9XneAXPG3a+eKx27QDTqJBmdOf2AGWXQMdGv1xO3vzzSTDQ/Aw3dJhpn1HKUbicv1dM6whBc/qqz3zK+pScyEyQiHfD+Dwg0hj1+N5ZVRKTus7/A7Td3VHKRuFk19UWffkoPgTklxCHBmIhPwV8AeomJ9FC3nzc4+oXmDs2Ytkdns0Fs3jLWj9ju1seKn/9jmeRrwMAL8Xw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by DM4PR12MB5868.namprd12.prod.outlook.com (2603:10b6:8:67::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Tue, 15 Apr 2025 13:36:43 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%5]) with mapi id 15.20.8632.025; Tue, 15 Apr 2025 13:36:43 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Davidlohr Bueso , "Paul E. McKenney" , Josh Triplett , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Boqun Feng , Uladzislau Rezki , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Shuah Khan Cc: Joel Fernandes , rcu@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v4 2/2] rcutorture: Fix issue with re-using old images on ARM64 Date: Tue, 15 Apr 2025 09:36:21 -0400 Message-ID: <20250415133622.1563137-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250415133622.1563137-1-joelagnelf@nvidia.com> References: <20250415133622.1563137-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0650.namprd03.prod.outlook.com (2603:10b6:408:13b::25) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) 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: SN7PR12MB8059:EE_|DM4PR12MB5868:EE_ X-MS-Office365-Filtering-Correlation-Id: 36be5fd8-a759-4001-4008-08dd7c228f75 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Qx2+SdOMd3b3XAJyenQhbusTonR3BB2UKG2c9uJqaV4euCq2nuo4WexkPxeX?= =?us-ascii?Q?zJGgy06NAKC6CPYgjDVDnOIc6hKOrBSV7aRHadN73HmccIFRhUe1w7lMK1I+?= =?us-ascii?Q?a3qma908geKfBEk3TZnYwHudLxBzoTFsUqOlhHIWFN3DUAG0JRQal3WoaIUy?= =?us-ascii?Q?AAjLJjDV9PgFkYDzfGjvAZefRfHYladaeEGDoxEaXEmvPAJANUi2BpmliYiq?= =?us-ascii?Q?X8GCYL65l1Ahi60hkr+OMgSw9sTGWUSvRviaIiDw61jWWPIb9pFJl1cWPu2L?= =?us-ascii?Q?579sKGVCjZ5RUKwogQkRUYNv88a5ADhiPNmmQ0mVvF0e65/kbR7OrTR6e1/L?= =?us-ascii?Q?is1WEfTLKzpaDPavfPYH5YoADC1QvyLIAlQjfPnsnV+SxvpDoQBb7OCFjLdn?= =?us-ascii?Q?s2IZlDDjbiRWqc9WMtFtINXCSweme/5PJIESk7Dd7yJ5RYDbEwSbknZM4lYl?= =?us-ascii?Q?zu3iMpb7uvi4DXIrCthp+FwSSlD0mBipmGq5VmsV1NA4oq5aKOe+AugiZXCg?= =?us-ascii?Q?loNPPDp4rd7X0qVS1epVjFfmgHH6PGny+YVACItFZBCxsN7Q4X1cSGP8UYVs?= =?us-ascii?Q?LhN4VPRoEQyWKZeEvQGObyDw9F0vemphyqlIyjVNUoXcxclyd+1jkWbYiiXy?= =?us-ascii?Q?XrgPH0YJDjj5X6FeWeJ1RHyyqUYzvdJFHuX8M+pQvSNjUkbjH7gQArAeW7N0?= =?us-ascii?Q?bcwUSerAVx2Gb5N3pzz9dWwREfYWmDmGNJ/Ex4bSygEEQVKYAdx8h4oxtdC2?= =?us-ascii?Q?m46pXcxIfxf+NjwwQOKxFP24HwgOk2JdWcTqPxQyBj3et9gaEMsSQ55Nw92L?= =?us-ascii?Q?I+/1tLAwFnpuKKK06tJQbKzKwgJkorLQJYhY31IF0L5A3TtB7pf8J5iDp1gD?= =?us-ascii?Q?m+CbRHlDyZQqyRONb8SDs0+6k4959Uf/jhv+0xD3nCsX+NgCi8GHnLsn7NQM?= =?us-ascii?Q?DXFUp434dvBh3/M6CugpRXZRQdNjPtVvEjbduZ3XiS02kTOF0b5hIQO2GthG?= =?us-ascii?Q?i8AyxYktonywc/XQ+F8VuNAZa6JxxVul3sneiewPEZzD6cvYMOo9ZOLYg53+?= =?us-ascii?Q?DCSiXzUoAVtALt2TDoOthGTl1klIwZHNZGKlXLyKhZn28RNmqX9q7ZURyvhj?= =?us-ascii?Q?DuoKPplYrB3e7ybdWc19NIEpIxBSCJRkuOiuRUmkmhPOzkrbjGNVcjzeYo1P?= =?us-ascii?Q?QLmwucKjIY0WMO6ovSlFBPDqigdGRFL9KKdz03ObhbhI4uElXmUUpaz4hsgL?= =?us-ascii?Q?bs9pMEZ/90RTguBS8GgeOZJ4NmEVVNvjllApVzqL3Vgg2spVGPkzKAOU6DSx?= =?us-ascii?Q?7mv8SbkGslMnDOpnT1IJs8wnr/obsrVq0o2cqoHFfZO2xz5ZpPg4He/f3V6K?= =?us-ascii?Q?vUU9ScxjZMaESjF1II7FEN4DEmxUmsHBzZ1o+0ApP/gT5UjC0PuvtuI527O5?= =?us-ascii?Q?nmcpj801+HqHrLcMakvRwAPWz7mBQTVvA66IvmvFqOxf4K2tSt7I/g=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X/E84LQ4U3O21HOQ6XiWGQXdRvpVWa5ViW08jB7bzpoMcD6rfmnKNOtKXJ6i?= =?us-ascii?Q?L4R679zQWk7z8/rCKKvXJMN3ZhUiMqSrg6dx9NWEEAMXn0cc7hSUIGaChRmm?= =?us-ascii?Q?K2mMQQzngAikXfL5hKGofk3iETnlRTl2/S/jfF2ZdHO53OP7YsznU0oHkeoB?= =?us-ascii?Q?KUaSmhKBXgssQ4Ym7ABGsqOP4HVrTeQXAnyFDa2kEDDlcadJ1EUMYltXd6Vz?= =?us-ascii?Q?Sb66YvikvEaWZ+WgXcSLauEN6p1A/NA+EYQT7kEHFqZhcmOeatfnsnhzgH0D?= =?us-ascii?Q?tyfFjvSfk4c8rYL5jT+fyc2BmNFFZXU4AxoKAiW7f2zTPKuM5vd++LwlxidG?= =?us-ascii?Q?CsCSH1yxMc8JqGCeU2PZX1DSWHx3I5JEZTdy1frN6hztLF4RAdJ/Jpc8CW7j?= =?us-ascii?Q?RdJ8eJKNSlXylewyUqkaovuwcwFJ/iHvWOHPlHJzotb2ilXTL+h8afnUPPi8?= =?us-ascii?Q?EVR/dyFfbg7kwDt3yL8N0PFf1yO+zVpJafYW+hdy6H3H4wFTI25Fi6IUYnAU?= =?us-ascii?Q?YCvn/aom/eVnkx9nH5J/M+Lm29rX6I3CzPcEmdJ+4wIgSznduJpQ+sXByj5f?= =?us-ascii?Q?7BWUdsj/6E/CAEdkf/7gIIIGut7Yk6PFSCqYuLOYXd3uCM4FIDToja0Fom3z?= =?us-ascii?Q?RZoKy3NOZHV2dk5cgoaxj1J5tUBRHd0HiMiFU4xTKoBx1Tmh5za9/dILsIPe?= =?us-ascii?Q?alXQsJdC/IT1RqVH3taargX6kpNu7I/YMvY34kcwPrCAKnIQWlTYzFEqqn4p?= =?us-ascii?Q?vtnPEbZwJY2p2/dGuBu86xzGuWNGJPm63A6skfpmEgb06i65VH+aV0K+eDNX?= =?us-ascii?Q?46D5SZUjYIKMxFMldC4ROP/RWcvdXq3IS2A9SM3MwQQWmpSVlaa5KG5e15A0?= =?us-ascii?Q?djz9EP001bcFVTFM6NfzxtBD1rYVaKza73hEPpg3pw2DbT7B4qIQMHFLIrFV?= =?us-ascii?Q?uVDHFGENg9IKN6pCZIawWsW7/KT/4RK+tQE1kJQ4LVdf5LvgSGFMicpKIAZq?= =?us-ascii?Q?yl67QKDxijOGczJZ7lua33x4aCTS16uvsrs1Vnd55UWz9/pjNCmS691EGWyk?= =?us-ascii?Q?iiPp82cB6aCZFKew2gAaDzRDjwqtJnudda0vEsjdVC6P/NG2HANKbxCxPDj+?= =?us-ascii?Q?PQLZ70z/1WnGZ/JsXK2Li6X0ToPOPFiUyTzzbT7yhjMUppEUbMVv9V7U1Mtu?= =?us-ascii?Q?E558P9IRRr5Bi/v9Oa3BzDvA3DDDQ7ielA2qR30EY/ckU/dY0L86XHiTLfUb?= =?us-ascii?Q?NgpN8XEo9Df28qpizDX0bBGlnAU83AbK/AIOvIE82ljXTRsPbUWU4tghc1Z1?= =?us-ascii?Q?auS6aHVBTyLjZJjf/FfxAV/XHKJHfGYfvP4I4UruJPpGfqw6oYYt4AIRJwZ6?= =?us-ascii?Q?ErWSodAcxjOQ0/N+Lnaw83rMRmGSP8l8OiRqArQzyGpQlnvjqp1sTrTtxl+E?= =?us-ascii?Q?LRETmEMhZUPIySgsLL8MmD8OTYh1Y4ux7BXdctZ+y1EUxWuFC51559KaBDUs?= =?us-ascii?Q?bGD012BTS7MhNfz9g60Ts1nrAzykku0Y9lEQdpX7ZQiUpauqv91rn9oCyElQ?= =?us-ascii?Q?cX05CucmRbLHn9AeDJG3JGTw+ubKVI2IJY9zOtI2?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36be5fd8-a759-4001-4008-08dd7c228f75 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2025 13:36:43.5690 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aZeVieT5hglEgziCC6SHlxElF4JzNrk2rvYVDVUhbKeS8TpPyrOyX6Bx6xCIf8fUqKxuLBVbdrhBCylURQPpzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5868 Content-Type: text/plain; charset="utf-8" On ARM64, when running with --configs '36*SRCU-P', I noticed that only 1 in= stance instead of 36 for starting. Fix it by checking for Image files, instead of bzImage which ARM does not seem to have. With this I see all 36 instances running at the same time in the batch. Tested-by: Paul E. McKenney Signed-off-by: Joel Fernandes --- kernel/rcu/rcutorture.c | 3 ++- tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 74de92c3a9ab..df6504a855aa 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2412,7 +2412,8 @@ rcu_torture_stats_print(void) pipesummary[i] +=3D READ_ONCE(per_cpu(rcu_torture_count, cpu)[i]); batchsummary[i] +=3D READ_ONCE(per_cpu(rcu_torture_batch, cpu)[i]); } - n_gpwraps +=3D cur_ops->get_gpwrap_count(cpu); + if (cur_ops->get_gpwrap_count) + n_gpwraps +=3D cur_ops->get_gpwrap_count(cpu); } for (i =3D RCU_TORTURE_PIPE_LEN; i >=3D 0; i--) { if (pipesummary[i] !=3D 0) diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/too= ls/testing/selftests/rcutorture/bin/kvm-test-1-run.sh index ad79784e552d..957800c9ffba 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh @@ -73,7 +73,7 @@ config_override_param "$config_dir/CFcommon.$(uname -m)" = KcList \ cp $T/KcList $resdir/ConfigFragment =20 base_resdir=3D`echo $resdir | sed -e 's/\.[0-9]\+$//'` -if test "$base_resdir" !=3D "$resdir" && test -f $base_resdir/bzImage && t= est -f $base_resdir/vmlinux +if test "$base_resdir" !=3D "$resdir" && (test -f $base_resdir/bzImage || = test -f $base_resdir/Image) && test -f $base_resdir/vmlinux then # Rerunning previous test, so use that test's kernel. QEMU=3D"`identify_qemu $base_resdir/vmlinux`" --=20 2.43.0