From nobody Sat Apr 4 06:17:07 2026 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (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 3FB7C36403C; Fri, 20 Mar 2026 20:45:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039555; cv=fail; b=d1bpGgqkUoHuNfTt9TgIv2LlNROXpLrvwDoTkBtqR5IcaOJgB9ldmfd7S2Q/ACAzr8nB66cNP8yqgakMQab6vVKU76EUSiYqz4HryhLORBTMzKKQcSW1VvrEggtKfDzIOmYeERn36XQBXEFhySnDS5zvZEge4NlwcdbosZUStBE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039555; c=relaxed/simple; bh=7QOKNFOJct6QrYxUNNSOZ+w3vVx1rEYHQ8HC2nnyrCo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RLkYUM+71dKaH1ucs41kbE01gWcsSn50TBx2Q7HXwmYrm0/way9gGQOO/wtlLfmOVbg8sZn+5rUbCLfQgH5+afL0QM8mfuyga1uxf78KmI/397z/cvKKHB72WDnNrbP75GgCr3tcdiwk52ociMYkfrnnb+0iqjta+tt/EX/ysEI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=fail smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=Se7dO+0C; arc=fail smtp.client-ip=205.220.166.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="Se7dO+0C" Received: from pps.filterd (m0250810.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K8ad4J947177; Fri, 20 Mar 2026 13:44:57 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=/t7FNfIZM7BrEgX7ee6KFEwpES1VDDsaEGCF2rgP7hY=; b= Se7dO+0C0gCWJPC8eZOzgcwu5mq+a/boYZtbHGiOMRCX+vbhqgbykVsR2Su03NWt 9q8TpWrBqDisprjgE/niUNyPZfcLFmPAj2y7+n6M5ks5bPCt/qdLohiYQXTiu99Z iVXQa0B+FTNPhvw2HvYyC6VOhsLn++z/qieIPJhx0pMcgtnlm9axMIQEvuzW1fkZ IHcFZ0aESm1wzxV35p3OVyKd5Fuk4BwUevHKWt5k8CO0IV4gwsHTncrJep0iMaKH 0Jrd5yZcggSA/lerb4jGNCUtGqpT3Hc7t7xqFrq6UxSOc+ZJVRB05s30VwoTHG7r YE5b3HIpU3MKoouwq5R4Iw== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010071.outbound.protection.outlook.com [52.101.85.71]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4cw2y18k1q-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 13:44:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LyBN2HwHSN/OdrOyTsS9KmX6GqOS7TIYXt+mtkEMaXZeJQzVzvCA76RytKOR61tcJr0mHgkfPiP6aGzZHkM5wJDSTxkROGjfYWIiIoT9IMoPzRY0aYxJ6MRYY1bIARUnHYUZMPeD7WaRbBjvNUucNR/tOvIAOkn9GomFuov52i1f/vPI2EJRGxacU/7WEU17PFTQQN8XFgcqiqJWXc+yo0EIG0uhesHo4qOm2tenkN9fho0FEbmfj1hzyL9rwTY4da/jo5zlO7MUoP5Ri3kYRf0GcZK6fud0r8uuLQpxqXP4VWMElsm1CIxhh3EUxnbX56jUe/vWOmfRRFi0pq2ruQ== 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=/t7FNfIZM7BrEgX7ee6KFEwpES1VDDsaEGCF2rgP7hY=; b=XV1wIsnvaylEBZBe0pp6PZx8owcG54uD0EvmoCYiDO8OqyIikhksr7JBTqJC6EnJHKJoxro/DbkOg0T1lrmOaU0QtvNoUgEw2kGr4C+ux7SaQGcBil26XdRdcl3B7MqPM2j5svYCC7xia4iVaePAHDH7yHC5zPICIHKAJWflcPeRCt1a+0OVv9N6JJcKbCiypLEdfLLeU6NhvfuCqb7a5B4XqDaJbP03VfvPYrcZSUIiE3RA+KdUXjfRJc/8hs+H0oi91a+/5/nGu0PdwEZwwYPqUkArf8ikaM8ue4dK/OkW5xGe6bvN2hbO6dGBVZ/oL8sjkNUPK0ueawgU8H3Lzg== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:44:55 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:44:55 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com Subject: [PATCH 6.12.y 1/7] timer/migration: Fix kernel-doc warnings for union tmigr_state Date: Fri, 20 Mar 2026 22:44:36 +0200 Message-ID: <20260320204442.32901-2-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: f4c88a8b-f711-4d5a-b474-08de86c18b39 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: hKbuRYR/GcqpppFjyZSl5pFiJDrCBheNuHMTJXZFvO69456IDil3u2t+k0WO/CcUl98HF/akPMfYDi20Kj+T9Iz46DsjXGin6Ub9oFDuacUir1fERXc+NjhaEIFUiJdVI8gXHVgAKKwKIYpvaCxAWH8Iuy/bjR8xhanItSoLk0bZ+Knm6G/dn/PiAf7yCcUYrjWzSZXOIGbUN1Lc0BDQSFnfTakMapdeB5fdWPGum9ojkHywiomXMP0dGSECbARgQy0W6C48l32O8C76ZwloNEwNyWjlrUXdNcKGADOVtDdCqTKgSJi7r3xOf+ZF4EUPCNdjD4pH9129HtekOoIJ5DmVgK40nYppK1mFmrHsXPAyCoTGL73xMsW9sbvwKSeHa0w0cOUBdVMf0fBPhhrId/v4l5hDOxUEdJH8GT2p6uoYxzuBSbwH1ZzGvF/gsQGBCSYVTlyP4EZP3RcPMWdG+6FX4jKQWdciFczCpGjlMq8dF9NQuHtT4kbxt+Y/LweRIXsPBP8Q8kHO0cayr16L2lZf5ufZSMjEWPcxwIqF2LYwkSjtJWGbPyAcJp7upzS2sGoScMHu+gddJgws/4Q9R60X51atq8l2A1R6Ht2k7J6m2ny2Z9l1CaSzJCNlQejw+1/2t3Wue512qeeBODt2hx+DAu5yTGguxyC7Hv7QFC45In32lXmvQGF7AW61M7kWfFx/k98Dn9ALNPfs4t1lMv9RFwqG40zypUmJDTuaUDs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zq/YKfCgnnmgvxItibaI8QeIAOLvgAU1KJ20fRzTMCBy+vcLKyhF3m0I7GVz?= =?us-ascii?Q?iIdO5/23eH4eZphYzHkmDffFk/gNjlGrzvd6gnRHsUm6hdVmwnI8TYOp1XUe?= =?us-ascii?Q?BoHpi/kRypXgOLDqE5e9U48otdGxqVCJxOaChHuZR9aVPjjcSm2Agob4JLD8?= =?us-ascii?Q?Vr0Cxe48bTJk2bi1c9fUcQT5zQTFpwS27xwj+UratWLLTpppvHgkdO9KBfF8?= =?us-ascii?Q?kXF/45ctp/IOTLI7LHDlzvSmGOqGhPJ0oTRDcMnGKIA88kdROODAL9VGvNsZ?= =?us-ascii?Q?ev6uZhUjhMc2JnqYVB9r4PO4CpETQ3FFpchee3xJ7yTvLQ1ClsxN7IzyK1Nb?= =?us-ascii?Q?PZeowu9dpuHdy96aKsaN0n+IbrXv7jgqKFMVF6Dn7MX1VRI29bKixZV/623v?= =?us-ascii?Q?RQ7OxZAXc+B1CrU9/SeTH7iVvOGqz8a959QgpB4FVBddUzotbl9Ak9jwk7Jx?= =?us-ascii?Q?9ckd8mTHatleWRnUyaSTvKA7LQxlu4XUJiUptypf3TS7ZUF2KuDLH1TcljJz?= =?us-ascii?Q?4WdTYnnvOE+YYwTaT5AycS/li/VeQ+U4KzSWixR55ZgezKFNCFzzOtFDwg2V?= =?us-ascii?Q?CePTgdZ3yXGGn7MZVR7VcUFrkOK+wImRFmNoxG28b/a0+IvzglPV7cp1CbCG?= =?us-ascii?Q?V6BdzjunyVLCH4yakuA6UvCufwiLhXkyVqC13TusKZu170do2fTyw4ADfK07?= =?us-ascii?Q?U194XuagLmPYBjia1T2ByLFL3CxzoBmFhEqIPvhWN2cIX2mHTZ1MB8yQP1l1?= =?us-ascii?Q?hKrFF5xKTlZOJA/zlRsx7WzuawJfHO58I/jAiScBkaQtDuNz3G4RXAp5kMfH?= =?us-ascii?Q?bJKLe13Ly1TYwWaL0QHqZyvw+AcDGqalUFqax2SUsgqWtXzGHQRsj8uYXjFW?= =?us-ascii?Q?oeY0nm4K/EOyl0ZH6pdxxe99S0372eoZpXGXeFYPNJtHqLiQd7B638VonKSV?= =?us-ascii?Q?luSvASnhjZErFzcTQpKQRmF3YtqAi3QrHidN12UvllOQ0WvoQU41FAZsWzHF?= =?us-ascii?Q?NZLcjgbl8qnC8+SClZ0680en1ZqXeNxdKuPDnMFmYGm/R9cqfarXUB5GcZiw?= =?us-ascii?Q?kqaKEd8vG9ulOb25XtjXala5WkZ5cuqRBb6v87QFKZWb3o5JPXKGI1ND44zv?= =?us-ascii?Q?mUyzXhbwQ5CbZEJdcZeVmAtMThOgFrA2Is4uo0qLn1tqTyQJUBHULz8p31C6?= =?us-ascii?Q?/DspQcKwYn465vwyj3haErVsmdu/qnCmqWuegk6Weppr0ebS37d4luZUVCbK?= =?us-ascii?Q?rQbElSZ805gjqvTBkelfFmf7BiD5eLxWs0LF3nYgD0/Jz6nrixHpupC5gHpE?= =?us-ascii?Q?sCzIghyIdZwEU0QPIh2ZYLVjYh8V/5Ocg/GtcjwNRSDr8TDiUMDDio50zHht?= =?us-ascii?Q?sWtaVUDBpscg9RFLxfiCD8AnkUmoF3sTx9pw+HPFBMLLOUFm2ER/jQWmx+s4?= =?us-ascii?Q?iAWO4120nbymMII50n2UZklJl3gWNXxrScGfdxsPp0l6s+jElc8DdD90qvHj?= =?us-ascii?Q?fVnHR8Gsx3CcetQ24nUJJPxQSZPRWoqZkttDSdEYT+hLzTvq8re4y5hrzf5D?= =?us-ascii?Q?YgYyxyUJGZTu/yX342aMOL4BDu6Vf6N9KP2Cto6b5upAKw6gfrse7l4PuxgI?= =?us-ascii?Q?EOP58puKgBRQkSMWi9LS2D/9TVRxOQHsgoe1vG+R0PtHafvjPwVOnE6IKeLC?= =?us-ascii?Q?Hw9QTV0GPT+QdnLqgef4ieiht0gCDOAABu1f/922DqepiQZK7fzL8A8GXV5e?= =?us-ascii?Q?gOGMDnmR8KC4n3+pT53PS+v3TtHvGIkTrerRfEqsgU56KkxWLXQvk+BCbEaL?= X-MS-Exchange-AntiSpam-MessageData-1: Qc2MweNVd4o62rGoDgMQXRL2r49IZaIc2cg= X-Exchange-RoutingPolicyChecked: ikwq5eKM4OkKbCuQMnEClMwHUg0oiMVQ31ike3KXn7mCWJ8WXE0+dgb7Ehnlx3OGdAESpEVqJnJUozflukmdQSTb3ZMKDyOxPz/uzRf3hklVYbk0eVAz/6LpGWrAKQx+iskV9OQDsC2X7HgbjwQnuleR8Wzx9tRXJKSmeLOSRh1C93Z87fALzvIwHB0TPfHFOXPtSH+cqGPMQ2O9KAkJSB08jT2LMkpvLGpng61VLM0HQPM5WPfH3EDHkvS/pSbPx+KyxHIOgB/nQgl0cee3Gz/DaHMpcAo1xLlsQ13fFBxByLGGopB6xTZGeJ7t3k9vToYGvZAYxGCO20dMv4Q01w== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4c88a8b-f711-4d5a-b474-08de86c18b39 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:44:55.7164 (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: UCOOW0dPRkBAskLuS7okNqLmdSW3lIV4tBjdwRckeLSYN0NBfjXvOvQE5eDE6oGgzcoLnhGaN1yaTJJEXH4XbudQn/mZJ9AnyGMmFEe1hFI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Authority-Analysis: v=2.4 cv=CekFJbrl c=1 sm=1 tr=0 ts=69bdb1c9 cx=c_pps a=OGRNNHJcR/XwrOfql3gobQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=HK-ge7EqtdluswH-FwHe:22 a=VwQbUJbxAAAA:8 a=JfrnYn6hAAAA:8 a=W8OALlVFJKLW7RJGoGYA:9 a=1CNFftbPRP8L7MoqJWF3:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX6ANZaI5FDO/f oOYebyDhfJEcOT0qFYyiWcmN5gcQzm6Tj6jssAAZOyUEKoZC6ZpAdf3KApiA4eSr95oYZhlOgN0 EgDfFNjR6dXAa7rg53BQ7aRLOwXK41mv3F5FtrEfPyhi7L377fvVGaAUvo9o01dDMxzs++78IPe sIg6c5tQaD9PLC1qZU0QpBKSWfIMFI9kZ7Hpy0gkvAbtQYlE2eZ6YXfLm8HiLC/6dMGC/TwzQfR n/QPUC9v0nyRTyCihpv5H7cE8rmfGInbtEXahogKDDad6UhmIwfDFb2r1qanIK/Q49O06/wmIM9 diXIr+vLRZS58f345nLRkAwroX1ukacf0NCNfxd3pL94B9uEcn/9QrVvHyran0uYyivorAUfG01 Ne9p6IgHLTEVkmJstaiFQpieMeghIc7YRdQfRNdri6OauiSQDX28wpkz4AwQE3qITc+gPardFdV ftAo2QpeVx5ocPfbtdw== X-Proofpoint-GUID: XcvlhxTfJGdX187zX38XEXKeRbdqSElY X-Proofpoint-ORIG-GUID: XcvlhxTfJGdX187zX38XEXKeRbdqSElY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 suspectscore=0 adultscore=0 impostorscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Randy Dunlap Use the correct kernel-doc notation for nested structs/unions to eliminate warnings: timer_migration.h:119: warning: Incorrect use of kernel-doc format: = * struct - split state of tmigr_group timer_migration.h:134: warning: Function parameter or struct member 'active= ' not described in 'tmigr_state' timer_migration.h:134: warning: Function parameter or struct member 'migrat= or' not described in 'tmigr_state' timer_migration.h:134: warning: Function parameter or struct member 'seq' n= ot described in 'tmigr_state' Signed-off-by: Randy Dunlap Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20250111063156.910903-1-rdunlap@infradead= .org --- kernel/time/timer_migration.h | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/kernel/time/timer_migration.h b/kernel/time/timer_migration.h index 154accc7a543c..ae19f70f8170f 100644 --- a/kernel/time/timer_migration.h +++ b/kernel/time/timer_migration.h @@ -110,22 +110,19 @@ struct tmigr_cpu { * union tmigr_state - state of tmigr_group * @state: Combined version of the state - only used for atomic * read/cmpxchg function - * @struct: Split version of the state - only use the struct members to + * &anon struct: Split version of the state - only use the struct members = to * update information to stay independent of endianness + * @active: Contains each mask bit of the active children + * @migrator: Contains mask of the child which is migrator + * @seq: Sequence counter needs to be increased when an update + * to the tmigr_state is done. It prevents a race when + * updates in the child groups are propagated in changed + * order. Detailed information about the scenario is + * given in the documentation at the begin of + * timer_migration.c. */ union tmigr_state { u32 state; - /** - * struct - split state of tmigr_group - * @active: Contains each mask bit of the active children - * @migrator: Contains mask of the child which is migrator - * @seq: Sequence counter needs to be increased when an update - * to the tmigr_state is done. It prevents a race when - * updates in the child groups are propagated in changed - * order. Detailed information about the scenario is - * given in the documentation at the begin of - * timer_migration.c. - */ struct { u8 active; u8 migrator; --=20 2.53.0 From nobody Sat Apr 4 06:17:07 2026 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (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 8519E35E95E; Fri, 20 Mar 2026 20:45:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039550; cv=fail; b=sNIqBirJNElwr4sQ/KB/YWmecR1bhVYXt46Gf/g+/lvXkmM9PwCR9MN8OKkIaMjCxK2Cr5ZsKqDYEr7eKJ1aACPPsbpCZ+bypAOBz7bpQe12sxu2FsxkbL3L3oQzZkNvI9hFs0phOORid7eyP951EuZbQFHORunXDIhsLwmDfOE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039550; c=relaxed/simple; bh=bomf4Tn5t4fXBnPtAhVrkZaBQwMrwu8kP4RBiJYnyXE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HxEVcVNbl9ke/W5hhYjlXafRxTQ3EVgnwcZNd0nY04YGz9k5iVd1oqiNWeGv9qreogMgiVNmygPKNBKzliImD3vvF+gjbmsXz8TyY20tmmwY1q1hdhiEjkLQWOUytL4yOiEjTlrM3r3JFF0lHp4CbMzIywNnFAZBF6uR97OEvE8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=Cbo3Fq63; arc=fail smtp.client-ip=205.220.166.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="Cbo3Fq63" Received: from pps.filterd (m0250810.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K7o5mn866812; Fri, 20 Mar 2026 13:44:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=M7ufVu9GXPrexYPW7e3H5cMGDNUC8ezbBQQCxaeqOSg=; b= Cbo3Fq63DNX9umV2FHlaaHJuHkelpnj5bpbhhI5wN8uraSu5XL0CDpofsbuJL01P S+4+CWPZA6wFpADdEtbrkoznF2PyEcXoS/mDhzzClVIEYkmlqi1a63M+8HeBNcXA Z89/nobJIQOAwfFQkuG9B3PrUyjRZJ26aWXaMfnHX2bA/MS3+/CPlujQ3PePK+bV 1AqYkH1x0ozqpE5Ge9PGv/AK2BBswBiWN0WGzCzpI1eid8EcUP0yrgCgrpyZWaWt rrP62wA5Zzn4pi+DePuGBN7JYbBM7u1quo0u0pDJtW5Vs3/6qugrGRq7KbjguVVS zFyJ+cB6Ag8YTRkPjXYgaA== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010002.outbound.protection.outlook.com [52.101.85.2]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4cw2y18k1r-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 13:44:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Pm2NCxsF2aMKCxIQtM7QB1Dts72zTioUuxsC/CuBtk/UODL1bqReSXxQ5UT7pMFAypSryklXhkoMLR8+sEk8Et0T+Xbe9+adRGKUpEdxkC0XTHvFerqlHb7XvehEpEDlD8x3Bbonf6tKH0dF2qz/VHX9iUzw/E6j5nBlQH95w3HIAj8SI2WFyKOCxqkOI5zUU0DL1ABubR6n7nZs37o//e2y2/JVVvnWFKxoWY8praXJI+SyHCOSc82LqhQVpTY//sDbGsjBC5uRWithUc1kUwBOrsURZmyUHjknNgRoTpr3wtSPkH1XWSuW2rVTI+AlTX2GyY3uB6io+YHBrpWZdg== 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=M7ufVu9GXPrexYPW7e3H5cMGDNUC8ezbBQQCxaeqOSg=; b=LdXTH9N3n9OnqL3ic290S+hh0OX1rHoCuU2GVQJPA25QB0jWpLN5zCeEndSC/yB/ou7M/+CaMdumkRxYP/62m4/0yUOLwqBwEnCt0dDVg3YUQ3Fu7GysJDe21O2vifwaSu1QjOSmTdf5jczQhK82Fz30KlbHJAccKxEDPiMDBWzOW265ibhpXoE327xDlXC+AztY1rpeu460KzuBmQAqtEop8XH/CWKTLYBo20RSoSSOMu3IuNgtGx53b3+1DPwm9iNmo5W4fGZHmjrpEgl4JLEGQhrsFSQNPrGWjkkiGjDLDw08D8PYHpD1jTC/ZANfgJnR9CK/lOatBNzBV1hDtw== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:44:58 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:44:58 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com, kernel test robot Subject: [PATCH 6.12.y 2/7] timers/migration: Annotate accesses to ignore flag Date: Fri, 20 Mar 2026 22:44:37 +0200 Message-ID: <20260320204442.32901-3-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b04b361-f118-445a-e482-08de86c18c96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: ZERxzb9m3mx0Ozt4fm3e0q/hfc5o2zEjwVFrl2K7QVAjXsfnYk/moooA1WW1JwA5CQGa5I9YAOVfpv1syozud0um2z8062Fa6B7asW2nf/+XyP2E4AGNpwfTEra8lJQHRVjTpnXrBa9AvWig5R3jQd0H8wQ5IKhEfmzPZWlcS6fygGkgRIbPxMIhVwC3F7301rRLy9KKMAjvzK9Bpi0U/g/3WehAAMzq/g5duGmFZ4rvRqBtk+FOKy1I+Cl6mZ9obnE+rpYOJngWl9FQX0KIH5yFGUtMkY2E0g6bCzg5bemiqZ4TmBBzBq1KUYUoHeJ43mPVycDau4LGPhwtSasHGnUqUCioPFqAHCkvcr6Sp1ThyzDsD+Ezu3GbQ27gNSQWBAkKezDFU/AeEf1WBhHbvR74atmoZDxgi3ewzzLZpfTh0bwbz2+va47VqyBletuPGbvm1w+pcJLom541CE93gvrLik69b/nEJRyzOMoJny2X6eXkab3n7Zw3aTHkWcOHSccJuJCiTxI/Oq4WuBNQ93hODbbpwRoYfdcVMjZHYjznJbiHbAbSFz6kbpZzfAGNE+8Trgg0590HPdImw2aQtDdkg0QRZZEDeqrHYDC/MdtC+QhBE8s3JE8gRYtGeeDbQa5ZAkM2AqqG2QjZrKmovIpOLvSJp+dHAR/vgdm9gkSn3WsEUReymtHnaJGpzoChqDkshxvdF6IgVkMZVMUnAtN/zTyvXmtoN0/nmjc64FpR1edTFf1hz6jckEFvWCrK X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?a+S9xUXsZVb13zP7/6VeiI7IUmHHhWFRq7N5GMIM5yKcOaMzg4aOy1IO5X5W?= =?us-ascii?Q?3tlN3A8bbGlScrKB6/F4c9B6BLkbLoZcFJM0d1xvDHN8fWjjamyO8KPmO7aS?= =?us-ascii?Q?H0YLYjooFxH9iKGGKXckBYbz7bmgcjUnDL0gRxLGCX60nJqQH+gmNag9u3ti?= =?us-ascii?Q?xO3GbB9FX0Kcr0Q86PJH1deCsMUz1/PnWrUQ45IDRJPhhVm2SwQ4oajY6Vhv?= =?us-ascii?Q?Bc882CrR3w6AIFDPaAVGOfS3AYWWHFpzErK0g8XZZ890hbJhAlS/5pze8Uam?= =?us-ascii?Q?iMR4xj7feB77FATJkedUWJrDzvw+o/vnM9QLNm/VU98NSefgd7eebE6S4mlY?= =?us-ascii?Q?EuzfaFfW2AS6mLncg7rWpukHltjXuEwQzs13srApeEnMAuPs6c4uWERv3d+5?= =?us-ascii?Q?Ln3lovLnu/kp4dYSakLtlUD/Z3JpmA57bvnl5eNEcpYg+rjlHsMCW7AtqSMK?= =?us-ascii?Q?/pXvxZTJtPrhdZ4hCspYwBxjnq9SqGgbP5liCvIb4y5h91IAQVxSaAYe11+2?= =?us-ascii?Q?J464aZYaPuqzd6BMCRXQKHsI33r9vHvIMpFHMhPIkR3JJqP2N7J4YwDN+2nx?= =?us-ascii?Q?PqoJFG437BSmau/mZSKs32vGoI0WqgZLeP5MM6NwC+gsPJS2vcLljxnYE/ru?= =?us-ascii?Q?rkyaVh8sGR2XnQSUmH0wyVV29eDYjPv/FOlXFbrq1P0VCs8+nwOLehuOeB9G?= =?us-ascii?Q?GUHLsLIa2YsdcUMETHkUWYdt/trvkXY7uGZgq7+1fZq/vBi47+kY5Ps2MSOa?= =?us-ascii?Q?3iW79JrnxflI05zt+8a1UbbVZpfYQrp50/Lce2epbbQyU5++aaHSOxJWhpPj?= =?us-ascii?Q?MoTe1RPiUPUeDQ1P07mj46T2PfYRuwYLBniN4sXbQlmsNGWPLKsJ4KfJsVzO?= =?us-ascii?Q?Vh4jgEo3au/qPgezcc8Pp1gv2QZGJbw1Xngi28ai2QsTGH0umpalQfgU3xct?= =?us-ascii?Q?r6l/EwPrN2eiuBCYAk3nAonlAH+K3cYl6dAOyXj6EU+f3vYrhQhOTeQ920Fg?= =?us-ascii?Q?JbOieITjwdh9MiT6+eNFVEbbQrVbVL09ZElgkOldlwprOdHywUmTBj4QJysd?= =?us-ascii?Q?5j8AyRCL5EcPrJk6sRP1SDttbgfyxh81TF4kn/DBFaquo4dEuqFzb0TO8wSa?= =?us-ascii?Q?8mxepAENuLUiRCPM8a0622wtM/TTXrPAsMAega1EuXQJWPY7moN9wEITDpBz?= =?us-ascii?Q?9aYbDLNb06dN0JKy5hhlwu9IE6Q3zQwn4fst5bpSO3z6epb2DLprvE/HtTLg?= =?us-ascii?Q?6uvuwgxV1EHbKNlWJc4/NCEsWwrzT4TbvxhlIfJFOv3yf+5Eus1b+j4Rp/z3?= =?us-ascii?Q?oEWccxN8vz8RjYj2+GaZKdblx9RHW3WmZT+wNLgKQTSiV9BGPVkCtPoB0bLa?= =?us-ascii?Q?PluDsx54MdDSYTX4ca3sjQnYKxo0+raG+ZyELwhEJv3In2iWGX4poxzOfJVM?= =?us-ascii?Q?kDk3IkgfQywGd3YgxbF6lpYYP+YZXca2C68DI40iZda2QzDReEmvZq0YBNDX?= =?us-ascii?Q?t3BjdboVAHFrD34rY4hHuVr+ShtcZVV9jdMbSkBZvSSQ2l8lkseJjdaZl/sa?= =?us-ascii?Q?KKZQk/ouDqeq5QwhxeVsVBFCDK2Iq8ahuNewqn3XzBKF8rHKYfbuZIOxbC1x?= =?us-ascii?Q?0SwVBu0FX5HSwkShnlXH2aHPuSlWCxakdxFBo3WqXPQ/CYDvgifufcIKlq5F?= =?us-ascii?Q?VDuTuYwsmxfTZlLnCfVOFH1xBJt8tT5oc26+oS0SL0C5yD6uuNGEjFEU7iH0?= =?us-ascii?Q?HONFtmL3MNysn2lnhPa/Z4qL3CpW2HgS9mU9H7JBrwuMw40WpGDBVsfZAe+i?= X-MS-Exchange-AntiSpam-MessageData-1: /V/Xm1AzgRj55Lb23YDGNd5Qcj0rXWbsGTs= X-Exchange-RoutingPolicyChecked: UO4NYpapfzX1mqDTB8Yl0SU8ZpuUr6GYr05yeRzu+uHeGUSHlXa7k7aCKnVkZk1Qx2ibyYsbNHeWwmw6q7N6BzQBBTNlP5Sc3FcwZbgPiEkJq4ZkvDPxum1/Q7QQ1aSs/2PWuVgAtPVaCOz8Ukv77Fu+1hR+2yH7Pg+gZwVIfaCRU4PysYAi1THG/kO9U+oo/8K6hj+2AmFgzoq8k0JnokluHzEvXUz7q4LQ4eBUBatp30pYXCVzxBNGhqL3cawJnzKhdH3rZ3AmzdPcP3bUiiQ57tLjlb0EBfGP89n6LnuKma0caL+H/6U/ur/g75GutDDodrITGpYQ3iTNzpW0WQ== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b04b361-f118-445a-e482-08de86c18c96 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:44:58.0042 (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: cujCmCTOl5yw5y0Jz4T3UQRQAmDOr/hWUu5eAH+ILsfgI3lrE+CWbQS+iEkHDQDTd8S3ZXweQCZZO0s9+WKrZTs0Dt7X51iMB5OyoGeJO4A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Authority-Analysis: v=2.4 cv=CekFJbrl c=1 sm=1 tr=0 ts=69bdb1cb cx=c_pps a=xkZeeFpQnwfNeFRS3gkPQw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=HK-ge7EqtdluswH-FwHe:22 a=VwQbUJbxAAAA:8 a=QyXUC8HyAAAA:8 a=cDCvB4DnJeAfrRTg3j8A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX4rooyvIMk5+7 vEwpY/xg+y9hIsT9+HPRAAFoUOJhSeUswcZ8h/rYWfB+qK1WT00gVdM9twF3Doq28yuflrBHsmT 7LR6bltnNEP8cGZrRs6uYFlj2T3R4WBKVo9NSN2nk8fBJY52hyJZVXQKWETHhYxXT4YvW7pae3G zcm7NYHyxTyJykZNKubaZBiAArqtrx1krUVmbp8SoGV3woR4SNnU90QxwTDrA+Gz+mVab5R7igb 8C2deLlsns5l+jWUAkNkcp2Iupol/Wlq8Rw1lWrSGrm7Enror5kpavk8045N7Z80mSI+5572uE5 L2+1kTBNFd1uiYSo4D+Bxzntz2i/fghR9EwgOife80cv/ne6vA9Ds5QdWsofuVZ0WurYcchszM1 u2VmgOOqIqtXPVov9I8YePH2Vs59YmtT0KHRWyDsCZKFAzKDtvXSE3rUkl6hmb/kft1RQ3ZX+0S sLUv2W+IERBBvgiq8rw== X-Proofpoint-GUID: 3WKcZcPENUywTxO80HtTyTnax8OjnJPT X-Proofpoint-ORIG-GUID: 3WKcZcPENUywTxO80HtTyTnax8OjnJPT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 suspectscore=0 adultscore=0 impostorscore=0 malwarescore=0 clxscore=1011 lowpriorityscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker The group's ignore flag is: _ read under the group's lock (idle entry, remote expiry) _ turned on/off under the group's lock (idle entry, remote expiry) _ turned on locklessly on idle exit When idle entry or remote expiry clear the "ignore" flag of a group, the operation must be synchronized against other concurrent idle entry or remote expiry to make sure the related group timer is never missed. To enforce this synchronization, both "ignore" clear and read are performed under the group lock. On the contrary, whether idle entry or remote expiry manage to observe the "ignore" flag turned on by a CPU exiting idle is a matter of optimization. If that flag set is missed or cleared concurrently, the worst outcome is a migrator wasting time remotely handling a "ghost" timer. This is why the ignore flag can be set locklessly. Unfortunately, the related lockless accesses are bare and miss appropriate annotations. KCSAN rightfully complains: BUG: KCSAN: data-race in __tmigr_cpu_activate / print_report write to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 0: __tmigr_cpu_activate tmigr_cpu_activate timer_clear_idle tick_nohz_restart_sched_tick tick_nohz_idle_exit do_idle cpu_startup_entry kernel_init do_initcalls clear_bss reserve_bios_regions common_startup_64 read to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 1: print_report kcsan_report_known_origin kcsan_setup_watchpoint tmigr_next_groupevt tmigr_update_events tmigr_inactive_up __walk_groups+0x50/0x77 walk_groups __tmigr_cpu_deactivate tmigr_cpu_deactivate __get_next_timer_interrupt timer_base_try_to_set_idle tick_nohz_stop_tick tick_nohz_idle_stop_tick cpuidle_idle_call do_idle Although the relevant accesses could be marked as data_race(), the "ignore" flag being read several times within the same tmigr_update_events() function is confusing and error prone. Prefer reading it once in that function and make use of similar/paired accesses elsewhere with appropriate comments when necessary. Reported-by: kernel test robot Signed-off-by: Frederic Weisbecker Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20250114231507.21672-4-frederic@kernel.org Closes: https://lore.kernel.org/oe-lkp/202501031612.62e0c498-lkp@intel.com --- kernel/time/timer_migration.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 72538baa7a1fb..0707f1ef05f7e 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -569,7 +569,7 @@ static struct tmigr_event *tmigr_next_groupevt(struct t= migr_group *group) while ((node =3D timerqueue_getnext(&group->events))) { evt =3D container_of(node, struct tmigr_event, nextevt); =20 - if (!evt->ignore) { + if (!READ_ONCE(evt->ignore)) { WRITE_ONCE(group->next_expiry, evt->nextevt.expires); return evt; } @@ -665,7 +665,7 @@ static bool tmigr_active_up(struct tmigr_group *group, * lock is held while updating the ignore flag in idle path. So this * state change will not be lost. */ - group->groupevt.ignore =3D true; + WRITE_ONCE(group->groupevt.ignore, true); =20 return walk_done; } @@ -726,6 +726,7 @@ bool tmigr_update_events(struct tmigr_group *group, str= uct tmigr_group *child, union tmigr_state childstate, groupstate; bool remote =3D data->remote; bool walk_done =3D false; + bool ignore; u64 nextexp; =20 if (child) { @@ -744,11 +745,19 @@ bool tmigr_update_events(struct tmigr_group *group, s= truct tmigr_group *child, nextexp =3D child->next_expiry; evt =3D &child->groupevt; =20 - evt->ignore =3D (nextexp =3D=3D KTIME_MAX) ? true : false; + /* + * This can race with concurrent idle exit (activate). + * If the current writer wins, a useless remote expiration may + * be scheduled. If the activate wins, the event is properly + * ignored. + */ + ignore =3D (nextexp =3D=3D KTIME_MAX) ? true : false; + WRITE_ONCE(evt->ignore, ignore); } else { nextexp =3D data->nextexp; =20 first_childevt =3D evt =3D data->evt; + ignore =3D evt->ignore; =20 /* * Walking the hierarchy is required in any case when a @@ -774,7 +783,7 @@ bool tmigr_update_events(struct tmigr_group *group, str= uct tmigr_group *child, * first event information of the group is updated properly and * also handled properly, so skip this fast return path. */ - if (evt->ignore && !remote && group->parent) + if (ignore && !remote && group->parent) return true; =20 raw_spin_lock(&group->lock); @@ -788,7 +797,7 @@ bool tmigr_update_events(struct tmigr_group *group, str= uct tmigr_group *child, * queue when the expiry time changed only or when it could be ignored. */ if (timerqueue_node_queued(&evt->nextevt)) { - if ((evt->nextevt.expires =3D=3D nextexp) && !evt->ignore) { + if ((evt->nextevt.expires =3D=3D nextexp) && !ignore) { /* Make sure not to miss a new CPU event with the same expiry */ evt->cpu =3D first_childevt->cpu; goto check_toplvl; @@ -798,7 +807,7 @@ bool tmigr_update_events(struct tmigr_group *group, str= uct tmigr_group *child, WRITE_ONCE(group->next_expiry, KTIME_MAX); } =20 - if (evt->ignore) { + if (ignore) { /* * When the next child event could be ignored (nextexp is * KTIME_MAX) and there was no remote timer handling before or --=20 2.53.0 From nobody Sat Apr 4 06:17:07 2026 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (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 D60F0364021; Fri, 20 Mar 2026 20:45:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039551; cv=fail; b=KLYF6czb73yVt9wKrTAyPthOqmSquQ1KQtrrdOJkUezxffD8Yl2Er5v0lx1ZVloEdxyzqKjh+aZr21DGHTuz6Q459aSCYP4q6+/9eBYrd8Y5QPKr7s3beLDyMSDC48ie0mQ1IAZHAqqAMFT5BFA3JJLw+XR3IqsuKjttzh6wxqY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039551; c=relaxed/simple; bh=x2X5EBrZf2XyKVw0jUbDWMFxdJoBpCAI15ZdcbTBD7g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GevIctroOjOsnAqPTaROQ4PNtB73+HDFKqnkHplxcqzxg4806MQVorOxYMS2kolKLNZF648tiZiqOUZbnh1UreiiyfwIgXqtmp+n5Nxm/gH/V2yAlG1lW/3Cv/EoOcj2mSEswDLbLQ7CAOm4RtbgRQmOaaVdUl/L8fRWyzvPKpw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=Xc3fkkaj; arc=fail smtp.client-ip=205.220.166.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="Xc3fkkaj" Received: from pps.filterd (m0250809.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KFNrV61789288; Fri, 20 Mar 2026 13:45:02 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=bXu2CGPO/YCOOGt7fvWnSrJfdPwFBeVBkYcENPHjHlU=; b= Xc3fkkajIX9Itzj8YoSYam2Z+j6tzO5OxBIrKyN+wHOCGvkz6TirusINj/xjlUWe o73g5gkf8plfx8o8bbiTdX0hfO9BrC4aXGD/1pa+KL8wgWDYxBQBtdt4PJKkN1u4 vJyVeG8UssktTX6nuTWKJ9e0KUkodcUHV/QeAoY8ssbgnYaVDD9U19k+4btQY41u q3PWhOdGHOqCJ0PXdclSMT19pl2DuvHt4DElrlCKMkhoicXh5ejxWx3+iTOb+43F 4qmK+fe3nas5KvV2X04+uc/SSgf9yR0Tczo3P4r3GN8ZLpoF5DAK7gkAsuVORM6p 2eKxyGmcAt/5PBwTrWSHPg== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010068.outbound.protection.outlook.com [52.101.85.68]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4d18uggb74-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 13:45:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=j29NiHvqg0aZXf5UOJcPD4d/UtBuj//N61BP+be3yGQGJeO3V6f0lPP02CjTJL6+ot7aTPQr4g/eXYAbGL5sYOywud8xkqtokg0MuurM+IDYC2Vjh0VMWc5oSW8iAYfDZpExJbxl0xK8QSigy/5gJG2TyqCrSlDiezYASSOGbJvmFdjuwPuQtHk37Ts28Q5ygi9QB3BbxAKp06yK7LaqFFDwfBmKDSON6xYwB0osLdy4q84EbL4ZrSlyhQI+EMcWKO8im636Dbvie8MCa3KsMd1iiv0Qf64Q0k5W6GSTOUXZIuHNj+XybhURC0qLU0zBHvkizt3MShSFS9Tu7eUOdA== 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=bXu2CGPO/YCOOGt7fvWnSrJfdPwFBeVBkYcENPHjHlU=; b=Hfqb1JZlyCzG7kQJechrWh/scAH+kZwmwFuEEk4t3qfcCfQ2umXiF6viYjnha31KueUeHc+T7b6JfWTi9YMHHSNzdOJGqAajVCBFPeK+ZVmJeHyF5C8Jq2rsuwz+vJTxjmv7CKvk57xsamdzD+X+Aamv5w1NVjal5wdNuJamfvWvXX6OF4BNa4GOEegARXVLhJrhudo3T40afHhCX4F85i/ATSnwCVJTjRip3ZbRbk3GRqemBPUYc4bFTIKYnF+jI1vZeyqMv95QBm+f6bc0kj3qI7dJ3jxPs9aQImhaNbyDoOWE8NjDncH6vNuIC/oCDuoYrVgfqpjrmHGgQu6C3g== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:45:00 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:45:00 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com Subject: [PATCH 6.12.y 3/7] timers/migration: Simplify top level detection on group setup Date: Fri, 20 Mar 2026 22:44:38 +0200 Message-ID: <20260320204442.32901-4-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 9cb728b5-2dbf-4785-d229-08de86c18dcd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: sCYCAA9IM9Y5dc8qvDsP0Y1LIpVR6AjHKoYx7M4p0YeNhiq4YbEumDy4VijM1ST3ysVB3m1G3bIpvHUgq4Z60FX+bQsik0kb9n1My/57M8OwxjcirPAwH55ZKwEIBDkW64RfxmE8O3U6Vq4HQ1+56pUYCQsVm3IENn7rtOmAQRPh8NiIZaRwYhx8ZCm5EGAUEuzEnlDszlfNoRn61hZuUEb1nsuvRFgi4W5oCSq8BBe6WoAt0VywnbPPTnj+hCQXioeCTRMurSS2E3h8ckX1/2vgg3PLWRQ3GRUAfv3Tw4koi+IftBAssgyXaDtx5Bxqstufsl8AzHthpnE9gHhLLpu2WasQkTpC2x1tBrQS2sIF2D3VKscVggiu0KbsUBTT/epw4whRf6dkwg0EgUtDeAjVmZHd1OWN6Jdi25MOQKAOzYRGAimaPN/bo/6u2O8qY7rh3Po3VAOm00VFyeA4RZWxqor3qeustqwggMVNQpGpqlfgmSvQh1CbQuNLadlaP70IKEPTmATlWvLZyAgmxxcMBeeIp1gPOHlN26ujLzZGiyhUcKbsiPEP5LeD1/fFYn5N43MAy/F8pF0hkxbCiewJooKBgqpam790odIxTYv7cSxcC4CbSiZWqU8jQiV92EYTxliZx831SENtOZc2OL9vii+OCBYY+8f1rcZZ37wMi4UuvSYv2COe9BiCIuMhup6nGnn9h+Hpw6E4kI1LiEqXySbFDbdngY4Fn3PiLw8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YBmjzm9PrafG0K2CY/8eaXBoci4vFJEfeO/lpadrCJOs+uX72Jz21Hs1HrB2?= =?us-ascii?Q?4GDL+2pb0NmRKXVxfzCJUok1vBC6Bmt0y5oV3V0J9F8MDkBn3ytGrINJZRwJ?= =?us-ascii?Q?ffHCqTC+XZni1GoG7s5G4T6Z+dcwHvXDrXRWTNn1zDk07ImdJ7RoufzPxfGN?= =?us-ascii?Q?MoD99VMmOj4h6DhCFK+g8iEikEoLbRvdO+yyV+0udxe2T7uymkRqexY/B/0N?= =?us-ascii?Q?uaLno3bRhoi24Bdb3LAUxR2+ryGhNe6Ga54FQbB098y+1ZFZKc+Ihw3RDr5k?= =?us-ascii?Q?XXgPvdu5+GxFyeyW34Jcv730dEy5Rq1Di3DvdbNeVyZJvOu4FfYrtKYs5MFL?= =?us-ascii?Q?0s2gbYoQUltCIwUnQMkYF/Tah5739dxJ1yHCt0M42hbs/X11IGvmqFD3ZLAw?= =?us-ascii?Q?3HNE9NUTXrq9jIJ8xFCl07MjcFWfZICm7QQDOz+qRPiBkfncW0vlYecpHtDO?= =?us-ascii?Q?KsniKkoeCF/nGnWlYw8XpGhyITGkZFvwviO/9zhljIc/xAlD/9cfjRYCG/Bi?= =?us-ascii?Q?RnZSpe0VJE67tDZXhzLvmWwEVOAVaGloatWLm6iW++XEdx4Gv/lcLisXgphg?= =?us-ascii?Q?Ye+f6ssnu/aEk3CvVjBp4AyUsFnseEz8FTRxDheaDG2EEhkm5hkiXEXofWX+?= =?us-ascii?Q?HZauv2tZN4c8pyMmLNK3FxnGghfQwmchoeI7XAwjwP7vT6M3iS6gbI0uc/IX?= =?us-ascii?Q?e0r9OPpCkBah+49xxbwE+57fSyRoby8pHub4X6RbCcwo+e/XkoInJ/kRPMl+?= =?us-ascii?Q?EKEf7IpbwkFBZH5BMGZJN4gYWAeOQF0CuTiafknB+QMt+urUPozH3q7WnkNU?= =?us-ascii?Q?Gwl7lSqN7HScEckdl803QD22byPOYfJ4gJAH8WvauMG6HHj/Vc6LMehNmpUa?= =?us-ascii?Q?h78kwgZB6FoVUFk5Eblf2/I+zWOc1pmFRoRj/Z1cJqop1IS1o96DgNCBGxtb?= =?us-ascii?Q?RsPuW46arqVcMJ9rKYZfKvQz+APDqu58d5Z8bgum8O0bGRCr/lAt3OZyuQfQ?= =?us-ascii?Q?rCIjBD6EoaUz6KyMM8+GfmEshRWdYg1lxkOiVWIInPs4fo7WT5QHU9WjTo1m?= =?us-ascii?Q?rmWL+98f697c3tEcclG0JRqAzS+Xv+Oaw5li9R9Vvab1kFCzc3CnFjkLdne+?= =?us-ascii?Q?JbKUi4WcPASOdNjiG5WGxXPPrPcHiseYkhqaS8SXgoYBocjQug6KulGmL9vj?= =?us-ascii?Q?u11qhB/HkfDjOZCwQzSuSIccJM4NN2OtJBIHwSbRYYD+TXOq/wjc32DE2itf?= =?us-ascii?Q?B4vGPpDW1YHw9kbSzsLrs3Cio8DrrOQz9UpEZBv+blHfh7KbPEFXg3ARDGV8?= =?us-ascii?Q?l76uO64teAxGWVTsxV64jiXg18ZzK6SxAOHHO7rMdA3XTWTYodkxNbHJojCc?= =?us-ascii?Q?trVqcxKIN7R2TYmVddRLfbgxO522gBWOl79fn9fv9hGSAgXLw6dP23HnpdTN?= =?us-ascii?Q?79fhPG5IP3790RxwHiKGpra3LyqijaHxUuQ0NTeoMvegmDjXUR4SsTHYDgLQ?= =?us-ascii?Q?6BATnzrYGJeSaBCCWJHbp7KSsJjUGOsPwZlNopox5iKpRxp0QSewIuWdzURi?= =?us-ascii?Q?WjcyznikUzwJflhuTE0qQUJbQUFeqgusn2mvjdMvsFrB0vhD8lOM6+Q0jjCJ?= =?us-ascii?Q?O2/PfTlQs2uhiGCfJKhpo+X8iLwflmqvJ7msIRE76CccUPClczqg8bbczdFb?= =?us-ascii?Q?fJc3Xphnukan8JU7ZyBsUwVR8h8DUEtJpBtqNactFBFd6ToNwPbIb1r8G3su?= =?us-ascii?Q?ibrwaQkcPjUliJsaJ0doH0kx2vHL/yfjwUxwRTwxCGTqmf8HpLm9GZP8/e2/?= X-MS-Exchange-AntiSpam-MessageData-1: aebYMJFgSi0QkBAf/qJDvzzWd/mZuAyR+VY= X-Exchange-RoutingPolicyChecked: Eh3qPg1rXPUBUL7Jf8lg1CnGqnbVbrMSKMdS0knsA7CgYJ+Ctk4Omv7zbMMSTyA4RDq2kfSAyYERGm1SeNucCGJQKRzuntudy3LimlgCy0IIeOsM2oa7yugQSpP3KAOj6PZvR1NlxUFhlka95yTfbJXsOFZtOtpZYPLNCdbaqcbIwTBGThAhqqiBVOP1sF+PHBGnHPO5cknoDKB1Hh+csyKw0bJZfjzcSs9+SwO69jnEm9zesNQK34CADZcT40qvYckIrAkDNgHnkE1/8AMyavMg89+Mz+qyy5A5S7pr37FvHkhq1HjtAMOeJQieIiXfD8M3fjD3ENbq/D1ek+dp/A== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cb728b5-2dbf-4785-d229-08de86c18dcd X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:45:00.1930 (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: 6G7Q36dwg9WGDlonth3DN9ewILYtmL6u3c/mqUlXTRjZjzq4AYMSefi4U3JxsQmnm8m3Tc+NEEwLJZ4k3Or4oTFb3RxDIfb1sauvaNl20N8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Proofpoint-ORIG-GUID: OAg3yEK8DX77MRSHRba-s-gJWYAYCrvm X-Proofpoint-GUID: OAg3yEK8DX77MRSHRba-s-gJWYAYCrvm X-Authority-Analysis: v=2.4 cv=A89h/qWG c=1 sm=1 tr=0 ts=69bdb1cd cx=c_pps a=wv7XMN/IKY0/lkzoMchZCw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=iKiJcTA2PjBS6x5JeXcw:22 a=VwQbUJbxAAAA:8 a=rEUqSOOw8WWV4gaEgngA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX1WDSknC496kj wEuO0MMa2nPnSFdy+Jvwufq8PFjsY8GtNS5OtBCLTS8eIl4SyKiogw5Ote03m54EZkaJL6LvCnb Rs9I8A0k3lqljOfRkv3yYN/m/HG/jx2aVf47y65TgvrUu7JxWv+eqQf9AptXkysi/X2hLOdTC+k 3Fz1gBX//BNpDDFMsXzzOktX9Of5XL0ZMf3N+KBYM4xg0DYQlAbVeoUv6hijJgd+I78ecTNZYr+ WXj+edXlyXSQUU1Tn7g4jLC6s4Tjh5gwPMNdoHI0Xl5+M9K9Gxl5hBWWhQBhMUTsHxmnZOfEdQK +aqep6l38rDnd3rCcgtsVyeZmcQBpwaUeST8BflVLOABDNIksQhJ/tl5DgEhuo78ZtpjvIXkOVr r2B7kFTFSG2W3bPGR9RzTrO/GuAkI8K8zTfJlUhyVN1bPB8ED8IvH92FLNxMVH86nONR0asNCuf PvA4QyswtZv0rE9+usw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 phishscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker Having a single group on a given level is enough to know this is the top level, because a root has to have at least two children, unless that root is the only group and the children are actual CPUs. Simplify the test in tmigr_setup_groups() accordingly. Signed-off-by: Frederic Weisbecker Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/all/20250114231507.21672-5-frederic@kernel.org --- kernel/time/timer_migration.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 0707f1ef05f7e..2f6330831f084 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -1670,9 +1670,7 @@ static int tmigr_setup_groups(unsigned int cpu, unsig= ned int node) * be different from tmigr_hierarchy_levels, contains only a * single group. */ - if (group->parent || i =3D=3D tmigr_hierarchy_levels || - (list_empty(&tmigr_level_list[i]) && - list_is_singular(&tmigr_level_list[i - 1]))) + if (group->parent || list_is_singular(&tmigr_level_list[i - 1])) break; =20 } while (i < tmigr_hierarchy_levels); --=20 2.53.0 From nobody Sat Apr 4 06:17:07 2026 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (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 42316364E82; Fri, 20 Mar 2026 20:45:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039557; cv=fail; b=Txj+DX3EjHNcfiQwPqMDwe653GrtdP4sz78gygVm298/kWGI2/bC0ypZmsf0h3uuzIsEzxT1CKWdcHO3xOaO6f+mzA/WEbl/8i+yctbM0qtC6cCYhthaEPFdpxoM9QS/gYnhIA274lxTzt+1NFmr/oaFMvliN36c8LD47fQTI5A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039557; c=relaxed/simple; bh=JS22T2SaCFtHsqdAu8iNZ5Bsia2Uuaa8tiBGMkm4UJw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PUzWAic6xlPVgV3DnA47lsz9jczMz6BeoF3+JmD5lmUY0hmLQcwuyumXo5EztMfSnKFYVWIRncQ2hPzn2vBOSoCdvwfBSXfMnaFhXCijo9n/dfyf5iFv29pnPsIJ5XBo0MVvkmUpMnZUujHQrrfr15j3LTUr/yuI+g1PVouPVYI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=fail smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=TWT5FtOw; arc=fail smtp.client-ip=205.220.166.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="TWT5FtOw" Received: from pps.filterd (m0250809.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KFOC5w1789579; Fri, 20 Mar 2026 13:45:04 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=F8OZAAlvouFmjKKisE6b0HPmZXPRu9qKqYSQ9NCkogU=; b= TWT5FtOwexmTArU/YJpC+B+OrEz6lMyJtYp3B+cY5q0DYNqxWIvokHEZgQtwDW8z Y7zMq99GV94jOz9K9gAFEc3+uXKHupBrbJVDEKuW2uoQ+Eg50Smc66Lw7X60RCAJ Cf6TwpPHHAtiqnDe1mVrfqB0OhkpySYd4CHc0/ZBLcPZlp0JD/o2pUd1UwB46ocY vlS5cCtFk1kvlh/9SXIbt50m5N75rxjx7H9IwcAAOErjHXWqJ+368/0+bXyF70o+ dN8gcxhq8yFpPzmeEZXVOC+lxEGzvKghQcBXbScH9lp0BAv5YutDMSFrPh7KCSQz qrpY3FyzbxxRpYgFEeHwVA== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11010039.outbound.protection.outlook.com [52.101.85.39]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4d18uggb77-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 13:45:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kS2Lka5UV4AM4qiHbUJh9CKLnULicOVkWp87sQ+ho/89gOJWZC+WfF46zi68ewxDRAFpWwBvRNJ1nTXPlUi4ecSFrVY8pquA1+DlpOl/kVhTwy5fGvhZSVLAd6ts8rQDj5u6D7SiJauFk4kSjnZzVzXH8pM5FEn7+h2P/6AZATVmFTEJQTQ3d+FRBESPAROsZJY87qrrq7O+2J+of8icRoxE1DXKsIOEh9v92fgStJZyXbFjBwPgpGs8BLybzik32Vr+K06SykVGY/pxjNjhSDI1ajXtUuaL4P6LQsWFos21WtC1IplyJKDNOd+kcf4kZm0HPeIOH6AMWHidJcoF3w== 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=F8OZAAlvouFmjKKisE6b0HPmZXPRu9qKqYSQ9NCkogU=; b=F/wqehDuPtyNQfnH5gu0RoF8IjHMNYp1n9cnpPJIH9chA8ZRZzBO4DOOCtJuBZWE5V/Zd2oYntFCf6i3CNrNPvNcMHIYFoGGd4NXvJVTD5voVeXwL+WCDnezndkM253I2qN1H7OhcJHO6yJyaAxILngsimjR+9eM+PwnCI+3u5P7Zb+BUXa2glmqGLh3AhJwzooA9WDme1IechKriWHEpCqT1bFQgzZ6I1Q4wwYb6vW6ujeLdOnnsPXiF9GdCKTfwmFVPJPule5x6eWa1gNNB93URs3LMFqBKZZxSzqfSvv5NDbyGZaT/HiGRKuGRGXpdU5X3uNBIA3cvC8N8Zq7dg== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:45:02 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:45:02 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com Subject: [PATCH 6.12.y 4/7] timers/migration: Clean up the loop in tmigr_quick_check() Date: Fri, 20 Mar 2026 22:44:39 +0200 Message-ID: <20260320204442.32901-5-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 237e3e6d-aca6-4e4e-3584-08de86c18f1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: LkFgn3B/PLULXJeCJPnhvtOhCp2x9fqKuany0lKw+OXy7n6AHtkytQrAKrM3fa/kyqT4nsJvqWyoQ5NGFJTs+8v9+DRH9PKeVBed0c0fluJw052APwiE6Xuehi8pLUEO9HmFMiDYMSoW9sZTpow+qZMAKwPmODEtUQvKTtN/ZBOwKG7EyrPqjgOTWXcYld1f1+NUJNGDT/srWbtnk6yaQ3AFXvqbOSeU8j3jhGEhv3ABECUWaog5xTPT9rJSKQEimjkuUy8XId7Ic6j0YKIUEobOoITfH29pC59GwSaIAm1jNAEulILR7b5XejjnGcE6cL4UGI+UaMNTQOAYH8oNaO7/GH1QlHz1+KNkd76C4KD1kQAzmCs1Z+/kXtQbANPJOEHG9Dy3aaelKNV4ziT3LgZ8oj7ybxqc/2fQu++Qrj2X6CF81O1AAOkaNOfscrgutJvzTxOWuPe2nnh5TJdP9K0WDMVuSWbArZQRMcC9uDdOT3aoWDzb5M+XSv3n+4sTZ6LVlOoXUukRkxcUvVhjzAbwofxqH2HEVDGN0TAPi5pT1BARiqJOOYZOJ288Mj+LY5mFgXA8e5LK/76RsfE0WlHH5GgAcf07Ay+h+tEhtu5ZlAAi/zW6LqC+IEubpkneoZ0t+eUTX1/nL0zbOB7pIPMMcwDD8RWqkEmQj2EouW7dMp66y0WGPiO9EN/Sol90Uq98OQyd/rwa38z7oYbopDY6FYNAMi0uBrfAg6fPg30= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HfCWKmQdhUvww3w/G+hHYyLyd/hnFpxyfpQ0UUFf5c0BGLZphZ4wDp723HdU?= =?us-ascii?Q?tgm+bW8oRfaJuldsCzIPowPvUQyIHSsGJEg2dFIx+hEq7CQ1mloNojH3Ah7g?= =?us-ascii?Q?ItNIev5cEa0e3kVfMHFzjk2SfdrYvgvd/t6oayvcUzef2D85EgyawquGAyB9?= =?us-ascii?Q?eOQoszjWCp6jFCfotjB8lzBsbbTRwHGn3kPvaSGfy+DXhZaGuyrtIocM54VV?= =?us-ascii?Q?w2UxGSArLLSLEC8WpfNoajx+hsF4uPeFiJcgMyP5+4Q6TIjWlG4nqJMBh44D?= =?us-ascii?Q?bJaiS3etywYj3m3AHBYfY0ed2dHJDi0f9jPrtiCJe/9rU0mjMls8eIbFuOSX?= =?us-ascii?Q?kwb8AH9V0dfNi0z16WOuR6K9QKCzGZKIWertwDIjyQ+Fz3dJ4p+roGhs2a8/?= =?us-ascii?Q?yniIBnfAi2zo0Uk/IMzRzRHLBtg4isgDbL/FIu5SZJubRhtLN3LLMyotn5+a?= =?us-ascii?Q?FbfFcx2fkdMRshyTRauP2Qes3y6zdUC1JvVEGfQD/t4f4iTL/ImYlUPndD/i?= =?us-ascii?Q?uQ45zZvdNCVEecGzsg5yuK+ClXqnEeM5U/RHYGixu6HSi5jn7Ovvalp87POX?= =?us-ascii?Q?zt8w1naswIlPpNo1jybeAjKqcZF5npGqGzJpHsrfSX5Pr32WIzyR+GWYWffN?= =?us-ascii?Q?kp2lVY3ZTD6xa4u5oFTlTNzjrhw4X4W7Ht0xh/mg8D0ITjFxeVufcOMXj597?= =?us-ascii?Q?qFdLMSUZXnQKRJDg6h+/Qc3hodNI8maMQ85HHhnKfx66baEFHZVu0Bm1lQ/y?= =?us-ascii?Q?BE1eywr+foLqq2vmlThSybx34XJQXzbYGsfKJeGFi4fZ7hZz7ym2nFlVyjvS?= =?us-ascii?Q?CCMS2mIjtL5LfcFjnIC9bSOMPohRMTFclTwIimENWuhYLG6enqWGmPbxh+28?= =?us-ascii?Q?BGeZA3CBC3ARKCRnqIvh1fnRpdvBld+3i8Ecm2i8spuBuaKKJDvDAj3eefCw?= =?us-ascii?Q?IGl8W/NC7QEL9B0bASUFVv83arjfer8P+HRBVVbqwnlMRIrxX+AH6sGbDVCN?= =?us-ascii?Q?aOeey2dNX+QYWnoSY4aNnMs0ulAD/ZFGqEG29ECQq6MfhHIhJnRnuyJKaWsg?= =?us-ascii?Q?hUMn0sV0u2MG6b7CMWhffwTkSH8Oxwies+sqx89Ma3UOUribWoi34PBF65vs?= =?us-ascii?Q?ITLkLrKR4w6k97pBA7IvzHHrqQ3VKLoiMS60u7P5jyVQtz/LmTgxlNpX2C0X?= =?us-ascii?Q?xyx4zhT3zIAYKK42xu7R5HjEaH4o9wM3o1ZnBgJae/xWi7CVfVPYV9eNcmuP?= =?us-ascii?Q?2jAZ0ZVL5fZfdDPdDFbHFdMZs3jD6ejSX4n8D56deT0wwGDa8XZUj/wT4uw4?= =?us-ascii?Q?ftPRRSGLafPd54Vs8iBb0StUb3FuX8NIVxm/5cTTrmtU5RAqKArS4EinDNqa?= =?us-ascii?Q?dDSosBvVQxkddaSOZ0+cAVcKxfqAhACTss1zC/xHHebCGYE48GpE9fB4ODvc?= =?us-ascii?Q?CmeGpnsdkm7E+D4hELGhs79J6+fcSpIrB9jhgds7DdvblCPuEf4YeWcLYEGn?= =?us-ascii?Q?Q0NbDB5bjogpC0lpkhmo9UKiEkjEKZs+sAe92VplQXHreAlkrXE+xwfkYsqL?= =?us-ascii?Q?8DXuWBIIz6E8nTGwO1DqD2d8iJAqJse20ods8twlKxmUCpEybKf/gL8tC3JU?= =?us-ascii?Q?+1Jt+WEZlMS8OUFwu91jkzWQJXzzsyV15H+7VoGF73RpYHXnfQ6KRyXUHV6S?= =?us-ascii?Q?XUzgw+WUfzMFy4Q1wUpxCfGNYhgt/BIa/He+SDBQe1Sh4/QRWsoyNhfVl21V?= =?us-ascii?Q?ZFis7HPPY3R/Z7K8RxnqNlpTbOAXKj9rSgfmOvW899/dviZeVsbxCKvGw7rN?= X-MS-Exchange-AntiSpam-MessageData-1: XImKeZ/oRu4yhK2o14Ymo06MBdRsR0m3AW0= X-Exchange-RoutingPolicyChecked: MtYsYgcysGSUcVC+srVtd/NA9ef2l+1bGrNLGu0feiblQN4W8R8D/0/IxDdtt8jRwhOaYqA/+UvNXIR+8w/pqYK2MXRRf/OO2Yu/4dryrLQhJGA/6yD+hU+c1CahMp0olYN4XXT4vSwEgLw6r/l8dZ9l75v7hNlZnxzuHaTNo0Rg9YzZZ9k/+99y9uFNXwNd27YTWoRPeeAr8XgAXd/tT9+eUTDwqW8Oh9n+Kq3k8a6L5P0Ph1eJzN0yEks2nIuwaJqxyZoU0CADZ8X/4IW4sUnIBI/frYJUwtJd35Wr5EwWG0J+ab2N21+MklB4MwNyy87XHPUWGep6Z+VWSNTLdQ== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 237e3e6d-aca6-4e4e-3584-08de86c18f1a X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:45:02.2109 (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: 28i163DFFojxnDaE8akfifOom0ZkUIKAug19Q/UWMzhanxs3UlvD9oc8JjoGm0wx5Zi0MLHtVaoveeAeBRp2RLhs2hhZUWxfXaKfdIP1qTw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Proofpoint-ORIG-GUID: E9OIpapmCG-SOve95F2yUeccf35KxH4M X-Proofpoint-GUID: E9OIpapmCG-SOve95F2yUeccf35KxH4M X-Authority-Analysis: v=2.4 cv=A89h/qWG c=1 sm=1 tr=0 ts=69bdb1cf cx=c_pps a=pAJzO7k5KbwWJfk/IQaIJw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=iKiJcTA2PjBS6x5JeXcw:22 a=VwQbUJbxAAAA:8 a=iox4zFpeAAAA:8 a=TxSv_89OuFmXkGjAIxcA:9 a=WzC6qhA0u3u7Ye7llzcV:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX+kmcllsjtaT9 3ehX6xTkq/r9ZmJQwFQ+NOtCy2CkLZzN6TNLL2BtCJUrCyx4aAXn4DzFAAUA+qLrZLdtYKjkCVK kJm+cLskU9n1I15qc/TUdjD9l0skL538ELbvgs+NuX7kGw/7sGvcL9rPueCGtaz+/AhkAcaZiJY yBCbBy3f+uh/Eqd3xPn23PSDgaLNRHP233fdedKaMI463hOTFCe3208t7ZMWEiKzoqKzKzoqdog LHTQglX2ladrbpqkyv97SRL1vdI4TYO4fygRjHPq5pXKZjKLh3UcJjNX/uZ703kuXJqBBYFzWlU fIre0yawpuErdNOfiQ5To5jkzRUCxCfeVruVb01aj6vC162uT7oaEV+XhLWNAuNaFi+KNTaEkMT TDKl8i+FD9zqoV/ygRpgr58CkmWoHRQFOjV6yC2fdDVFkiM5G42KldPkL0kneTBYVNjpVih70q1 zaWA9DM4umvD1H+/QFw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 phishscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Petr Tesarik Make the logic easier to follow: - Remove the final return statement, which is never reached, and move the actual walk-terminating return statement out of the do-while loop. - Remove the else-clause to reduce indentation. If a non-lonely group is encountered during the walk, the loop is immediately terminated with a return statement anyway; no need for an else. Signed-off-by: Petr Tesarik Signed-off-by: Thomas Gleixner Reviewed-by: Frederic Weisbecker Link: https://lore.kernel.org/all/20250606124818.455560-1-ptesarik@suse.com --- kernel/time/timer_migration.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 2f6330831f084..c0c54dc5314c3 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -1405,23 +1405,20 @@ u64 tmigr_quick_check(u64 nextevt) return KTIME_MAX; =20 do { - if (!tmigr_check_lonely(group)) { + if (!tmigr_check_lonely(group)) return KTIME_MAX; - } else { - /* - * Since current CPU is active, events may not be sorted - * from bottom to the top because the CPU's event is ignored - * up to the top and its sibling's events not propagated upwards. - * Thus keep track of the lowest observed expiry. - */ - nextevt =3D min_t(u64, nextevt, READ_ONCE(group->next_expiry)); - if (!group->parent) - return nextevt; - } + + /* + * Since current CPU is active, events may not be sorted + * from bottom to the top because the CPU's event is ignored + * up to the top and its sibling's events not propagated upwards. + * Thus keep track of the lowest observed expiry. + */ + nextevt =3D min_t(u64, nextevt, READ_ONCE(group->next_expiry)); group =3D group->parent; } while (group); =20 - return KTIME_MAX; + return nextevt; } =20 /* --=20 2.53.0 From nobody Sat Apr 4 06:17:07 2026 Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) (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 EE93036606E; Fri, 20 Mar 2026 20:45:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.178.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039557; cv=fail; b=dcctdXpXErAXGaVNEulhIlrPc5X/6+HgM6Mxkr8MMobCLHM8BpSIfrXbmXA4bT8S+ConxgYC/eEqR3gPZ0JftRAx7rkuvk/agdptF87l5a1jcaJGgZC1I9Rk/mXQVRXP+a+fClGOicwVizZsCvdFlfpAipi27KKRvBDTLep5URw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039557; c=relaxed/simple; bh=ZhpRVqE70AKVYzCkiRYddGjPkErfZfoV260LrUrCRVk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=k/NIWqdBhunyWdEt0XS8gmxluA5e2+kbK0DUMihjTxLgVhczShtkb48GGM/B3kw594u9dxmvjA2UAm30sjT3IPseIOAxyH6jbIKZoP+iAJ9VPaIXf4Hr5WXIQbhPs6Z0uZ2hDIEZgIITX6zf1qwD5UEkVufcrhesZvy1CpaSHSQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=KcCV7C1s; arc=fail smtp.client-ip=205.220.178.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="KcCV7C1s" Received: from pps.filterd (m0250812.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KCfDLm3198032; Fri, 20 Mar 2026 20:45:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=4FFZj7+t0xkAuJpZLBCYIM8xzsxPZqWVgCgeblE1pgM=; b= KcCV7C1sBQUJFxux9E64JkocwB395kO8YYoYcP6wX2suZJo4fXUjHSgCCMx5BztA HtH6y+85TQMrHcyyXUMmFF28thWzGybisfI+g5M/3ccVCH5+1gEXQGB+JE+fGxeL +DAMehE13xkAkzWFn/CjRXKfd0olA2ZmbnJNohT7w6W/W7aizN1LGSeg3NVuisG9 8qv5n77lCjiMak3FQwDjm2HP+Y6FrtbS2xhwcA+UPH6Zm8q4iTQiUyZ36sNosXMF affktQjUmBVkuzVKkQh7NcXIVJsmzztmVwoMCctYU6ytJ99UfriiQGi4HkQYYPhw ggA60L5fSL2V9GT453jOfg== Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011033.outbound.protection.outlook.com [40.107.208.33]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4cxm66egtd-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 20:45:06 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DEfyTAKrHDbfhiGzhFNtRYrUsQuRUzWUfj476Y+bH8d8fCnQJvxgp/XSkn8q4C+MwCL38PCUmvSqWX4qE1/47a9UmQynKzbjTGYiprIiMhN/uzt4WkRTxutQly6lh5s6GBkzWhFKpKL9bURhJ8jeH4+RQvp+VROuK7665OuEp6Bh/oJqAtpJYiwsfuJ3Gpe4CFuLB/FalN3Cqav//xAcCFTYQNI4esRAerIce7C6EsbwhFmQ0lByniQ3QwFTViHYVNmg9k0ryXycn+WxaCdX5ym9feVkIYSpuStfK9s/gqWXko6f3ODWc5+nRGFxMKtaR9DMjAEAL0DFw+SyzHTdGg== 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=4FFZj7+t0xkAuJpZLBCYIM8xzsxPZqWVgCgeblE1pgM=; b=MH3ikubn7y/yVeuUEEseMBqcgcMglbnmn9cuDO3chi3Qd8Pt2xu4EYCK/4sinpMkinOpoYgWCAjUjGHa549N9zzdH1jL00W2aTtkERydy9FVqF/bRxsHLjfubY9sfWC33Qy7TxOBa4xjbXHXkHH8nyI3VYTCX8mHwkKuGT5c/kplA/vkHpojljrlosd2Yril9OtCI+VVWOIZSjo8psw4IBbeLfESztUf7aCrqh+9LSSXYOIU9LuHq+Ac0fp9la9a+BCt9Kh9b6wthLNnQ9OSw62IX/KyCNn7eD7yUHQ5BIsWQ0GWLNVRx7xOdLUF10zVpYGWynLXkrOoArkAyfZu6A== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:45:04 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:45:04 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com, Sasha Levin Subject: [PATCH 6.12.y 5/7] timers/migration: Convert "while" loops to use "for" Date: Fri, 20 Mar 2026 22:44:40 +0200 Message-ID: <20260320204442.32901-6-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f73d511-aee7-4f1f-4e38-08de86c19070 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: MKd3tBsvSHgIwiu9B4QeCs03t7iKumaYnLbKV5NwDlN8kRM2iFXaodxjQYwO8hBsLw5dcb8cAEiw7etrvipiizRtsOfNpqf3iILuEHyQsTrJ+XyG0G7oJnBoXi0FqCEkq0ibgGdh1/Cyn8N2fYbO0WU0g0PF1oFoIWHAcztg+yekk3Evw0Lbti3CEpYOOUZZeKRhsNIZRpY/TLeQL3e8d8HyHvFVvGSFdG7m93Ps8bYxnnyWvQVaqmemZcoJPUU5EjhMyr0R8aq0CGHmimh7t5wZk62oPc0WHjQbpx5xeuEXlXxaY/XrYyNeZIdeWVMRpkj5HlmSTBtKm5j4gAv/Tzcncjd8Qc6Q/bqbyOyGgOpf26p5gwUf8FZynKrSu/3sVm2XSq64SesyfsKEDj2NZxEGAix8picCWt7aD7PvLIgMAe/K6sx/afrP1Sy0tOEWbNX+HKfbyTvTI5cM4cQBjRNGNoVAVmh52TaPxcyeZy1mdGlpcsOuyFw3IEfkg+mtK30fYoWWPgssIK9BwjILQqVMZKyJ1+7KNCB4HBfXit79OJ/DuMYn+DggIL9nPwatpxy+wjiw9QM1DO9b+wykLCMp/qLrEqORyrpYv6mh2m03sM02CcYGAbt1HP3VRJl5Q+oRahh06yhQTZhAzF/M6srcQ4guMsmt+6nulO2u/hSTel71oxbNWN/+8BZEtOUm X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xRIhF1GTz9OmTUkVWa9rUWiUbCJQ8LL5v7yRDGQnjVDtOB3+vSEt5h1vpAp+?= =?us-ascii?Q?o/0oeo5AKPT8eYLRGzzTEkGKnowifiVICHygCIjWmo0h7dfkoI9Wxmv4Hin6?= =?us-ascii?Q?zyPHFWH2f7EHeeEklkJpuxlIdrqZ9B18NOmP66CL60F9scjA8RrwGT/Lb8ZX?= =?us-ascii?Q?Rn7ZOH1IuNRZYeaui4X1fx2h0pbpWqk89jdH+V/QjTe38xcSfBypsvh6F+7K?= =?us-ascii?Q?16+nWJvKj87043eu0osdSXOF91/nU8vSa4v0qTCinoSToQLCzsPcInrcuy6+?= =?us-ascii?Q?xB+u4ph9Pjw6yYtBmgE72fIg4iLDc5tpo7VgPXwMyYLL8Si1jYzgafG81buq?= =?us-ascii?Q?WWhRB3eUFCaS/htJwB+YZakjFKmlxvjvFkkgpCG4wpoUvp0oYLRt8SQOhyoF?= =?us-ascii?Q?C49KDdo1z8Ni9sSH4z1vfidN2BDZ96Z6HhistFdy1z3uXXXWH840EZCQRF7c?= =?us-ascii?Q?rXdN3dqPo4Snm8mvcQiI+1f6BIejuG9Ea0kLmZJDVXTAGkQlCd5XpEV4/JG+?= =?us-ascii?Q?2KGKX+AmA9l6fqAJe/8IK5zNPt+407NNfzjQ0BbvlzVC9OB+1yBb8MgV/Mit?= =?us-ascii?Q?yg2wkrG4b9LQrQwK4VG65fMHBLzs77ByD/QXTxl1YHvIVnnI14QnnYl0tYGD?= =?us-ascii?Q?qfGxN9O3MUi3ncXsdwVcgVlNVSb5efQ2os0ZCT+r6DPt5n0FbBbu6XwliF5h?= =?us-ascii?Q?C7PKh5apfknN4Z/Qz+TIG0loJBNz3J+cw7JbB1NNcbkQm77KWxOr8KTYp/A6?= =?us-ascii?Q?BGKlYEqh/30q3b70RbFLy/rifvnIy5728a9pBlZMLm0SDsROhupkfW/yVtDW?= =?us-ascii?Q?GDxr4JrRBeC8z8CtFlSTO8OGYn+Xzj3hvQKBrGPpo427D5cpe5p1QHFJXE1l?= =?us-ascii?Q?GhYze2/vbt+yy+CqxPuKBHO1lR+RDe5OlLpv93L/eYn4HzH/iIP3s1KGJg8v?= =?us-ascii?Q?QmTFJ1GNk0zQocsOs3vYYjfdHD4fpnFyJRQ0z1IowSEoPggAYnhkxPx3llYk?= =?us-ascii?Q?4K7Cvlv+XdwEANJknuWWvd35NH3l6S3ISoUGiWT/7n5yVSIJ3LfJ7jHAp6Jv?= =?us-ascii?Q?r2i5+ZTsbwfh5drzGYnMcfd0s9DoY95bTB3OuuD1Ovq7D2aFGRC3m7XrN6hC?= =?us-ascii?Q?n/p4hjqMA/4y2RndsV5MyOFxRgjRGPbtmu9NXHTg99wG6zU5XI6S5WH5vETf?= =?us-ascii?Q?q/KCkiiEPM2WzJoYLK74Qb6LJMWuwiNWZcqWjCMANPUrnwlwgfJ9PFqra9vO?= =?us-ascii?Q?6Hu6fW25Odz2OAu3smeqvvZcpO+ckRsM+yI3ebWps6E5wYf4tUTQAQPXLoqR?= =?us-ascii?Q?S9ErEcnXCy09KLmU13pGdJhVUP2gGQV6JuHrFWNQTf8MY6kZcemapNn39Xi9?= =?us-ascii?Q?6dNkOf5fzLLQhQJO50RilZWGRUF5y7YLMqgiW0ik8qFpui7135X56a5r05K8?= =?us-ascii?Q?exafqa305/mQnMRJDfkLe24IaPgu/zh1g339NcTLfphqz93re31fC2tTC1Ty?= =?us-ascii?Q?E/6pL+su30/vEKbU5s5VQaaqckSWSNthYJaGIXpnscgnWd5pKw9XYwv99Y4A?= =?us-ascii?Q?6HvtmWMzvANbxMrPWPJeBcQA8hrN+cX6abwaJkPv18h9FW2zD9gXXYubphXc?= =?us-ascii?Q?pWWqU45CkAfBP9A8eg5tVYYn/QaAyXrlLsPXRmUh/VtwXrjJg4TKvYNK5ppz?= =?us-ascii?Q?cc647e9+zpWCrNd7fYSpibvtddYLp49lF2qwXDHFLENCgi6WvGj1YHffQzET?= =?us-ascii?Q?0PmclWyqnToRZAxCbFnxXXNjU5VegspvNyK6vHjLVFWw+CxCzil+ATHMYFee?= X-MS-Exchange-AntiSpam-MessageData-1: lelt8CLGECHY2KHlaJ3TP9mOsxj4ttymUpk= X-Exchange-RoutingPolicyChecked: Sqo8kALgEbxjqq4quffFkhlb9dDH1A+/VVi4OrgSTQWO5imfhL0EOkn3Q+XG+15sYZ/LP10UTPOPq+L8SUIRzyRcOmJubyDkgpm0NzJLYQh6uk7R9saqxp18CSKm2DtwDUhGdMz3/sD60TLdIuyIA7SEKsU5yIuRVpLDc9l5d6Du2RVllwlaf0MXDSbY82C2sHcnV3cTftq6iGPn6R0vjjjpAa2Uulq/4jgWHHGCha0U6EZn9FejjiRF7IHc/5xeSzgMxZ27xw7z3OvvVHIFVcs0f0rPPUamjVEMPvJP+FDyU+xAnwes6fq/MdcV16GA2Vm22NgY3tL1lAuFEQlqqA== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f73d511-aee7-4f1f-4e38-08de86c19070 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:45:04.4537 (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: nSOvOgNBC7fD/+HmWt+n8lEChXNJ9dQA8lKhtP7NSUH3QT2MrhOmwSWeBhfEGUrvXfytHMBLUZsINZ+pRtY8aGENkTNTTScr8UOPFN3SP2U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Proofpoint-ORIG-GUID: enT31gEOP-2Xut8k8VdKTYTZ8mnYdDoM X-Proofpoint-GUID: enT31gEOP-2Xut8k8VdKTYTZ8mnYdDoM X-Authority-Analysis: v=2.4 cv=fLk0HJae c=1 sm=1 tr=0 ts=69bdb1d2 cx=c_pps a=GRGg88i0IYp+MSRJKvRoYg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=fTW__CHxibyLmBMfj2wP:22 a=bC-a23v3AAAA:8 a=VwQbUJbxAAAA:8 a=OI6a2Joh_PApT7YDg5AA:9 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX4gGngqGhhlSs 6PvoVR9Vu+cc0dVhIZ3zioFr7TAVRckrAp4L9dN6fCUErFRng3IrZ9ohtKXjYORAtEYCC46S9NM 7+/FiNaM1IkFqdGm/Nb8nHHpc4hvPXSGgn3NMDrdKTFV0lcPytbX5dG+KtPqTRMcyNHTN1BP1u3 NdQFHQ0nat+TDUC+4K2B2j2reNCojKzj8DxFSy1PVVXlA2zrEYgD+RrYOsTiUqvSQTgDGWmRGU2 kz6+3LJdnZIQpkMgA9IRRpbX4UB1ufiB8yV6Sep126UPIbWMUEX9puoPwtOdJF1VhBkWIdF1fzt occL8ytMrJZXNiJnr9eAKGZrchYaxkkWoPyVyBs0n6CdG2zAaO4y1y1rgTZ+dqyE4zMDtPHKPbC 5crUUyNjguQ/4X8Kg4MQMsU1C2GD7rFR5NnSdZhdt/QSH2gofzvO98QG+JoJ8JFKmKaYQ17xSuY U2h9qKLLtgkQS4c1zdA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 impostorscore=0 bulkscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker [ Upstream commit 6c181b5667eea3e6564d334443536a5974190e15 ] Both the "do while" and "while" loops in tmigr_setup_groups() eventually mimic the behaviour of "for" loops. Simplify accordingly. Signed-off-by: Frederic Weisbecker Signed-off-by: Thomas Gleixner Link: https://patch.msgid.link/20251024132536.39841-2-frederic@kernel.org Stable-dep-of: 5eb579dfd46b ("timers/migration: Fix imbalanced NUMA trees") Signed-off-by: Sasha Levin --- kernel/time/timer_migration.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index c0c54dc5314c3..1e371f1fdc86c 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -1642,22 +1642,23 @@ static void tmigr_connect_child_parent(struct tmigr= _group *child, static int tmigr_setup_groups(unsigned int cpu, unsigned int node) { struct tmigr_group *group, *child, **stack; - int top =3D 0, err =3D 0, i =3D 0; + int i, top =3D 0, err =3D 0; struct list_head *lvllist; =20 stack =3D kcalloc(tmigr_hierarchy_levels, sizeof(*stack), GFP_KERNEL); if (!stack) return -ENOMEM; =20 - do { + for (i =3D 0; i < tmigr_hierarchy_levels; i++) { group =3D tmigr_get_group(cpu, node, i); if (IS_ERR(group)) { err =3D PTR_ERR(group); + i--; break; } =20 top =3D i; - stack[i++] =3D group; + stack[i] =3D group; =20 /* * When booting only less CPUs of a system than CPUs are @@ -1667,16 +1668,18 @@ static int tmigr_setup_groups(unsigned int cpu, uns= igned int node) * be different from tmigr_hierarchy_levels, contains only a * single group. */ - if (group->parent || list_is_singular(&tmigr_level_list[i - 1])) + if (group->parent || list_is_singular(&tmigr_level_list[i])) break; + } =20 - } while (i < tmigr_hierarchy_levels); - - /* Assert single root */ - WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level_lis= t[top])); + /* Assert single root without parent */ + if (WARN_ON_ONCE(i >=3D tmigr_hierarchy_levels)) + return -EINVAL; + if (WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level= _list[top]))) + return -EINVAL; =20 - while (i > 0) { - group =3D stack[--i]; + for (; i >=3D 0; i--) { + group =3D stack[i]; =20 if (err < 0) { list_del(&group->list); --=20 2.53.0 From nobody Sat Apr 4 06:17:08 2026 Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) (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 1205B365A17; Fri, 20 Mar 2026 20:45:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.178.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039555; cv=fail; b=t2fPDMvyO6RtYftpVs6iknkFDoqDScCbry49RwjW7A2MKbPqdttukf/379ckrz1tETOLo2YT0V57tbMQCxxepZCcijuwiLag2Z6vKyz8+u0nreEcLOG3V9PmqUTCF9x0Gw3jbJXVdHv1HJxWfhOzo4VJu3NydSWVSC6iAiFDU6g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039555; c=relaxed/simple; bh=rcwcHlpEBCS1Mf4ElviHMFgaWj0HvERy7ItD+HceGX0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QyvZGElTIT2feoa+GVStJCD+o4x75BNgX5C/QAmCnar6DBOXqScSFsLEpNsbY7+se3rflwcI1UK8GhA2/q8HHywEpJyXG5twKiIEHLO9+bj9X05V8797GbWtm4CgNtSAwOsf5smSO55gowK/VUjX6dgnliRW7YRv6M9NZmkhrsg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=KKzEzKIf; arc=fail smtp.client-ip=205.220.178.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="KKzEzKIf" Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62K7njld216331; Fri, 20 Mar 2026 20:45:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=h06npuR6H8YcEVJchKJLhfTiqLHdaoa5iGGWLcfl1pI=; b= KKzEzKIfMbOdYLRDzzz3IucR/5LwUj8KXKJhBact7cegrT9PzBuJsjhHV0SX8f85 JVePSsvFXVvVALjqM7JSUNsAIqTkHwA53+wttF7TEYk4r6ouZJRV3Gxuo8Dgph4p +GZ33GF//+QRidfrfco3tj3RbD/Gn/f+qVjagZhG66p4xExRhHHfDfqPimepC1Lw JQG4JDncvGyWqtlkrNryFxCEis3sauT3y5GxAGngC9w+P5QsBM7amAOy543/DJcv h1YuRPjoZHwmXQPspr72QukJJejh2udv3vBomQw409IhZ+FCL/1+DvvtTVFFFNC2 lrDCQ2a7fq2ra13Bkw+3Xw== Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011030.outbound.protection.outlook.com [40.107.208.30]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4cy9anw3gw-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 20:45:08 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M0ytMXjdr/8dWyO/0sf9syD6WvfhIDiYv7Udg/8SxGiOQtbJk6jD/3yR30mzUMH5e4VZn3+Z1z1jFCQ49B9slpDqNAMufeuUX5IFv2RFoin+AfTezBCTFmAooNOalW5xccPpnLgZFaUsOn0N2F1MPSOmvGTeoFDZUlt5nY4mWxTRQ7NBjxVAwMARPuKp6SNjNwW1NAUv3vlgJNpKNxL3AjSWPqnRXUboy3WpEFH7uhO2njsImdvb+4zWyGhpP/qegohR6lZApXtd3+bK5F+40m8LZ13BV89bYb7D9fWsQf8v0TsaQjycqrympSn9cWkquiY64ghnEgbouSbAKg9xCQ== 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=h06npuR6H8YcEVJchKJLhfTiqLHdaoa5iGGWLcfl1pI=; b=Dc9UWw6B5rV21qQ11IdWdUxBbBNDo8nRGKDpidjc6a2UH71txEXEmq4UuiGzrK0ltR8XnqCzpRRzp/o37vGCkC5NXI8NtS25o2zHWusM76M/3vyI5fp/EpZt8nmL7ADPouDTywtK7O7g//ulipfIEY9pITck9x1/6fuhkkj8g5++F6PicQm+U03MqRDK5qv+7wfKwM8EXFQP/ZSYneSQEANPQXHPMByD5297JG+KoQ4nf2VocDdVoWWtPFny84Yt+NY3ps2NWO+rZo70MIUJOldZmoJ3TwhHFxuuUjWq8AUJnhdHa2FMwxsIXUx8973L/Dl2RC1ZS6qVOa+u8DNszQ== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by LV3PR11MB8695.namprd11.prod.outlook.com (2603:10b6:408:211::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Fri, 20 Mar 2026 20:45:06 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:45:06 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com, Sasha Levin Subject: [PATCH 6.12.y 6/7] timers/migration: Remove locking on group connection Date: Fri, 20 Mar 2026 22:44:41 +0200 Message-ID: <20260320204442.32901-7-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|LV3PR11MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 171c349a-b4cc-404e-2ad8-08de86c191cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|366016|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Ufq08GTXZ9pz9kl8p35LB18W+xeo2RXrgg9dQWU0XAgaDbuGjfSR9tF7eq/Omr3h/2ugIV+ueu3IdL3CUwPZcTta52891bsJfs3QVZ0qPxqL59WxcI+OhVxtdxKfKemj0zTI7fh0P/cYH3CrzsVMHh2wKWvx8YY+5apehq+BVuPdb4FVtLuVGm4sIMJeEWsEZFhRRTCG5h6IFJ/Epp1XEkqXokoS14UnnkBGOoUpF6cLKJtRYBR254iz8+QNNTCbJBwW7X6YR+XUtB/ZR3bgVcWonXg874MhAku0AauR15pK/H3QBl7e5paI8//UjfZLNvLf+VYHwWo2FeaQRfdh6SFw9819hZgK7VhHASPVT27XFYyGZAReJqKsmXup5XDIKsDyWx/v1vEdtUGEsBOo4MiJhwc7DybqtlyvkNwMzgmKzKAR5kG3a2otsPaL8GgXcyhMbbkWeFmB+l/7XUiN/z2qvPrqkRhn3sV2XxfcA4DYRzYkIRw4NjGLK21RdAyCjmjoup1p5uxgT4d06MR7h6j7Mijounaxwu1ZL5aRjY74afTzbxEbaxU/p3Ocp0aDfRDP00sAK90eoiS/zc7qcECr5jhB/JdsN68sbFtsODuk0ztMT5saO8g1fh4RuvStjXz/9Kivzy9jBG+zSSN887l2R0G0/mPAMbwhP9KuSEpQp2aR1pAbDADCPP/ldcl+ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(366016)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Z8OAl6lB689WgadITbX9+QxN9eHeqJ2cx/JUk4YGIs23CeesHQbSoDprfjW4?= =?us-ascii?Q?78fQvWItiTy2ibBSzfcpa4zoId7GamAOor0laqJkmm+21zQWxZrX+BJbhD2c?= =?us-ascii?Q?jFSAVv8Sl2kxJ9+Z4tQy8lELuLsibSWb/BSLTlFGDlQ1zBJqtM7V3F9AIDh7?= =?us-ascii?Q?WkyMgan7ye+4KUUq3WGe0YUGIhp+1VJeyw79I64StbAaySfl1vVg3LvaLyqu?= =?us-ascii?Q?rvn8KDUQgwRGJIoJHg5cLlwM3ygZy5os9hTs4dXKt4vQgiuotySL9gjonu1O?= =?us-ascii?Q?tYxj2VgCRmGmfuAmgTG3wJ63h+LmXa+cxqXusm06gPgE1lfmG//EVvTcabmD?= =?us-ascii?Q?eY/svVo93PyX7USeVp8EkDaF974ZXp/2S+Gj1mgWoPORFgp+rYmJ8h1vFcoq?= =?us-ascii?Q?m+D9p8Bu2aX9knuwQFHu+rtk67Av2WY+B/S+XTHO6QPeiP7aXcptR9JXkhze?= =?us-ascii?Q?BQOcr+MJVo5GZ3KOXtzofNsPLA7UtLxGCTyjWBtHQHdxbDj8ePXQ9esob8jC?= =?us-ascii?Q?mXi8yDTEmCBA04e5I09fz8VZBFdi++0S+sk0wLN7X/IyQhcyVf0ipD/BCmYg?= =?us-ascii?Q?1mfB/pu/lKjs+h3AajCjP/NOm8QjMGssCQeryESe3eci81NTXw+paRAD1eEC?= =?us-ascii?Q?Ggimo9gSG7VEMcrEInKJDpJ+b8fI6p91hY30+VXMty67Ui09q6osP6i2VBmV?= =?us-ascii?Q?rZg0iHBcGgwq1bxBbbFRnh+1NgBlBXntSKyzFn4nw3HY8/sEviyPN36FTKWX?= =?us-ascii?Q?utKy0LPJGf9Lp9U0ujd6UcmQhI9X9vlY4VDDqQBhH36dphdGE+edWzXu4uEv?= =?us-ascii?Q?oKlAnGo+DGovvnnQ/2PgoWYGcM54bAP8+K96BfCRSso7Ev6GjcrkzD+sYuwb?= =?us-ascii?Q?OzS76llwNcOkbNERoCeQDMTEeVomioijgIap0Nd+e7GyOjj87/jSuD5NkZ16?= =?us-ascii?Q?inNs1Nq/Iow4IWNnB2hrn3EC7OW6ShUIlYSkDgPeMueniJXw/Zhy1IgClMVc?= =?us-ascii?Q?bsuNJ7Ik/ZiR1zLCNaIRBWXudGdAn+jkwZXRSn1yB63HSGoyOETD+Q4P4SOU?= =?us-ascii?Q?SkCJ2xVFElCqq99lO/sxHhNhcVrlbAtL4aS8jYq1jB0JvJLWGaNzv3XfgR0d?= =?us-ascii?Q?gQx9MoYq9CijL59bmMFV4QurRvE3zKEDBodqowDeacsxoUxgK6Yg5OpueGh/?= =?us-ascii?Q?uXMSffzw8DzFSNyKzyK5NbHSDHcnSqcrHqjQkLltoZiZ4pfoQXjux9EiGw0X?= =?us-ascii?Q?+p7qWtir394BVIcxkQPP3hPIu0CYez5vIp7/55oeaTO/+1hfExWte9zmsGrU?= =?us-ascii?Q?AzexqQnxP0Sh5x+xv1nKEeHLhA9/bh6W7ELODLVfHTmdq0ganF9d5x7t/Tbu?= =?us-ascii?Q?kPh0kZaQFw1QoPmvlZLKbE8DcTGKOIg836s/XGG5HWlZDRC66ia+2eNPPO5R?= =?us-ascii?Q?iemLAWx5wMxibCjGPf99r58kKS05Z9AKLhWAcbJ9ZjYcChN0m0/Pg1VoZ9AW?= =?us-ascii?Q?eRcVOrlY0gRYLCBjqi7I/ooztkSEe4MOGDI62z4cAmlKqe4PqiscXqP2HqgI?= =?us-ascii?Q?0miaizwak3F5NinpbBzgJVdFRVtuf31+BDuvRMP64bG2/1Rc8f9x1OOWZtXS?= =?us-ascii?Q?xZOkfxUyaCfTlpgG9Q1x73nruQibGeAtytfIJFfjW5J8REr9D1wnrpx0n2Kl?= =?us-ascii?Q?qkXPTiNZFn9BOOpba6GNPosT65T8GSg8hgQznZvUZCCvmnppnAx3f7VUvgFT?= =?us-ascii?Q?barkO3gfLbwjDRJXmk+RTKenoA7m3xj7jE6EE+WgAtBoibpGNpIYJ3UYYXS1?= X-MS-Exchange-AntiSpam-MessageData-1: tl1fgumm7W7F1Xy0UAVM7laQFnl//xNGS14= X-Exchange-RoutingPolicyChecked: CdtmI5PWfO4ZVekSp6rgEn/B3Zej0EE31CELDVjW9qTM46HlVNOmyqFAn0aMVhG1yyx6Z7LwJy/Kai0tm2fKjvExyCTy2O+J0EM7VUCnPouD3ZK7sSZK99EVAis7i/Fxo3meLvhSY6HlkmX7VY9q+/TZLVpH4W1Dnb+ySEp2z7tYWomIx4GzjPeTFDPAAcj7LhPPuzFkHUiVzCUiY0S9WiHPkBAypJIQTIgju8qH75qSVjSZPzeRq1COXD1rYlMQkYM2aW/z6kCoJ3al8hB/igXxgjF7757avgxaQv+4gTMtg/dXFHyCGBKF/ukxCwMcHJzlgWNhrMXiydt4IxfXWA== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 171c349a-b4cc-404e-2ad8-08de86c191cb X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:45:06.7714 (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: DTQpN4e/VbzhggQ6Evqy5SwXhbHI3Bxn2zqoBJ+3vTUX674mtIsNlv3pZPKajCeEQp/ymwGSMvKL7mBf/5TNQH+rjE9/0PvhzgKumRvrwOE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR11MB8695 X-Authority-Analysis: v=2.4 cv=IrMTsb/g c=1 sm=1 tr=0 ts=69bdb1d4 cx=c_pps a=ysgzExocFkmHQmNOaQPFvQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=klDOsUkWDRETUCZYPvoE:22 a=bC-a23v3AAAA:8 a=VwQbUJbxAAAA:8 a=m8AVFSUq4rpQVGrp6HcA:9 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-ORIG-GUID: nPpCkqK0lwmTnWZrHvDf6JmC2Fed8_cZ X-Proofpoint-GUID: nPpCkqK0lwmTnWZrHvDf6JmC2Fed8_cZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX/ku/XDLZCx+V d2MH4KFtQg7mQ4r79amGtFKxOsq8JDmRnq1Qw79JPGpspjn8ERr62ftzqw5PlqtU7AmmJg4KWBV b92itjn0ISQgk8yJLcCG0w0sfXJ1vJch6autg1drCqBZysX//xwM+rywismknxxdkMV4hPxVTKT imErV349GdJT87YRIlO1tAHOm20XQ2NE2AbYFvcuNCi3HrSXiaJPdwoboFoVZvxElZUS/70L45x dZOHe8yTB49fTP0LuikNr3A+MM7wXSeUAGshjpTSrldZLbvMnl0mNfWEUYyOXU/5FTlCBK/T9By GZ2iVeoFu9dglWi1E4O4lW2VzKeavrDywMHQAJbEocVU5FLxXzBwplyc5T3NjZztT4+I/HTYMSZ LvrmJKbxEKo92/GR2LQuRZ0NvPBLH957CbM0aNcIIbQEBG2jtJZ7BwAONIXryIZPRmwaR2L+ps3 pDTnSGVJ0xW7W/Oyhvg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 adultscore=0 suspectscore=0 clxscore=1015 bulkscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker [ Upstream commit fa9620355d4192200f15cb3d97c6eb9c02442249 ] Initializing the tmc's group, the group's number of children and the group's parent can all be done without locking because: 1) Reading the group's parent and its group mask is done locklessly. 2) The connections prepared for a given CPU hierarchy are visible to the target CPU once online, thanks to the CPU hotplug enforced memory ordering. 3) In case of a newly created upper level, the new root and its connections and initialization are made visible by the CPU which made the connections. When that CPUs goes idle in the future, the new link is published by tmigr_inactive_up() through the atomic RmW on ->migr_state. 4) If CPUs were still walking up the active hierarchy, they could observe the new root earlier. In this case the ordering is enforced by an early initialization of the group mask and by barriers that maintain address dependency as explained in: b729cc1ec21a ("timers/migration: Fix another race between hotplug and = idle entry/exit") de3ced72a792 ("timers/migration: Enforce group initialization visibili= ty to tree walkers") 5) Timers are propagated by a chain of group locking from the bottom to the top. And while doing so, the tree also propagates groups links and initialization. Therefore remote expiration, which also relies on group locking, will observe those links and initialization while holding the root lock before walking the tree remotely and update remote timers. This is especially important for migrators in the active hierarchy that may observe the new root early. Therefore the locking is unnecessary at initialization. If anything, it just brings confusion. Remove it. Signed-off-by: Frederic Weisbecker Signed-off-by: Thomas Gleixner Link: https://patch.msgid.link/20251024132536.39841-3-frederic@kernel.org Stable-dep-of: 5eb579dfd46b ("timers/migration: Fix imbalanced NUMA trees") Signed-off-by: Sasha Levin --- kernel/time/timer_migration.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 1e371f1fdc86c..5f8aef94ca0f7 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -1573,9 +1573,6 @@ static void tmigr_connect_child_parent(struct tmigr_g= roup *child, { struct tmigr_walk data; =20 - raw_spin_lock_irq(&child->lock); - raw_spin_lock_nested(&parent->lock, SINGLE_DEPTH_NESTING); - if (activate) { /* * @child is the old top and @parent the new one. In this @@ -1596,9 +1593,6 @@ static void tmigr_connect_child_parent(struct tmigr_g= roup *child, */ smp_store_release(&child->parent, parent); =20 - raw_spin_unlock(&parent->lock); - raw_spin_unlock_irq(&child->lock); - trace_tmigr_connect_child_parent(child); =20 if (!activate) @@ -1695,13 +1689,9 @@ static int tmigr_setup_groups(unsigned int cpu, unsi= gned int node) if (i =3D=3D 0) { struct tmigr_cpu *tmc =3D per_cpu_ptr(&tmigr_cpu, cpu); =20 - raw_spin_lock_irq(&group->lock); - tmc->tmgroup =3D group; tmc->groupmask =3D BIT(group->num_children++); =20 - raw_spin_unlock_irq(&group->lock); - trace_tmigr_connect_cpu_parent(tmc); =20 /* There are no children that need to be connected */ --=20 2.53.0 From nobody Sat Apr 4 06:17:08 2026 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (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 DCF5B364038; Fri, 20 Mar 2026 20:45:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039552; cv=fail; b=fVt5gonH0anZ3bBXy0KM8shuCKKC4cHTtCAdltpnMekiikd5DI0jmR+uFoO+5B9R0Y7q0Bnm+Q7vrMLauVpjRLB1GOHq1Bcfjdrr0Q7GIA4um3WjTK2wFcjqGGffZWPyoZcmQ6DBW/uwbDjiCluVeX/zQQkl0J9/5zsAeuTsgmE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774039552; c=relaxed/simple; bh=3IEeiaQQnDgGcY/Um6oE6skMSmYdldUYh5bPLBp/0tM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=snNlYhQyPhmrlt71mijrY4EVubM3KIDpukor5DFm4puia2zpkwJafLFQBhnxlOeXPvRDPwLpS+duo9iTx6x/hQknv/w0X/rO/4+r6AR8ZCdBavOwuWApf41QLWsPt7sFC5U8jmBTfCiyFNvjOudxt7dBOk/HLBvw9kTgyc6pwOQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b=pQrwvHfV; arc=fail smtp.client-ip=205.220.166.238 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com header.b="pQrwvHfV" Received: from pps.filterd (m0250809.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62KFNrV71789288; Fri, 20 Mar 2026 13:45:16 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=cc:content-transfer-encoding:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= PPS06212021; bh=NvgeKf27I+9OsA6o9lSFuMD117exw8zSKxHdYScYsd0=; b= pQrwvHfVYcaQ+tGaoLRR00O9m1+k7c88+g2gEdAM/ofBusaJdUZWXaQlOyAeDA6a cVGvY4zqnyYwsjwvYYRYCb5ha0RpEnNR3AONxz4qLYnJwYckV0GSAUDW90WxL8Mx Brb04Fp3qxJffDgLR64PivBPa1vPCZaWrjb7SV6wFHkyWpoGRxo2LSESBziglRZ2 EmE+irKnXBo4qoUlAAcx0JSUD2MITiTIPlPCFKjCoRijUdx/k/DnZ5U4jgcKGQhx SQ5Og4z/Eku9Ic5dJjQJs4jYKECzTSpkRtn41aNOWNh+avnCpyhzIZKnyOhPeqNK UQ5vdiwymURmMaQwzeAoyw== Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11012038.outbound.protection.outlook.com [52.101.43.38]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4d18uggb7h-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 20 Mar 2026 13:45:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XJRh43smP59aaKEVcDXjk6hyA/r1iKA/9KPYj3d3gWljlTMZ0H6KBRmwCflDXEadxTOt9x+wPCIGIMRXKGygAd9wScyscqJKSecYJe3g+SNMroBUSA4y8QUIq+gRW/QgohOtmP+dVdO+ZSs61ysnFx82AKakbt1FlPFM98NSy3f3DF16ahmJcFY0dxb4nOR0AKDRITdWXDHFRRc17SnHPFO3Tjs0JdYbk4BZmXTOMXrUyz8dgw2haw2Z9VykHXDHWMukA2OUaECQZIumXFuHuIf2YZoRKHUrWge+xjTdQ1FRwI+ajre7TR/VYepBm91K+dxqJwvWJwn6g4qEjtszTg== 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=NvgeKf27I+9OsA6o9lSFuMD117exw8zSKxHdYScYsd0=; b=mccEQ6GUr8SRrrNTaebXl2NLBC88lffphtD9zmgh300gy9dpz0bPyqHWsROUXOrq1Xkm8ylaragEY8Hklrn2HNNJOJkHZHBuKy9uF7VN+H0piSEexIT0AC8GgCddGI4oMoD5Jltq2d8AoP6X0ZX1T1InGppqCagaGiP1QvtMR8l8n3kQHjBrvvGPWCKp6n1IfVjJUNPCOIFl5lAwTZWw1sS6ZSQAe56nFjeZvWGmJJ5Zdy+sRPqIv5UQXawlKincoq3p+NofFO2ir7kmYCHqArsDOZUUyVxfgkf6k0qgUu6q46eaeZpCRuY9cewSZ7MRu/4Ve4V2rDBvLgAHqU9CWA== 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 SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) by MW6PR11MB8437.namprd11.prod.outlook.com (2603:10b6:303:249::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Fri, 20 Mar 2026 20:45:11 +0000 Received: from SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9745.007; Fri, 20 Mar 2026 20:45:09 +0000 From: Ionut Nechita To: stable@vger.kernel.org Cc: frederic@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, rdunlap@infradead.org, ptesarik@suse.com, Sasha Levin Subject: [PATCH 6.12.y 7/7] timers/migration: Fix imbalanced NUMA trees Date: Fri, 20 Mar 2026 22:44:42 +0200 Message-ID: <20260320204442.32901-8-ionut.nechita@windriver.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260320204442.32901-1-ionut.nechita@windriver.com> References: <20260320204442.32901-1-ionut.nechita@windriver.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0296.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::16) To SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) 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: SJ2PR11MB7546:EE_|MW6PR11MB8437:EE_ X-MS-Office365-Filtering-Correlation-Id: d76dc035-9a4c-493b-15a0-08de86c19328 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|376014|1800799024|52116014|366016|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: ZhlAqDsQYTcnJAHFhjxP910ngTH8KmaCZw6FPUodvhcU9YZvkxqniUTxfqtnjDJFSJED1zJUkCBW6H5IhWwoLMo+6coDsRDtlxXyyxDu4P6g+HQX8hH6kiTECYF/sonpvoC3TPylfbC0MdGZsv3LX8pMJnMFn6/KPJipqne4AUUwLiF/GnT6iROIqGGJutTU5gPFFouLDIDps4HXD03DZ4gCkomFHuI0Cpge9pKnJgRwxhFwI/L1R4SiEpeRkcZw3TkkpIeAd16dWVtYz2OPLIItUZ3HtE+TWgbx3NdUhmnrni5+IVeKTqPAT0wy2mgPELlu8f/EESFfYlxbiGWyHBlJlJPUzFUJ6dRjDrx9cSli/TJaESVNiBnQE+k1yb9cyfcvPt0+ZSs7q3bAvf870MEG2bxDP/xHzy/do5J0u7NZkBzLnrLsciZD4k+LEdIf/nVg23gxe0G8fYTYpL3gzc3fYyZLLoGCQVMAXqCkyQbIDGeLJB3CDMWWjQtjI9GjQDPMF1xfGhkx8iS1QA1tZLcnMnLD+4+DRCSxCr0uN+8FbONLnBKTFGHX+UrP3YbwqhOEhKdeXbznFJE/BxZl8KmSd1N8nrRvf8QFDMjhS5r7kynec2iXSXaT0jqEFU6C8h+5M92BbjKuziZpk0TYzQ/MPkCYhAd2UnJBl+/bWnI5rlTvZ3g2OCVJz0CFPm5u X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(1800799024)(52116014)(366016)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qft46/Bwn9Fn9JlHoNR2jlQeoHTvLbnvQP1ro/6XkiMCu1QM9lvQpuF0Y4c0?= =?us-ascii?Q?pbiH173aR4VgyT3t2IpXdr/Fgn4ElIVISSA29SF3k04ExAyPx8jHLUntFJKz?= =?us-ascii?Q?ho/F5SK78kTZf0rTZW52C0dOIgpJcxEjDI0spXUzem84vyTeHSE2oWWY0Upf?= =?us-ascii?Q?jb8eWPUOMMKYt01nlw+5DjVFfpFHAtHVH7fm25BNqDOYt1VO+Z5//3peUhy6?= =?us-ascii?Q?pdUwSoKbCt59CUOWQE/7MFqdSIFAzLfmbOQZhYkLDxiRGHi6hTtjlooKknnP?= =?us-ascii?Q?5rD7AaXcdoJp+vp2ibbOpaqeHxtnBXWBh0wb3nif2h61xQFq2I5TddjZaIiJ?= =?us-ascii?Q?thp9j6RIG2ksXbJzykczRU4xIiBhJBk8YMEfsZzpBW7u1+j6MLD6xoEnnZzW?= =?us-ascii?Q?LRZAgiZDcPhLSEMY5DJgL9jxodK5Xx0LSzRofw63/n1xOcNTx6K9VbzIyuwT?= =?us-ascii?Q?P1Xr6UvPQKcoGehPYhItrfNrHcLtud/poNY6NrRfxYbnV4h8HceYZAdmxiqa?= =?us-ascii?Q?SWtgSqPYA/tim3MJ+NIJi05EX6VnNvMFoJh1gLoy5W0KdlFEXEjK0bRQtAay?= =?us-ascii?Q?kM2d5WxhUm+URarCF0ymmaFb4sBZGtSVLpajVQDwZzM1aFKvMOaycvqKu+tQ?= =?us-ascii?Q?Kr9VbPmDnU7XpudGT35MANwmnGbBckSscSTfAXeLnymObIs//jrfRgvcczwj?= =?us-ascii?Q?9phKCGDg+uOjz+1dzSKREnvimrH7vS4FFUyb556aAt3C9EG1PsAJju5aBr1z?= =?us-ascii?Q?QNxkSHEoR72xwcL2KuFMPMMp81Iqj2940hi5uTyxndUfDhk7V22aymKzrjNK?= =?us-ascii?Q?ZAwCqQE2+muN5y9f6Pm+OpU1PaltPI2NQZ1ZosLWEM7b1DKZJg9N4H7dSDAn?= =?us-ascii?Q?P6BrEwaykI/BrjV5q1RUxqje8EGmykvsMKEyXc7KwsVyVDCBgwHgGvxsDG/M?= =?us-ascii?Q?1MTNB1eZJ8exrvcdPbp+156jfWloyXsbap0baG87k62wEqBn6JOCP2oy2ViZ?= =?us-ascii?Q?X+zTq15gd9GMCn831Pjp98ZFkzzCWjMr9saJH3dIQyPEkBZnmBtM9RR78q2C?= =?us-ascii?Q?GstHWLTxT9dXS4hixjQKvaAAfA3ijLJc6HH179/Hl/MA54vNsgD1nFdXmypG?= =?us-ascii?Q?6GCLYiU794IUy8gNPce6wwlc+jlbr7qMbWR1nyO5KmlXQIsGqBqNk7ULV5EN?= =?us-ascii?Q?4B66KVPN1gZKyna9P4349x0n+BzGhRsNwJZZN+JBhzvZrGVtdW5JJSgBu2ci?= =?us-ascii?Q?ABxZ66MkVjDuxt4MuBNbWpD4yCVtEumJD+yLPQO1HLjMA2FVy44wIVyGzvMj?= =?us-ascii?Q?uHex6P5eIeHotbicxpR7sJY+jWV2RVyw9gwf6BAh3uZ6BH9ymvXjtfQTn7F5?= =?us-ascii?Q?zc6USn+tjCxGRxi6MilAfjoWFNQIv/7CWYK8cxnyv5cUu5T8pBNdUbjUv/0N?= =?us-ascii?Q?OcL9HSzjm710xkHhF7MLU8UXsnJQJHesyGjgCAXNYURT+n9XKty5CaUt5T+l?= =?us-ascii?Q?ImKAcx9Qh1cjV+rv1g2N8m2YJ/UxdGR72Cv5zqGnWDNBCRsnvYNijEh+cGgn?= =?us-ascii?Q?HcyTCSU3guNc7AemRp8kCUb2IWTtnnrH8BOe5MfUqA7yYeF2PzK2X6Mnvv11?= =?us-ascii?Q?VsuJe5jJKoOvIHFNoNtbIBe/DQLoBKO7T1fPwEv9Jn6gH6katybT67qjYxkM?= =?us-ascii?Q?CRK2urgmysNwjBA6nehGOWQ7TvPuHpAgNrv2KwS0H2Qq/2vbXTMOVQMkX4XB?= =?us-ascii?Q?Y4R5QMQw0Wckob+rkfZQv5QxZORm7pF5KwROJwfZ0sBGgQC8bWYPG1OWhu6K?= X-MS-Exchange-AntiSpam-MessageData-1: VLYVcEPl96nFS3vOV9xX6A0qoMLrnZNFYE8= X-Exchange-RoutingPolicyChecked: gnBOOEk7QbqN2hd2X9mohCPd+xNB/NWazv4eYd24nf1tYD9an35UPDOi+6pEwPr4HtnHVLU6Owkwfze1AlZKOd8edZX9JLiS7pQ+mRTbKvDwuKkPnHGOB4CxtB4RM2R3ZajDEkK0DJHhtloUQ4vP4tFNkGk9a9haPrq/U+QgQHMZbGii3t0opYVu1NJRB4PSy9JELprFbYvMuoBwnhFgDm/gv3IE1UAzgPXO0l4mOb2wf77BVKYvsM3lM7oRU+ogNkS0Uy09LeqvXB6Z01PC0PSYWFnM0fHlpIZcZZKHR3ncVU+grfX6tgUxxcym/4k8+7gDceyMtY8pzOylwQpbUA== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: d76dc035-9a4c-493b-15a0-08de86c19328 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB7546.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2026 20:45:09.2212 (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: FId9jIO5Uun6vQKvQxYnTkEVE7NNEYVuY/Jg6ZPRZWkA3V0CDM2d1L4OKD3IwZp54upjs+4keb+3gc+q/Q4bR5T/ITnjxjr93rR0XjtHyfQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR11MB8437 X-Proofpoint-ORIG-GUID: A_-psWsjSzoIzbMbyVSnEbmuk6LW7vhl X-Proofpoint-GUID: A_-psWsjSzoIzbMbyVSnEbmuk6LW7vhl X-Authority-Analysis: v=2.4 cv=A89h/qWG c=1 sm=1 tr=0 ts=69bdb1dc cx=c_pps a=MTA8SzjkfSP6DqtUeP+PaQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=bi6dqmuHe4P4UrxVR6um:22 a=iKiJcTA2PjBS6x5JeXcw:22 a=bC-a23v3AAAA:8 a=VwQbUJbxAAAA:8 a=rPOk8Gav1BpNgUgkAfMA:9 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDE2OSBTYWx0ZWRfX6WkVPGKVnUV+ BYsAY76TVcTrcjpXJ3YLP7U/5f4kVDg+jQgMmS5AN/845GXv9/qR/N/MWGlipYcp82Bt9e2s/t9 Bh7gMmg7mL1zUuJGydSJN1UkwXLzyVqzTMt2bIzRjzarffp7CFVrivygHhBiDCNYvNjB1Pp7Qfs RoJlfnXp7j3PTqw+GuR6NRv7Z6HUvm9uHnVi5Zncr9ttz7Ix7Gw5d8deFvMqP+3agDSuf7k95qn hLoUb62glK8WQmvlIC6AErg2zsvy8KWdyHi4uIce6mPeXjFCx+h3tGtl95sY1xFRiOg0Beyfdmf zs1KPaMcQq92o0Y1luAWYZvUn6hNglRfpL8s29Keld6IJ3amyXkTCai6JyONLcVUYgDurZQ4ku8 9HquxbEgK/JhJnwQD4E4UkHbsxM9NPaWplrTtNqPVIc8JNa8pmqlchGvXVcuUquMfuB7JVznU3T EROb0D0KNabEaUOTzXA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-20_03,2026-03-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 phishscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200169 Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker [ Upstream commit 5eb579dfd46b4949117ecb0f1ba2f12d3dc9a6f2 ] When a CPU from a new node boots, the old root may happen to be connected to the new root even if their node mismatch, as depicted in the following scenario: 1) CPU 0 boots and creates the first group for node 0. [GRP0:0] node 0 | CPU 0 2) CPU 1 from node 1 boots and creates a new top that corresponds to node 1, but it also connects the old root from node 0 to the new root from node 1 by mistake. [GRP1:0] node 1 / \ / \ [GRP0:0] [GRP0:1] node 0 node 1 | | CPU 0 CPU 1 3) This eventually leads to an imbalanced tree where some node 0 CPUs migrate node 1 timers (and vice versa) way before reaching the crossnode groups, resulting in more frequent remote memory accesses than expected. [GRP2:0] NUMA_NO_NODE / \ [GRP1:0] [GRP1:1] node 1 node 0 / \ | / \ [...] [GRP0:0] [GRP0:1] node 0 node 1 | | CPU 0... CPU 1... A balanced tree should only contain groups having children that belong to the same node: [GRP2:0] NUMA_NO_NODE / \ [GRP1:0] [GRP1:0] node 0 node 1 / \ / \ / \ / \ [GRP0:0] [...] [...] [GRP0:1] node 0 node 1 | | CPU 0... CPU 1... In order to fix this, the hierarchy must be unfolded up to the crossnode level as soon as a node mismatch is detected. For example the stage 2 above should lead to this layout: [GRP2:0] NUMA_NO_NODE / \ [GRP1:0] [GRP1:1] node 0 node 1 / \ / \ [GRP0:0] [GRP0:1] node 0 node 1 | | CPU 0 CPU 1 This means that not only GRP1:0 must be created but also GRP1:1 and GRP2:0 in order to prepare a balanced tree for next CPUs to boot. Fixes: 7ee988770326 ("timers: Implement the hierarchical pull model") Signed-off-by: Frederic Weisbecker Signed-off-by: Thomas Gleixner Link: https://patch.msgid.link/20251024132536.39841-4-frederic@kernel.org Signed-off-by: Sasha Levin --- kernel/time/timer_migration.c | 231 +++++++++++++++++++--------------- 1 file changed, 127 insertions(+), 104 deletions(-) diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index 5f8aef94ca0f7..49635a2b7ee28 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -420,6 +420,8 @@ static struct list_head *tmigr_level_list __read_mostly; static unsigned int tmigr_hierarchy_levels __read_mostly; static unsigned int tmigr_crossnode_level __read_mostly; =20 +static struct tmigr_group *tmigr_root; + static DEFINE_PER_CPU(struct tmigr_cpu, tmigr_cpu); =20 #define TMIGR_NONE 0xFF @@ -522,11 +524,9 @@ struct tmigr_walk { =20 typedef bool (*up_f)(struct tmigr_group *, struct tmigr_group *, struct tm= igr_walk *); =20 -static void __walk_groups(up_f up, struct tmigr_walk *data, - struct tmigr_cpu *tmc) +static void __walk_groups_from(up_f up, struct tmigr_walk *data, + struct tmigr_group *child, struct tmigr_group *group) { - struct tmigr_group *child =3D NULL, *group =3D tmc->tmgroup; - do { WARN_ON_ONCE(group->level >=3D tmigr_hierarchy_levels); =20 @@ -544,6 +544,12 @@ static void __walk_groups(up_f up, struct tmigr_walk *= data, } while (group); } =20 +static void __walk_groups(up_f up, struct tmigr_walk *data, + struct tmigr_cpu *tmc) +{ + __walk_groups_from(up, data, NULL, tmc->tmgroup); +} + static void walk_groups(up_f up, struct tmigr_walk *data, struct tmigr_cpu= *tmc) { lockdep_assert_held(&tmc->lock); @@ -1498,21 +1504,6 @@ static void tmigr_init_group(struct tmigr_group *gro= up, unsigned int lvl, s.seq =3D 0; atomic_set(&group->migr_state, s.state); =20 - /* - * If this is a new top-level, prepare its groupmask in advance. - * This avoids accidents where yet another new top-level is - * created in the future and made visible before the current groupmask. - */ - if (list_empty(&tmigr_level_list[lvl])) { - group->groupmask =3D BIT(0); - /* - * The previous top level has prepared its groupmask already, - * simply account it as the first child. - */ - if (lvl > 0) - group->num_children =3D 1; - } - timerqueue_init_head(&group->events); timerqueue_init(&group->groupevt.nextevt); group->groupevt.nextevt.expires =3D KTIME_MAX; @@ -1567,22 +1558,51 @@ static struct tmigr_group *tmigr_get_group(unsigned= int cpu, int node, return group; } =20 +static bool tmigr_init_root(struct tmigr_group *group, bool activate) +{ + if (!group->parent && group !=3D tmigr_root) { + /* + * This is the new top-level, prepare its groupmask in advance + * to avoid accidents where yet another new top-level is + * created in the future and made visible before this groupmask. + */ + group->groupmask =3D BIT(0); + WARN_ON_ONCE(activate); + + return true; + } + + return false; + +} + static void tmigr_connect_child_parent(struct tmigr_group *child, struct tmigr_group *parent, bool activate) { - struct tmigr_walk data; + if (tmigr_init_root(parent, activate)) { + /* + * The previous top level had prepared its groupmask already, + * simply account it in advance as the first child. If some groups + * have been created between the old and new root due to node + * mismatch, the new root's child will be intialized accordingly. + */ + parent->num_children =3D 1; + } =20 - if (activate) { + /* Connecting old root to new root ? */ + if (!parent->parent && activate) { /* - * @child is the old top and @parent the new one. In this - * case groupmask is pre-initialized and @child already - * accounted, along with its new sibling corresponding to the - * CPU going up. + * @child is the old top, or in case of node mismatch, some + * intermediate group between the old top and the new one in + * @parent. In this case the @child must be pre-accounted above + * as the first child. Its new inactive sibling corresponding + * to the CPU going up has been accounted as the second child. */ - WARN_ON_ONCE(child->groupmask !=3D BIT(0) || parent->num_children !=3D 2= ); + WARN_ON_ONCE(parent->num_children !=3D 2); + child->groupmask =3D BIT(0); } else { - /* Adding @child for the CPU going up to @parent. */ + /* Common case adding @child for the CPU going up to @parent. */ child->groupmask =3D BIT(parent->num_children++); } =20 @@ -1594,56 +1614,28 @@ static void tmigr_connect_child_parent(struct tmigr= _group *child, smp_store_release(&child->parent, parent); =20 trace_tmigr_connect_child_parent(child); - - if (!activate) - return; - - /* - * To prevent inconsistent states, active children need to be active in - * the new parent as well. Inactive children are already marked inactive - * in the parent group: - * - * * When new groups were created by tmigr_setup_groups() starting from - * the lowest level (and not higher then one level below the current - * top level), then they are not active. They will be set active when - * the new online CPU comes active. - * - * * But if a new group above the current top level is required, it is - * mandatory to propagate the active state of the already existing - * child to the new parent. So tmigr_connect_child_parent() is - * executed with the formerly top level group (child) and the newly - * created group (parent). - * - * * It is ensured that the child is active, as this setup path is - * executed in hotplug prepare callback. This is exectued by an - * already connected and !idle CPU. Even if all other CPUs go idle, - * the CPU executing the setup will be responsible up to current top - * level group. And the next time it goes inactive, it will release - * the new childmask and parent to subsequent walkers through this - * @child. Therefore propagate active state unconditionally. - */ - data.childmask =3D child->groupmask; - - /* - * There is only one new level per time (which is protected by - * tmigr_mutex). When connecting the child and the parent and set the - * child active when the parent is inactive, the parent needs to be the - * uppermost level. Otherwise there went something wrong! - */ - WARN_ON(!tmigr_active_up(parent, child, &data) && parent->parent); } =20 -static int tmigr_setup_groups(unsigned int cpu, unsigned int node) +static int tmigr_setup_groups(unsigned int cpu, unsigned int node, + struct tmigr_group *start, bool activate) { struct tmigr_group *group, *child, **stack; - int i, top =3D 0, err =3D 0; - struct list_head *lvllist; + int i, top =3D 0, err =3D 0, start_lvl =3D 0; + bool root_mismatch =3D false; =20 stack =3D kcalloc(tmigr_hierarchy_levels, sizeof(*stack), GFP_KERNEL); if (!stack) return -ENOMEM; =20 - for (i =3D 0; i < tmigr_hierarchy_levels; i++) { + if (start) { + stack[start->level] =3D start; + start_lvl =3D start->level + 1; + } + + if (tmigr_root) + root_mismatch =3D tmigr_root->numa_node !=3D node; + + for (i =3D start_lvl; i < tmigr_hierarchy_levels; i++) { group =3D tmigr_get_group(cpu, node, i); if (IS_ERR(group)) { err =3D PTR_ERR(group); @@ -1656,23 +1648,25 @@ static int tmigr_setup_groups(unsigned int cpu, uns= igned int node) =20 /* * When booting only less CPUs of a system than CPUs are - * available, not all calculated hierarchy levels are required. + * available, not all calculated hierarchy levels are required, + * unless a node mismatch is detected. * * The loop is aborted as soon as the highest level, which might * be different from tmigr_hierarchy_levels, contains only a - * single group. + * single group, unless the nodes mismatch below tmigr_crossnode_level */ - if (group->parent || list_is_singular(&tmigr_level_list[i])) + if (group->parent) + break; + if ((!root_mismatch || i >=3D tmigr_crossnode_level) && + list_is_singular(&tmigr_level_list[i])) break; } =20 /* Assert single root without parent */ if (WARN_ON_ONCE(i >=3D tmigr_hierarchy_levels)) return -EINVAL; - if (WARN_ON_ONCE(!err && !group->parent && !list_is_singular(&tmigr_level= _list[top]))) - return -EINVAL; =20 - for (; i >=3D 0; i--) { + for (; i >=3D start_lvl; i--) { group =3D stack[i]; =20 if (err < 0) { @@ -1692,48 +1686,63 @@ static int tmigr_setup_groups(unsigned int cpu, uns= igned int node) tmc->tmgroup =3D group; tmc->groupmask =3D BIT(group->num_children++); =20 + tmigr_init_root(group, activate); + trace_tmigr_connect_cpu_parent(tmc); =20 /* There are no children that need to be connected */ continue; } else { child =3D stack[i - 1]; - /* Will be activated at online time */ - tmigr_connect_child_parent(child, group, false); + tmigr_connect_child_parent(child, group, activate); } + } =20 - /* check if uppermost level was newly created */ - if (top !=3D i) - continue; - - WARN_ON_ONCE(top =3D=3D 0); + if (err < 0) + goto out; =20 - lvllist =3D &tmigr_level_list[top]; + if (activate) { + struct tmigr_walk data; =20 /* - * Newly created root level should have accounted the upcoming - * CPU's child group and pre-accounted the old root. + * To prevent inconsistent states, active children need to be active in + * the new parent as well. Inactive children are already marked inactive + * in the parent group: + * + * * When new groups were created by tmigr_setup_groups() starting from + * the lowest level, then they are not active. They will be set active + * when the new online CPU comes active. + * + * * But if new groups above the current top level are required, it is + * mandatory to propagate the active state of the already existing + * child to the new parents. So tmigr_active_up() activates the + * new parents while walking up from the old root to the new. + * + * * It is ensured that @start is active, as this setup path is + * executed in hotplug prepare callback. This is executed by an + * already connected and !idle CPU. Even if all other CPUs go idle, + * the CPU executing the setup will be responsible up to current top + * level group. And the next time it goes inactive, it will release + * the new childmask and parent to subsequent walkers through this + * @child. Therefore propagate active state unconditionally. */ - if (group->num_children =3D=3D 2 && list_is_singular(lvllist)) { - /* - * The target CPU must never do the prepare work, except - * on early boot when the boot CPU is the target. Otherwise - * it may spuriously activate the old top level group inside - * the new one (nevertheless whether old top level group is - * active or not) and/or release an uninitialized childmask. - */ - WARN_ON_ONCE(cpu =3D=3D raw_smp_processor_id()); - - lvllist =3D &tmigr_level_list[top - 1]; - list_for_each_entry(child, lvllist, list) { - if (child->parent) - continue; + WARN_ON_ONCE(!start->parent); + data.childmask =3D start->groupmask; + __walk_groups_from(tmigr_active_up, &data, start, start->parent); + } =20 - tmigr_connect_child_parent(child, group, true); - } + /* Root update */ + if (list_is_singular(&tmigr_level_list[top])) { + group =3D list_first_entry(&tmigr_level_list[top], + typeof(*group), list); + WARN_ON_ONCE(group->parent); + if (tmigr_root) { + /* Old root should be the same or below */ + WARN_ON_ONCE(tmigr_root->level > top); } + tmigr_root =3D group; } - +out: kfree(stack); =20 return err; @@ -1741,12 +1750,26 @@ static int tmigr_setup_groups(unsigned int cpu, uns= igned int node) =20 static int tmigr_add_cpu(unsigned int cpu) { + struct tmigr_group *old_root =3D tmigr_root; int node =3D cpu_to_node(cpu); int ret; =20 - mutex_lock(&tmigr_mutex); - ret =3D tmigr_setup_groups(cpu, node); - mutex_unlock(&tmigr_mutex); + guard(mutex)(&tmigr_mutex); + + ret =3D tmigr_setup_groups(cpu, node, NULL, false); + + /* Root has changed? Connect the old one to the new */ + if (ret >=3D 0 && old_root && old_root !=3D tmigr_root) { + /* + * The target CPU must never do the prepare work, except + * on early boot when the boot CPU is the target. Otherwise + * it may spuriously activate the old top level group inside + * the new one (nevertheless whether old top level group is + * active or not) and/or release an uninitialized childmask. + */ + WARN_ON_ONCE(cpu =3D=3D raw_smp_processor_id()); + ret =3D tmigr_setup_groups(-1, old_root->numa_node, old_root, true); + } =20 return ret; } --=20 2.53.0