Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1229388ybt; Thu, 9 Jul 2020 01:46:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx9ejiZACKfwPAE7wiV1qHl1N+n2SgLWPQdCo7aVtYG+3fdMah7gvXzO41m5kUEbG52+a37 X-Received: by 2002:a17:906:408c:: with SMTP id u12mr49006784ejj.162.1594284398952; Thu, 09 Jul 2020 01:46:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594284398; cv=none; d=google.com; s=arc-20160816; b=V1jDSVTI/z+WLOXLkDvCJI5UTqJdIornqx+hG8TWSnjNcj1Waho0V+yj155J7g0lpZ I9zsXrtfCzsd58TlkDHGJ1tHAQ24cdT/8FZqSNM34NiN4+CJdvr6cTioegqHmeBxk/W4 ppGT5d5ZHSEpv9sz5v25cskSUdEsIKdOtrdnPVlscdNVpLbPIjJsbeVJK5+baiD7zbTw cxHMkVwQXvS9YjBUeK63TIXOKwa0Wdyvl00fzx1QgRID3nL9HfPTZNTFMxsnAe6BOsBz wqXjI8KhqalSzmuDuMNBgIHJLns2MqhYD0xWYIqDhWNci+GImilXD1lLptr4w7VtVpPa 5g8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:dkim-signature :dkim-signature:date; bh=7oGITxDZU1icICDwaIAhgjgS+19Q/8pLZUwDvXlc2wg=; b=Vz6ykQV6Mm2v7V9NfeQa38y9VpfojBrLJBfqvcIV3+RutVvqIbhMYtdulT+bFrFNgF NVytVYCAwKD9uRcpRiIsKF72kataVWGHN4cWEcU3BOTJTGPRi0Xl5LBjmwmviBJXVboR xudOAAfIlH8t2Po4uDDkqJGFu7hRnwMDMSmSlioW/jakyQ42IT6DTAWiMLtwAWIImYo6 UOULIJPIx/+Fe47zkEY9KKrBFXhU1HxkLP/HXMRbRUju/vojZ7T709HaJyoTBnDRKf1N 5lXn9YmPbB+eObOXGrw+Qoaj5wJAQt8QssdKtHUS3TELmEGKty9TDyXBbVEeaodlB0yB Scow== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linutronix.de header.s=2020 header.b=eqP4+yzR; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=7sPI7QK6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u23si1559169eds.479.2020.07.09.01.46.16; Thu, 09 Jul 2020 01:46:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@linutronix.de header.s=2020 header.b=eqP4+yzR; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=7sPI7QK6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726465AbgGIIqF (ORCPT + 99 others); Thu, 9 Jul 2020 04:46:05 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:34844 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726193AbgGIIqA (ORCPT ); Thu, 9 Jul 2020 04:46:00 -0400 Date: Thu, 09 Jul 2020 08:45:57 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1594284357; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7oGITxDZU1icICDwaIAhgjgS+19Q/8pLZUwDvXlc2wg=; b=eqP4+yzRJqzz+IMFdBNnKAS2HvACCA8H1bZC42cvbh7iqFivw6OWdYefEKj67WtV8cJSGI L8IfbBSz2VJwzxAxTMQnPhQXjS7+eImB6m2+6dqQE0aG4Y+UIH9A+Bo7uF4EgRNlwjRAPj aeoOkJRRVb6S+41f9Fxpep7XOONrDSw2APePtoquA6xuFsHncB1wBiG3oqBZRDVhpGUoDt GTWl1kLboIZLa/g3pW7X9Jy9xEP6/ewPUHZNLjJd8cLV2adfyS2+hD0Ugm2lYkgZ0SIVV6 JNmYxxUmoWcgLn8Cd3bd+pqQw8dIYO09UNX0oQeeUR0RGVudB2VQwGxuR/Zt7Q== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1594284357; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7oGITxDZU1icICDwaIAhgjgS+19Q/8pLZUwDvXlc2wg=; b=7sPI7QK62UmyjWtetzGEwBMAwhKbgwIJ8F6CRgGlHbQm7MY4uqg8Fj06nK4IsqhxTlTchM 70Q+JGpEXulhdJDQ== From: "tip-bot2 for Qais Yousef" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: sched/core] sched/uclamp: Fix initialization of struct uclamp_rq Cc: Qais Yousef , "Peter Zijlstra (Intel)" , Valentin Schneider , Lukasz Luba , x86 , LKML In-Reply-To: <20200630112123.12076-2-qais.yousef@arm.com> References: <20200630112123.12076-2-qais.yousef@arm.com> MIME-Version: 1.0 Message-ID: <159428435710.4006.10577558696191415776.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the sched/core branch of tip: Commit-ID: d81ae8aac85ca2e307d273f6dc7863a721bf054e Gitweb: https://git.kernel.org/tip/d81ae8aac85ca2e307d273f6dc7863a721bf054e Author: Qais Yousef AuthorDate: Tue, 30 Jun 2020 12:21:22 +01:00 Committer: Peter Zijlstra CommitterDate: Wed, 08 Jul 2020 11:39:01 +02:00 sched/uclamp: Fix initialization of struct uclamp_rq struct uclamp_rq was zeroed out entirely in assumption that in the first call to uclamp_rq_inc() they'd be initialized correctly in accordance to default settings. But when next patch introduces a static key to skip uclamp_rq_{inc,dec}() until userspace opts in to use uclamp, schedutil will fail to perform any frequency changes because the rq->uclamp[UCLAMP_MAX].value is zeroed at init and stays as such. Which means all rqs are capped to 0 by default. Fix it by making sure we do proper initialization at init without relying on uclamp_rq_inc() doing it later. Fixes: 69842cba9ace ("sched/uclamp: Add CPU's clamp buckets refcounting") Signed-off-by: Qais Yousef Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Valentin Schneider Tested-by: Lukasz Luba Link: https://lkml.kernel.org/r/20200630112123.12076-2-qais.yousef@arm.com --- kernel/sched/core.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 15c980a..9605db7 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1239,6 +1239,20 @@ static void uclamp_fork(struct task_struct *p) } } +static void __init init_uclamp_rq(struct rq *rq) +{ + enum uclamp_id clamp_id; + struct uclamp_rq *uc_rq = rq->uclamp; + + for_each_clamp_id(clamp_id) { + uc_rq[clamp_id] = (struct uclamp_rq) { + .value = uclamp_none(clamp_id) + }; + } + + rq->uclamp_flags = 0; +} + static void __init init_uclamp(void) { struct uclamp_se uc_max = {}; @@ -1247,11 +1261,8 @@ static void __init init_uclamp(void) mutex_init(&uclamp_mutex); - for_each_possible_cpu(cpu) { - memset(&cpu_rq(cpu)->uclamp, 0, - sizeof(struct uclamp_rq)*UCLAMP_CNT); - cpu_rq(cpu)->uclamp_flags = 0; - } + for_each_possible_cpu(cpu) + init_uclamp_rq(cpu_rq(cpu)); for_each_clamp_id(clamp_id) { uclamp_se_set(&init_task.uclamp_req[clamp_id],