From nobody Mon Jun 8 07:24:52 2026 Received: from TYPPR03CU001.outbound.protection.outlook.com (mail-japaneastazon11022086.outbound.protection.outlook.com [52.101.126.86]) (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 5ADDE1F4CB3 for ; Fri, 5 Jun 2026 07:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.126.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780642892; cv=fail; b=MWGL/GQ363UQv+x4dRBT5KbFt2c+Um77OUOT0WQBRTcpaegQxqJ4pMTZSPJdTbwvSqmoW/Z4dkGiGq1vXnJKPxf2W23kZipCKKO1audSiUm0epCrB6fmfUyl3LoR3m4FElpmX90QFGr+D0pOrfSOQ2b+P19C7JoS3WyYyWM6Uk4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780642892; c=relaxed/simple; bh=Ft0FqjZFZpbDqUSoUC/gKNHkUvW8bXCx7WjsDra9d8k=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=tsmSZJnRlZcimLnQRtxhQmO2G8SsgQYC6fVwTZvbShzQS97knP5EkApSzpCGul5VvbfTxfNv6kA/1a1DVYPQTfyrb0tPrpOazGh37NFWYgvaQB9gIbwyvoF6bDT4ccA4zITOZcwEHXiMyjeQGDTAh6Pfw877s4YXq7ffO6bHOz8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=transsion.com; spf=pass smtp.mailfrom=transsion.com; dkim=pass (1024-bit key) header.d=transsion.com header.i=@transsion.com header.b=I9wkjTT+; arc=fail smtp.client-ip=52.101.126.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=transsion.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=transsion.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=transsion.com header.i=@transsion.com header.b="I9wkjTT+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YsabTxsDYqGb11ZUnT/HBBgvPUCIKspDMiIHPPgkDDQzOCNf0V/lkdykoBoygE/lIXuXsm7WRkDrSI1E1EMYblAA6x7wgAhA7Y5LePYG7flR39y2iU54DwSknWm2co4j223yX+ale8LbT20FIdIXcPiyJHAA4rNnfIROMZg8qKC3kY4uUy5UrQQ8+hMiIP3MuZt+qxy70aQKq8Txry9oTn15eUsYkKJ0EWd10iXwjFev9O4SJDJenpIUHx46LHk7IaGjafBGjoqE10/9jYz6jCgILbzGVqQnV5Uyh9t2JOiHl0ePFGr5hUkhMOROTZcgc5epC7aLgG4y6106ilJD2g== 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=d2ZlI5rICVdz82Zar402st4Dw9ys0DIM/ZrUbZyNk1A=; b=JZsvYN1CtOFS8zKCPPeQEq6yrIFHRkBNneIYa4JoSrTESLRPeoiYhPijbE4Z+3Q3C9YKNhJ2cFW6yzuQn52dEaINWy6DGPqFr5ZzrBp04Z9/Iqh2ARU3JcEmaTun1C/LVSte2KRizswj5E3rUI9txor8NREBjU9AF9JiRUxSvzouFbghdUQ3g0BSpPZJcim12Ranf7ocHNZ/BqMz5TTh2M0qUd+YB87lo0aGtbLAcZpBvEHY2mM2u9YySaU/k8Q3VRSg9TTmOPJb8LP46eTS3JJ0vpQsUtGVJZwBbwtdYlHXbH7hZMTISBdXaYBct340+oS44vV9tZtOlfauffZD/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=transsion.com; dmarc=pass action=none header.from=transsion.com; dkim=pass header.d=transsion.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=transsion.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d2ZlI5rICVdz82Zar402st4Dw9ys0DIM/ZrUbZyNk1A=; b=I9wkjTT+yOvEm5D/rMyIVML+T/EbPkNWM4pv0P7TVkSLV8QZrGUKL6aVIWJj4FdAQaK9j5c0v1WJfaH3H8CQKTCrEBKao/TSb/C9lqbusVXIHDrY4fAgiN2bPR6B8Ndst4jRJFEs3X6V4HDY8LvoLEqF+KX2tjI+y7RA326/eig= Received: from KL1PR0401MB6196.apcprd04.prod.outlook.com (2603:1096:820:c7::13) by TYPPR04MB9188.apcprd04.prod.outlook.com (2603:1096:405:381::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 07:01:28 +0000 Received: from KL1PR0401MB6196.apcprd04.prod.outlook.com ([fe80::f2ee:1e28:9022:99f3]) by KL1PR0401MB6196.apcprd04.prod.outlook.com ([fe80::f2ee:1e28:9022:99f3%3]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 07:01:28 +0000 From: Hongyan Xia To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak CC: Jiazi Li , "linux-kernel@vger.kernel.org" Subject: [PATCH] sched/fair: Fix cpu_util runnable_avg arithmetic Thread-Topic: [PATCH] sched/fair: Fix cpu_util runnable_avg arithmetic Thread-Index: AQHc9Lkh7+dY+E44E0imxgejZfZoDg== Date: Fri, 5 Jun 2026 07:01:28 +0000 Message-ID: <20260605070103.1832-1-hongyan.xia@transsion.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=transsion.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: KL1PR0401MB6196:EE_|TYPPR04MB9188:EE_ x-ms-office365-filtering-correlation-id: 9083beb1-f435-4cc9-169c-08dec2d043e1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014|921020|38070700021|56012099006|11063799006|18002099003; x-microsoft-antispam-message-info: 7z2zqYfC3YIGjfWI4nqrsc9t4oTbMjMq+AXThqV/lCcIuJywx8DBSkmU4YY0082J2xy7nKfwZUkWXoRM25VHANYV6HKmrFqlRLFXB6qmQykCDRPYe0OVAfJvyPRl654GDUXqBbdxAVdNRKPwYd0qnFnUWQ8SDjo4VgBfvHKwy3+flZ41jTErD3S3gC//1+OqxdayE8nRROjo93O9AW2+sXMym0yq+Co2lfZ9FDNDzIfWPv2wqCxxzTrDHmrBjzLMAdEhbHhuLNhOJBONHWQzgQMilkHoCNk65yeh8Z2BkLw1rDpUe1dPBmVqwPoTZgtCDMs3ATTI+E6pdfS9R7zf49X55EaOf00U88s6+jMU4L3YfZkmySH2Ngbs59kZ7R81exQvpqOVLa0hIZbpzMkYSm7SCegioXFPC35i8cf4zjRkqRQNdSVEc7U82R1anZBwEM+8bcH02EVGfvwTVm5ysnp5riLWm2KzO1WPnueXOk1xnjT/mY12wB0JrC73+nOMNjiyNbcfw2Nv23pJwTDjfx9qvfovw+ox+BoyltfLMxzr25C2LDzG0ybHTyEYBHqEcs82uEukvqPv1e3O8P2w7Sl92nCArtbYGrJznffUULKg4DwRGNcUaSOMTJC0H0VsdOQ8badnkC+3bHa1v7SEQcFkzRKY9keECq5GnilXNaadx6Yp8NsIOT37kAXClOvPpSSBb59QhXWvG5i4pF7PC1FhX3LSn1xmautyx0VpajvznYxOqko7m3JxFoyzMp4f1PlZi0yoO3b1lRlH19aNfw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:KL1PR0401MB6196.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014)(921020)(38070700021)(56012099006)(11063799006)(18002099003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?rt4wLCv9V2zUzwnVkKz3pwYS09T3UrtiZ3ArJ3Pb8qoFYUur/gMcWGeOQY?= =?iso-8859-1?Q?VPQrygxfkwrEoIxRcAnA8ag9p75TKq46mi0R7TQUFcw+xzt5yL017gXb8w?= =?iso-8859-1?Q?aURsHbovmmeHHuuTtM+HRNVbjxjxfIqVIzzMG3EREge/dVhCIM6Uzv/ryp?= =?iso-8859-1?Q?dOCb7GDAXOMoNphapHJ9WglrEKQA88UA9kNYzAAOgl1UbqHYcQrjImWU2N?= =?iso-8859-1?Q?e6KGivtoJaQ6UDe3p2pY6D8LZ4Z7J0FNC99juL8qT3q/lO1+nUb8xQy6fl?= =?iso-8859-1?Q?ihmkdBod/JcrTi5R2dTx4pKdp/aCUg0zezY7EECfC3BZO7gPc6RcvnxuoS?= =?iso-8859-1?Q?J0by38ouz1BOWWP5SMYPeoPgHgeIp5tIQ/+7IXPF8P/kcoMZcyy8gf4nqL?= =?iso-8859-1?Q?05Zq9OzwM3xZGz91DQV4Y+GVwWqQZPnO0z8LrhU5AU2HRLnpYoCQ9Hesxq?= =?iso-8859-1?Q?TetJFCJZZpYExlxMfvYqfmG7Fc2VJRgwaVdrdHppRpGhy45tb/BK00ebSz?= =?iso-8859-1?Q?sC916psTxlUkHqcy7eJK+OSpz5lIQNfQA6nI2IlTuwC+ZCBjsa1qtFhSAS?= =?iso-8859-1?Q?ALmedT95YBqQXWUe4P96PZ80Zt5TR1cD1TzfEs6v0822RCjZ+a+ebNzo4T?= =?iso-8859-1?Q?ADGqwrTzSYEiicU+JUjJdv8iog8V7C9hUAvHHVuxnQe5zwhZsnfWhASgEj?= =?iso-8859-1?Q?v7X/GXrmAwlxwIaKf4kXSNhnTiKExQviM83yQJ0WGHf+X9s0j4QDWyzuO4?= =?iso-8859-1?Q?GJuPlsy/YN87qknMzKeHEaCiBZJNmSND7dC2uXIZP1czcVYoS0Xwt0W24B?= =?iso-8859-1?Q?+1U4A4Ndo2ivUSKRncwZK/dL0EZVY0HAjGaRKROn1V+Mf4tinTITQ4A+52?= =?iso-8859-1?Q?Yim1d2+f4pArqv4Fz8+isqjuP7mx/gr583mtq+QRA4x1CwHvA2EJ3OVPit?= =?iso-8859-1?Q?JmxGEqUsPNL0OcVN2hVGNjamOyXHlpAZqMxe5u+t0mTMhZwCmxMB1bmlOY?= =?iso-8859-1?Q?omB4GMzJa6lUkL6G7EDfPY/EPZ19k53nxvzOJH4jEjfbuuRMOY2KqIxWGt?= =?iso-8859-1?Q?sbCh/Wsn/5HUEdMftxBm0g4T7UtmBLTFYF5yURXbEeuAr7oIBsYd+4PTCI?= =?iso-8859-1?Q?er5syTOwjSR/NLQXzp2kx4E2z2QjIvj7Al8wXp3g9XF0M2LrhcsuxDdH19?= =?iso-8859-1?Q?ynfkHy/2mg4tY5epUakupjttkorLGIphzmVD+cT449hVzrXN9K3Xmkge3f?= =?iso-8859-1?Q?34p7+Iz+ggV3Hf/HKMjOP3g+amWbCeK+fBohH62laYUzILhmrJW98qMC8r?= =?iso-8859-1?Q?wWZILo5KV/Z0fOrLWxEO1ozXZwlQKi22AXkXY7Q+SH5leOY3QD3tEtp8HO?= =?iso-8859-1?Q?5z7CMc+tofJh6EcATm7gFo2gdPdPHkPItElLXvopZfTKsB/1AlNwjFC93F?= =?iso-8859-1?Q?e6T+mxEShtpGx85bTYlXmu7Df0ERTG2nW9i9nwv92PjMcvng2Bi2B/e2Fq?= =?iso-8859-1?Q?UgfZBfcN3oXm8KJ4kJ95H3QSBJWdR57gmFoYm4r9Wn/7u863xOISY+O+SX?= =?iso-8859-1?Q?rqN5pbAVlzuKipOUvbgi29OUyS9NbvBymLNwZIXskuEfQ3IA/wx+pFZXfo?= =?iso-8859-1?Q?FVXTxskDqFc4UTTKIFA9Ik+n5lYOJsh2KGa2UApNM/qsHPx4JPhcESGn96?= =?iso-8859-1?Q?4VwhMuxX2pcSQyoUy8NNjHrVq/qHRy4DhbqsJakZ2kRTTuQMbUJuBEabGu?= =?iso-8859-1?Q?B86nNZGZhQJoX4/zuSylVCyxgjuaLcBmJN56aKzmbsQSJf6J9AgowYSRCl?= =?iso-8859-1?Q?nw9Aj8kFew=3D=3D?= Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: transsion.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: KL1PR0401MB6196.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9083beb1-f435-4cc9-169c-08dec2d043e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2026 07:01:28.0672 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 2e8503a6-2d01-4333-8e36-6ab7c8cd7ae2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2jSEBN+Ym6Hamd4D7U7caycnWV5xQIQqKOmQ0b8QBtW0UvSa7Eirg1lPKYQ2YlBdr20bA1oQ4SC/ynf+LXSfzmHLlm5HKBW/qvBdyC5JoJ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYPPR04MB9188 Content-Type: text/plain; charset="utf-8" From: Hongyan Xia If we take runnable_avg in max(runnable_avg, util_avg) in cpu_util(), we should then add or subtract task runnable_avg, but the arithmetic below is still with task util_avg. This mixes runnable_avg with util_avg which is incorrect. Fix by always doing arithmetic with runnable_avg and only take max(runnable_avg, util_avg) at the last step. Fixes: 7d0583cf9ec7 ("sched/fair, cpufreq: Introduce 'runnable boosting'") Signed-off-by: Hongyan Xia --- kernel/sched/fair.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 69361c63353a..050bce06efea 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8231,25 +8231,31 @@ static int select_idle_sibling(struct task_struct *= p, int prev, int target) static unsigned long cpu_util(int cpu, struct task_struct *p, int dst_cpu, int boost) { + bool add_task =3D p && task_cpu(p) !=3D cpu && dst_cpu =3D=3D cpu; + bool sub_task =3D p && task_cpu(p) =3D=3D cpu && dst_cpu !=3D cpu; struct cfs_rq *cfs_rq =3D &cpu_rq(cpu)->cfs; unsigned long util =3D READ_ONCE(cfs_rq->avg.util_avg); unsigned long runnable; =20 - if (boost) { - runnable =3D READ_ONCE(cfs_rq->avg.runnable_avg); - util =3D max(util, runnable); - } - /* * If @dst_cpu is -1 or @p migrates from @cpu to @dst_cpu remove its * contribution. If @p migrates from another CPU to @cpu add its * contribution. In all the other cases @cpu is not impacted by the * migration so its util_avg is already correct. */ - if (p && task_cpu(p) =3D=3D cpu && dst_cpu !=3D cpu) - lsub_positive(&util, task_util(p)); - else if (p && task_cpu(p) !=3D cpu && dst_cpu =3D=3D cpu) + if (add_task) util +=3D task_util(p); + else if (sub_task) + lsub_positive(&util, task_util(p)); + + if (boost) { + runnable =3D READ_ONCE(cfs_rq->avg.runnable_avg); + if (add_task) + runnable +=3D task_runnable(p); + else if (sub_task) + lsub_positive(&runnable, task_runnable(p)); + util =3D max(util, runnable); + } =20 if (sched_feat(UTIL_EST)) { unsigned long util_est; --=20 2.47.3