From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 390233CB2FD for ; Wed, 19 Aug 2026 12:20:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787142027; cv=none; b=cfp3pPeQzjaeBlVmGzALdQVtgywk0IxZ2Vg0zTD7jF3wvFkJNJ5gX0FNE1DLoyLbP6KHcGTVw4DPJ6q3xaTFE/t883NfDdxpIIi8rYHRJT4QeRuyVE679kau8ZXEzX62VKgID7KuWwSeLUxvKBnvIuOczGsMFurvHFpJzcEcg1E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787142027; c=relaxed/simple; bh=bJMyDvW/WrvxlSR7uPJNYXyG2cZ+Ls6hH5O+PXzUE54=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=CMTjjKp0CBkqVwWcx85lU8SiDGRi1b3X9N8GiVrAyMZk9dfb5nip5l0HPpC5mn11JY9GF5NgWpMXvLz63YGr7TeNZBjwXqLMbo7JGDqA/wlb85MNdzK43KEmr0kUz9OeBcSdDZ6dHmXrnPdnI24QhX22OWIpL5/3V3u1H1JgY94= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=ArFi2aY6; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="ArFi2aY6" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67JAVxbM3192064; Wed, 19 Aug 2026 12:19:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=ZcrlF3 SFSjgV22RmBMhwePVQbSBJQXM+BFEk36aiMd4=; b=ArFi2aY6OMozRJpMdgvlkv 2F6mYqLMGY9M7bw2MmkaRYJQ05Ucc2HnwYb1eb7O95usfqe16wPMfQf38g2hP+BV VzqDF3xP+H1bku1m8o73ZwJ0AvSzS4yc2TVVxlAyZlV+4b7k2S765xy4Tck0XPMe WJEpnh2auzJcddHBtjuzAaF0D4qAZdIkfS9I1B18Fo650a5W46pqmob/xABUe4rU 3dDhFlUC3iSGxxO14JoatOOqBgyZpt8zyyhTgBaojy0L24c5BBA9i3G50FQ4rmOv Vi8934AGSnSuurtZAXoWNtef2GoSdjghjOHR/i9H5Cg5K1CPH5OLo+S33MsuOcqg == Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4g4yu0bjph-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Aug 2026 12:19:55 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67JCBJ4d030886; Wed, 19 Aug 2026 12:19:54 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4g34nggm11-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Aug 2026 12:19:54 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67JCJq7g50331908 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Aug 2026 12:19:52 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6069F2004B; Wed, 19 Aug 2026 12:19:52 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4A0D720043; Wed, 19 Aug 2026 12:19:49 +0000 (GMT) Received: from [9.124.213.40] (unknown [9.124.213.40]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 19 Aug 2026 12:19:49 +0000 (GMT) Message-ID: Date: Wed, 19 Aug 2026 17:49:48 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RESEND] sched: Move some scheduler fields to new static branch API To: Hongyan Xia Cc: Jiazi Li , "linux-kernel@vger.kernel.org" , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Mark Rutland References: <20260819080932.11564-1-hongyan.xia@transsion.com> Content-Language: en-US From: Shrikanth Hegde In-Reply-To: <20260819080932.11564-1-hongyan.xia@transsion.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=MthiLWae c=1 sm=1 tr=0 ts=6a859f6b cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VwQbUJbxAAAA:8 a=7CQSdrXTAAAA:8 a=3xJz9W2bAAAA:8 a=zns55XJNGejn-NNQptAA:9 a=QEXdDO2ut3YA:10 a=a-qgeE7W1pNrGK8U0ZQC:22 a=amiGZ1mxdzcEAW_x1qlF:22 X-Proofpoint-ORIG-GUID: Zh1HQocMGHSKXs2gCGUodcafW5UUz9l3 X-Proofpoint-GUID: IUFpvaVo-FRc1-bDftNImViqT2xpzKHH X-Proofpoint-Spam-Info: AW1haW4tMjYwODE5MDA5MyBTYWx0ZWRfXwWrSbyeKm6LW TKZk5bMXFY6+QmnNhva+iEzZiFbd1eI+MLgiLZPiR7l5RAq3Fmt2WRZ6prDbe3RU68lGqY5dedz Ku0+oWlWbsx4+9PIUihF9Hcyh3cO1WE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE5MDA5MyBTYWx0ZWRfX3hHGFYZ0uP17 pEQB8glneqHAq+D9MAipeU+fHfgDpnb2BoSOnQSj3Rio1x1s2IayLUg+NJWEEH4/EthFne6INpP /PptjWf8flHbm9c4bojz3F34cDCBBKVC765F4HkN6ApdGGr1DKmgccla5qxPyWO4iP3SZ2AOBx5 gBdL1kY9d3ONXTVcHVsfE/8TVvzwFsyclPJPVddiIJON797n997dNzH/IMYfminW/XtdfZ2ABPz hTGRsrRwU7ERDRW+XUjJXwIes7Q9qjDdxcF7uMGrKGsKObKX26AUwf+yY27r0wcB1SFOLkW+Upk T1eEniXePKijwAxcqqNmyEUSui5zuHy7pFH6k+2FQuYYvGnPxgdyVqTCpDvw6GcHAaggv96bjXF ZrMIE5VQPSm4cLgSqRCeH6R2H0WTfhIUdPWiJLv2w8fF9jGkl+hUPXCuY3UawbPgn9jxPfAw8ee E+xLIWeDYtoEpxYOIlw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-19_03,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 bulkscore=0 phishscore=0 clxscore=1011 spamscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608190093 Hi Hongyan. On 8/19/26 1:39 PM, Hongyan Xia wrote: > From: Hongyan Xia > > __cfs_bandwidth_used uses struct static_key directly which is > deprecated. Fix. A bit of context on why it is deprecated would help. > > sk_dynamic_* uses static_key_{enable/disable}(), which aren't really > deprecated, but take the opportunity to move to the new static_branch_* > APIs to be consistent. > Mark had a series to remove a few of them completely. IIRC only lazy check will remain. https://lore.kernel.org/all/20260803191731.3244294-1-mark.rutland@arm.com/ > No functional change. > > Signed-off-by: Hongyan Xia > --- > Changed in RESEND: > - Separate the original series into individual patches. They aren't easy > to review as a series. > - Move sk_dynamic_* to the new API as well. > > kernel/sched/core.c | 18 +++++++++--------- > kernel/sched/fair.c | 8 ++++---- > 2 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 96226707c2f6..5c07d53e43b5 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -7933,15 +7933,15 @@ int sched_dynamic_mode(const char *str) > return -EINVAL; > } > > -# define preempt_dynamic_key_enable(f) static_key_enable(&sk_dynamic_##f.key) > -# define preempt_dynamic_key_disable(f) static_key_disable(&sk_dynamic_##f.key) > +# define preempt_dynamic_branch_enable(f) static_branch_enable(&sk_dynamic_##f) > +# define preempt_dynamic_branch_disable(f) static_branch_disable(&sk_dynamic_##f) Also, doc doesn't about mention about static_branch_enable vs static_key_enable. is static_key_enable also deprecated. > > # if defined(CONFIG_HAVE_PREEMPT_DYNAMIC_CALL) > # define preempt_dynamic_enable(f) static_call_update(f, f##_dynamic_enabled) > # define preempt_dynamic_disable(f) static_call_update(f, f##_dynamic_disabled) > # elif defined(CONFIG_HAVE_PREEMPT_DYNAMIC_KEY) > -# define preempt_dynamic_enable(f) preempt_dynamic_key_enable(f) > -# define preempt_dynamic_disable(f) preempt_dynamic_key_disable(f) > +# define preempt_dynamic_enable(f) preempt_dynamic_branch_enable(f) > +# define preempt_dynamic_disable(f) preempt_dynamic_branch_disable(f) > # else > # error "Unsupported PREEMPT_DYNAMIC mechanism" > # endif > @@ -7959,7 +7959,7 @@ static void __sched_dynamic_update(int mode) > preempt_dynamic_enable(preempt_schedule); > preempt_dynamic_enable(preempt_schedule_notrace); > preempt_dynamic_enable(irqentry_exit_cond_resched); > - preempt_dynamic_key_disable(preempt_lazy); > + preempt_dynamic_branch_disable(preempt_lazy); > > switch (mode) { > case preempt_dynamic_none: > @@ -7968,7 +7968,7 @@ static void __sched_dynamic_update(int mode) > preempt_dynamic_disable(preempt_schedule); > preempt_dynamic_disable(preempt_schedule_notrace); > preempt_dynamic_disable(irqentry_exit_cond_resched); > - preempt_dynamic_key_disable(preempt_lazy); > + preempt_dynamic_branch_disable(preempt_lazy); > if (mode != preempt_dynamic_mode) > pr_info("Dynamic Preempt: none\n"); > break; > @@ -7979,7 +7979,7 @@ static void __sched_dynamic_update(int mode) > preempt_dynamic_disable(preempt_schedule); > preempt_dynamic_disable(preempt_schedule_notrace); > preempt_dynamic_disable(irqentry_exit_cond_resched); > - preempt_dynamic_key_disable(preempt_lazy); > + preempt_dynamic_branch_disable(preempt_lazy); > if (mode != preempt_dynamic_mode) > pr_info("Dynamic Preempt: voluntary\n"); > break; > @@ -7990,7 +7990,7 @@ static void __sched_dynamic_update(int mode) > preempt_dynamic_enable(preempt_schedule); > preempt_dynamic_enable(preempt_schedule_notrace); > preempt_dynamic_enable(irqentry_exit_cond_resched); > - preempt_dynamic_key_disable(preempt_lazy); > + preempt_dynamic_branch_disable(preempt_lazy); > if (mode != preempt_dynamic_mode) > pr_info("Dynamic Preempt: full\n"); > break; > @@ -8001,7 +8001,7 @@ static void __sched_dynamic_update(int mode) > preempt_dynamic_enable(preempt_schedule); > preempt_dynamic_enable(preempt_schedule_notrace); > preempt_dynamic_enable(irqentry_exit_cond_resched); > - preempt_dynamic_key_enable(preempt_lazy); > + preempt_dynamic_branch_enable(preempt_lazy); > if (mode != preempt_dynamic_mode) > pr_info("Dynamic Preempt: lazy\n"); > break; > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 762dd8a4647c..4b65be5ec471 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -6442,21 +6442,21 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) > #ifdef CONFIG_CFS_BANDWIDTH > > #ifdef CONFIG_JUMP_LABEL > -static struct static_key __cfs_bandwidth_used; > +static DEFINE_STATIC_KEY_FALSE(__cfs_bandwidth_used); > > static inline bool cfs_bandwidth_used(void) > { > - return static_key_false(&__cfs_bandwidth_used); > + return static_branch_unlikely(&__cfs_bandwidth_used); > } > We will still have two left. core.c: if (static_key_false((¶virt_steal_rq_enabled))) { cputime.c: if (static_key_false(¶virt_steal_enabled)) { > void cfs_bandwidth_usage_inc(void) > { > - static_key_slow_inc_cpuslocked(&__cfs_bandwidth_used); > + static_branch_inc_cpuslocked(&__cfs_bandwidth_used); > } > > void cfs_bandwidth_usage_dec(void) > { > - static_key_slow_dec_cpuslocked(&__cfs_bandwidth_used); > + static_branch_dec_cpuslocked(&__cfs_bandwidth_used); > } > #else /* !CONFIG_JUMP_LABEL: */ > static bool cfs_bandwidth_used(void)