Received: by 2002:a05:7412:1703:b0:e2:908c:2ebd with SMTP id dm3csp3343198rdb; Tue, 29 Aug 2023 12:16:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHiwOLbdvqMazEDSyt4l23kUPap/PBSBVm5pKHIUAfsI5xeXozLqIir4wq+emzRWGVkeL2z X-Received: by 2002:a17:906:3119:b0:9a1:f10d:9746 with SMTP id 25-20020a170906311900b009a1f10d9746mr13847495ejx.20.1693336600230; Tue, 29 Aug 2023 12:16:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693336600; cv=none; d=google.com; s=arc-20160816; b=FTStGqUyKIQvf1kLUpBMBFJtaFs00eE8oU+EQ+YzX8lH10Jnui1/HxJhpJMx6QSkQr dTr+j3ZdMcky4cfjGpA7Z+baRHuDAr/pzDYCdOWmut4QFbSNmrILdjr5fI2q6VP6Xnen RC/I2Gn93ZyMvu+vfmrpX8IncVMVZpQz1YuWmS8x/rBDxMkvxzX/pyg3TiJeSQX9DfO/ nu3nCWJLUV+2zSVM6K/K56mEJp9GY2sb3jnVXBdOGF2ngQXR5N9gZYP1dvUvIzOR1Ja8 uSxkrw78Zzk7Kd567r3X3Dfq1DxhtWzwvf4pW6kwHRO8j4rWcjb0MRnom7IBI52nUrCs RXPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=WVIKGN+eMpybABUVk9ZLOnwNeqpzjORKMAgxV1qZARw=; fh=8xT39xpT08Zzu9uiqn3JBiPJ6BHR7oKM/GCWHJj86Ls=; b=Ag3vmDHDTe8E1T40lUaj+fF47xUYSeUXfKYe483JKPLQtovYuy4nM5svuVXjY8+ccg 2Xs+SGJTYKDmCB+bpr0/9IKAFDlD2tnFwtbyWDXoFr05jiLlTUOUfq2+9Oq/3ALQ9W2e cZ8Eg4KpC4Af+32Mrh2xtKDngPEmtDS/hgZ+fPtKPQlZOBEeWKIMlIwRXQGYOjW8sQ/y D/MsAUZhRCwhAmZ5El8KjF3acoLzHWrZIyDT2LLLLWK/KHacG61sjH1LYswzglmwLAkO 26rIn5QqxDY8mUKwzLIJifYPfX3WXHJTgQ8NF6cTuyWwd0RfhTZuhF2lIy4O9cTDBb+v SO/g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g24-20020a170906395800b0098e003216basi5447668eje.110.2023.08.29.12.16.02; Tue, 29 Aug 2023 12:16:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237648AbjH2Snu convert rfc822-to-8bit (ORCPT + 99 others); Tue, 29 Aug 2023 14:43:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230490AbjH2SnT (ORCPT ); Tue, 29 Aug 2023 14:43:19 -0400 Received: from mail-oa1-f51.google.com (mail-oa1-f51.google.com [209.85.160.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7BA2419A; Tue, 29 Aug 2023 11:43:16 -0700 (PDT) Received: by mail-oa1-f51.google.com with SMTP id 586e51a60fabf-1c134602a55so1003417fac.1; Tue, 29 Aug 2023 11:43:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693334596; x=1693939396; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+hrAF9koGhO3AR5bD0rbczrXkKrad5wwFyJYLSucsi4=; b=FnlZ+/cfWXOSkkgQ8/TuoBEANQRYv9K/QzQDkRH0BE9NlExfQJdeJor+lmmgO+HtP9 B7B091if/n2Y7LIfaqFVzXKVnLhQJy3oEABZvKyaT2ZYyGlrS8XWLIbq+pq0vkiaqokd jU0Zv0j4NT1aTXh5lyXTu2NQH/9b97K91OmnxlCWFUuxBbRRODEbm4f1pbgCOyKcAK8t eSrzs3zksd+qnPG5N98Qz7UcS9k4/mxW2xRtm1/4QiLWaC6PnlkEONEo028Wc7n1EDS7 PfXjNEASuPXsa4u79fjY+jbtD8lHSbu9rcF9QJES6sTs9f+KE3EKAfpF+c5PX71Hjx3y miEw== X-Gm-Message-State: AOJu0Yw7jOcYLRgzUlB2q36qywbaR88G6XfVkIseeh5ol0cnLMtTfZjs FIvftRwCryov46z3dob1HehGrFPc8CKOTWG/ir5+zOep X-Received: by 2002:a4a:ded9:0:b0:573:55af:777c with SMTP id w25-20020a4aded9000000b0057355af777cmr10471583oou.0.1693334595754; Tue, 29 Aug 2023 11:43:15 -0700 (PDT) MIME-Version: 1.0 References: <20230826095743.1138495-1-liaochang1@huawei.com> <20230828070206.dc44mhe4qztg52kc@vireshk-i7> In-Reply-To: <20230828070206.dc44mhe4qztg52kc@vireshk-i7> From: "Rafael J. Wysocki" Date: Tue, 29 Aug 2023 20:43:04 +0200 Message-ID: Subject: Re: [PATCH] cpufreq: pcc: Fix the potentinal scheduling delays in target_index() To: Viresh Kumar , Liao Chang Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Aug 28, 2023 at 9:02 AM Viresh Kumar wrote: > > On 26-08-23, 09:57, Liao Chang wrote: > > pcc_cpufreq_target(): > > cpufreq_freq_transition_begin(); > > spin_lock(&pcc_lock); > > [critical section] > > cpufreq_freq_transition_end(); > > spin_unlock(&pcc_lock); > > > > Above code has a performance issue, consider that Task0 executes > > 'cpufreq_freq_transition_end()' to wake Task1 and preempted imediatedly > > without releasing 'pcc_lock', then Task1 needs to wait for Task0 to > > release 'pcc_lock'. In the worst case, this locking order can result in > > Task1 wasting two scheduling rounds before it can enter the critical > > section. > > > > Signed-off-by: Liao Chang > > --- > > drivers/cpufreq/pcc-cpufreq.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/cpufreq/pcc-cpufreq.c b/drivers/cpufreq/pcc-cpufreq.c > > index 73efbcf5513b..9d732a00e2a5 100644 > > --- a/drivers/cpufreq/pcc-cpufreq.c > > +++ b/drivers/cpufreq/pcc-cpufreq.c > > @@ -232,8 +232,8 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy, > > status = ioread16(&pcch_hdr->status); > > iowrite16(0, &pcch_hdr->status); > > > > - cpufreq_freq_transition_end(policy, &freqs, status != CMD_COMPLETE); > > spin_unlock(&pcc_lock); > > + cpufreq_freq_transition_end(policy, &freqs, status != CMD_COMPLETE); > > > > if (status != CMD_COMPLETE) { > > pr_debug("target: FAILED for cpu %d, with status: 0x%x\n", > > Acked-by: Viresh Kumar Applied as 6.6-rc material, thanks!