From patchwork Mon Mar 10 07:16:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacky Bai X-Patchwork-Id: 14009345 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 99381C282DE for ; Mon, 10 Mar 2025 07:19:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-Id:Date:Subject:Cc:To:From:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=lMx7n7xdTAzvgf/DjrakrUzyUWsc05RmQ+HIT2Wr9CQ=; b=Sw19xcFMPcjD+KkldozQQe2gyz jN3W73cw0qHQCK3GVpzMMW5oOWn0wHNJXoBX5dyL2sy12l7WbewgqY5wY48k+sI2YsipemLSWoIr2 4EvOLMPazswSx5DMs62stK5bFccYwsC9WLmgEYJJ5zEFYzUrP+uyjaJLV+bkfdqrGcfVOp0uJ/Blx m+DnZIHIJGroHjT74uptPEfRqyOzSLd0Kk+lgwxbaLJoiOEStokCsm2+Pig74/TuBlER+E1Y6Culs DPoJbD7I2wcEilQtzkjD5XbTmAcjsjnzuTHg9Yq/28euzajI1kvuTQHIwzShhva+JaPREokefI1Hs yUAemX2A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1trXPY-00000001j35-0Sp3; Mon, 10 Mar 2025 07:18:52 +0000 Received: from mail-vi1eur05on20603.outbound.protection.outlook.com ([2a01:111:f403:2613::603] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1trXMR-00000001ii7-1RyM; Mon, 10 Mar 2025 07:15:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LSlBcNEwgeEjUszzY2Aeia7r8D7xDA0kzJ9MGuXd4vDqgLoROf5U1xfhx3uP5GzjwYGSnOiWAPM71ZJBtmxi4W2LOeXWvx4/cfl/f4mDSgpa74Wb25INqlnpyvb6k5wNSq+eSBKLl04uJQ4xd1hIvm1rqvkcTBoEM7Evl62annwizA+qC3uhZgq5kyj2y2fycQZa5miMrtqmSeQUv7Egl7vvE7VuBTJ2IiinbkX03pfs0mzFqK1FzeLdLuFsZjnxXHMdzYDcMe5IohIn2I0tTaRBIotJak7yxdfuNvbq//ja5FvxpPLKKSrjj75eNObftezS6vAUzHamKd5yzTfAsA== 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=lMx7n7xdTAzvgf/DjrakrUzyUWsc05RmQ+HIT2Wr9CQ=; b=iO7afFo/aorZm6azxeGNPU2XAQoaJgoGbuajx8CDMwNaY+Z9DZBo5m+zspbCkujuIhlo9h9CnVNPad0T8iLAHXbqGmb5mA8WRUqMOHu0aPYCK+KsvBRoty7L4slaQplzXKjqsgAzP1CKOmx88lZqWQZKjaSN8A4ps3WEL2n4XGZ9gzSfqVWTeg6QNSD3SpOcIgT1i1d6g/zhNJ5/Cv3JNzzm6DeU/Mjfo69pOliCvdwoHp2OdUKVX/vtvZh+dlHtfpXhgf8s5r1t5hkgn69+a6w/0a0KxHDRuKhnDzE+lM4y0UbZMsMs4iYyewWPLBs33rnaIVoBPQbkKw4wuFrsjA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lMx7n7xdTAzvgf/DjrakrUzyUWsc05RmQ+HIT2Wr9CQ=; b=FwDaheLJWkXnx9Z6yYH4I6Q+uIZnTkC4RJmrK8MG/y1tpf89hGqn9x2oPxRTWqD3Mbzs4ZqeVJ38wcK3tqmQlX4jSintNDLBSRlCzN0ktAWAvN/sHVHC6EDI2wKZLvi9nkABil3Uu8v/0S9fBesJO9rrzGf+GK3NVv/UpYdwvG9ntvZPRuh5qVW5otE4X/Iu2PMr7dsTHzBlo08yV/P41fq4Dq8j1FRco2H5yr6PiIeArkk80W9nkRaRPiNfEGXgG4BZ3NQMkbXaJT4SvlMTwNIBTdhDDMb6ZwOO1rYqAsTL5WE6WijhMoBaC1Ruq89YiUljbMP2NnH1b7pcfD8Egw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8642.eurprd04.prod.outlook.com (2603:10a6:20b:429::24) by AM9PR04MB8324.eurprd04.prod.outlook.com (2603:10a6:20b:3e2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 07:15:32 +0000 Received: from AS8PR04MB8642.eurprd04.prod.outlook.com ([fe80::50d3:c32a:2a83:34bb]) by AS8PR04MB8642.eurprd04.prod.outlook.com ([fe80::50d3:c32a:2a83:34bb%7]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 07:15:32 +0000 From: Jacky Bai To: rafael@kernel.org, viresh.kumar@linaro.org, ilia.lin@kernel.org, tiny.windzz@gmail.com, wens@csie.org, jernej.skrabec@gmail.com, samuel@sholland.org, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com Cc: linux-pm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-mediatek@lists.infradead.org, imx@lists.linux.dev Subject: [PATCH] cpufreq: Init cpufreq only for present CPUs Date: Mon, 10 Mar 2025 15:16:40 +0800 Message-Id: <20250310071640.3140435-1-ping.bai@nxp.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: SG2PR06CA0190.apcprd06.prod.outlook.com (2603:1096:4:1::22) To AS8PR04MB8642.eurprd04.prod.outlook.com (2603:10a6:20b:429::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8642:EE_|AM9PR04MB8324:EE_ X-MS-Office365-Filtering-Correlation-Id: 1239f005-9a0d-4c09-a193-08dd5fa3588a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|52116014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: N/DatF7+MjTUw1DrQNU9SgathohhN5FjfA88vpVLl+DAaqMr7SL7Add1Udueqha5b32X63Jxvc3s5k5U0FGnQb3hQHye/DcNNTcnxW7dFCQeXOCLv0NOI5yrPiGxx1t5uaWk/gZW21x7+XQ1Yd/+7uMNKxeB2yLRPfq1ZTju6bQUf1nfjxhB3fE885lcV8SaP153UKy/r/PfC1lohaoHRICz9uYbUHyEqXfmUurC79yRBAy5YLuFbqSsw+rbrDV/mdCKkLPy8F7gxe9ebjqqWeE7pzFCnC6+nzrPZ/1RnZty1oeooo+zl38MvYvAKeYVv01TL8OpHCSOqfukNdU63/4DQzEcLq7+sS8xetKrx7idCXaUbM5Tie55HTyQs6sOv1XxKEbpZNAOt5BVw/qjl5kqXR7uZr0iVpCMUXF5LmAVdqJ9JBDKgWAdqe0TlKGk6O3Ug+z3YMOol6o0Xd6UJ6y2BYURPVOS/P/1EIf/lWVMjvR3mHyyTX0R2hlx5ZuBeEtpooEgKvSJ8+u6/a2rEuA0iC0GLirmD0M16ItaCWWBCEHsQwkUBwfpdhRe0RNyvELUotCZUURyQYk3zSK/AFoxmYEg4nupAICg5X8wD00XIyGvp85xMhbqbXwFKBzbTsO4TqK3ACMPkUwn1wqeirOhCUWylBrWKGU4/eAcsnfIxCX95QLTwD4RWz9skNP01k2CuNJblwc/jsdSe+htiDCuE/oIXdlsajW7dBRY8xZiT7gZ8vpG77hXYjIgP18zMiEwT6az3mJGdK29gXbprfTNG1O8gsSNhdJQY5WEAbz+DrLlYuwE1Gt9sHQHUeo4Xl6FnvO59HeH79VL5Pp2GX9QwsfYDdAms3rwQkj1l6TnfQDn+qpBEl+QBLA9OrpA3pABvG07ni+0oC8SUXQsb3gA6oT1/Vzk4MD8f0GbIVQ4wg/4mTSMRLXA/BogN3WSUG4/blLuEQOQ74wYCh5TSPPnCctNDZyaT3L3cXXWxJArAHShbFLvCZMkBFnPLKZ4GrCRY8057VqKktj9aOjWP5vyfSmfyNiO19bx3/AAqRYOUxkU1hLJUmlZjM09acBZ5sQCRjNH8eOmix4hD8STs/WA4tIqn2D/IWyv9mOWM3YNnwnLtz0sQteFAj95vLtFS6A9PJ9P8OX1jLw9KYUn24+7lGhcpqcahtGiLsvyqcOpjz6BenH6Fyb1wvMer0xLOLIPsYyj67h4Dp6OU9IUtVrMSJSjb7pa4Cp0tuJtGO5jhPRxj+CoSKvarYhxeGq4tjYLh850Gir9Gj/sf8FZkjCdR/mTS6QOJqayeTbgvqUR11EwWFv6sjJ4wWOmL46Fdym5AsJBIzwLPb32YMsoxU5normzVn9CTmijZ4tospwahnDqLdbBW98h8gDFGsgwk6omrqYKlG0hyka+j0Jxy0nQJKM3j5ySP8vZ2iSZFD5KGgph3EU7PIYxVCKHaDMu X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(52116014)(7416014)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CP4ZJ0V5TYJUFjjKzmckFlf475Bw+nWIgeVz6RrBQkc5TFrxO//vLTawSEyku+VIxuQkOy0qUH8Xu24oUrTeZ3GgGuBLid7Zk54SH5F+lSQjxhdJA9Quu+m5t5HP0XL1MHGxcV/IsN7XO+fHbqvE8gQVlx2FqivKh9UJ7jFUdEsze8X9dODgVRZma7jXVmqRjo/hdpE79ZXaAwN0rkNEPm54jlL1BOfuh+lIgAwkRREEgsatNsz3PQfnluyb1cmrXJwqkGPPBDnWL0CaFh/VK8UgSbqHmuy+dH0Cv7XX+sUFhFMH2bTFzczygbkM90quPacV15Emcqf20btX/p02KHxUpcqkd5ju2GjnYXEPiR6/gOvaInOvE0C0Dh+VarG0g4RZIXfzaRRhw5C7CgE5EldU3OGsPhSxAKv1tZ2SAyhpD85Za+jKSweBeAuSBzfxYqbvhhwhizUj76SpDOsuMy4oJaBtcnG5qKv3uRGdzVdvC2/Std5isXxULPqFlVnbkjJMyyrx+vpzhLr5IxMXkxtTnaq4X8lK5ur/K1z6H2P7ZBGKB7kBzOQSzLJpoFTLo6czB3sMaE121t4CIwBDygUB4JSzGx2IvbN8bgnBTTUX73+PCbb0Ju4jnVtPUbIvl1SQLK3h7xTzRagQjDYXdq65ZRPmB+EaxcuvwfAemQ8NNb37DjzZJunJvwO7FGbmd4Qwj7J3n46sD5aIT/6PDd9zyLhyNuCzo4ZIHGId96bvtDSE/ZjByGZLN7eWNt9HZVF7JbmwDY+F387rFTRbr7H/amDUKozxtC2yVtvbtTHb6RGRKEzKcQpeHwe/qQxH3aqbOR1CKwCc6xpiTEDlOTHS4LC7LpcAHCVjpy2HlKWj1/JBDzOAFkvvIZ18kNFt7XdKklsws2cDE/LM+x/ZQd9hjzQP7CyFKG/cxMrKDArF0i/YhuFjlyG1dhVMt0tuRBIuxeXiORY3sQKJJJyrAjiTzSJPG3K1CGkICwk32b0RbaB0QVFppfeLpZMF8A2XepcHlf5BCa1qVz80wmB1TmCtKnKuWKuFS8NAEDe49HvFqzwxMxerccVvrDvl5RZ+ZrqB4gLOSXt3kKZ5yvI38wteTeXGA5ceowVnLUd1MRqfPicQg3woeP2snKkoaqVVPZEkzlvBslpzK2zMN2kcxZGwYZqt/9l3uCiA2xzv1teSov2f/ctBF140sJifr0O66un4pYhcGR9s9tcjvnl6GR5lrOOG2rLrvH5JvnvHSKqJln3a0Opa1OaCLc0/CRz2rkpHw8EPEgtNDspTlXK2iUi6v2Ow4F9jUw3JFg/Ish/xPq2aEM5O+G8le9ZlO+X0/MQp8C+P567kOiNT5lstsei62nJhWaeNM0t+GrE3cLBQUaIVyeo99lGjf1QYsFViEvO5Oo1XpRoalqotbRkUpu4sTggZH8P3iKst/SaM+m+wB+nj64wcXqG+hZHlGkPsILR0hRBAoxxPjtFNmqsHRv13CBl0j8S3Drr+HhdI+dxlbgzZO4s/T1WDj+MvV1H6WhcnRl85rKTHVsiy8WZnZp2p44Ji5nejO3/0dJP6xYb98EYpM3vku5PyPikWG4hD X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1239f005-9a0d-4c09-a193-08dd5fa3588a X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 07:15:32.7995 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: P7VIR0eU3hkKApNkY+ckLgsD1v8QbznnLHTNuiFJnFfDkx3OKg8g1+zWu486DyM+kuGSNNVcyT7fLB3mlvG5JQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8324 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250310_001539_493051_AF16BF83 X-CRM114-Status: GOOD ( 16.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org for_each_possible_cpu() is currently used to initialize cpufreq in below cpufreq drivers: drivers/cpufreq/cpufreq-dt.c drivers/cpufreq/mediatek-cpufreq-hw.c drivers/cpufreq/mediatek-cpufreq.c drivers/cpufreq/qcom-cpufreq-nvmem.c drivers/cpufreq/sun50i-cpufreq-nvmem.c However, in cpu_dev_register_generic(), for_each_present_cpu() is used to register CPU devices which means the CPU devices are only registered for present CPUs and not all possible CPUs. With nosmp or maxcpus=0, only the boot CPU is present, lead to the cpufreq probe failure or defer probe due to no cpu device available for not present CPUs. Change for_each_possible_cpu() to for_each_present_cpu() in the above cpufreq drivers to ensure it only registers cpufreq for CPUs that are actually present. Fixes: b0c69e1214bc ("drivers: base: Use present CPUs in GENERIC_CPU_DEVICES") Signed-off-by: Jacky Bai --- drivers/cpufreq/cpufreq-dt.c | 2 +- drivers/cpufreq/mediatek-cpufreq-hw.c | 2 +- drivers/cpufreq/mediatek-cpufreq.c | 2 +- drivers/cpufreq/qcom-cpufreq-nvmem.c | 8 ++++---- drivers/cpufreq/sun50i-cpufreq-nvmem.c | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index 778916f89a51..e80dd982a3e2 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -283,7 +283,7 @@ static int dt_cpufreq_probe(struct platform_device *pdev) int ret, cpu; /* Request resources early so we can return in case of -EPROBE_DEFER */ - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { ret = dt_cpufreq_early_init(&pdev->dev, cpu); if (ret) goto err; diff --git a/drivers/cpufreq/mediatek-cpufreq-hw.c b/drivers/cpufreq/mediatek-cpufreq-hw.c index aa209f5527dc..74f1b4c796e4 100644 --- a/drivers/cpufreq/mediatek-cpufreq-hw.c +++ b/drivers/cpufreq/mediatek-cpufreq-hw.c @@ -303,7 +303,7 @@ static int mtk_cpufreq_hw_driver_probe(struct platform_device *pdev) struct regulator *cpu_reg; /* Make sure that all CPU supplies are available before proceeding. */ - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { cpu_dev = get_cpu_device(cpu); if (!cpu_dev) return dev_err_probe(&pdev->dev, -EPROBE_DEFER, diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c index 2656b88db378..f3f02c4b6888 100644 --- a/drivers/cpufreq/mediatek-cpufreq.c +++ b/drivers/cpufreq/mediatek-cpufreq.c @@ -631,7 +631,7 @@ static int mtk_cpufreq_probe(struct platform_device *pdev) return dev_err_probe(&pdev->dev, -ENODEV, "failed to get mtk cpufreq platform data\n"); - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { info = mtk_cpu_dvfs_info_lookup(cpu); if (info) continue; diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c index 3a8ed723a23e..54f8117103c8 100644 --- a/drivers/cpufreq/qcom-cpufreq-nvmem.c +++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c @@ -489,7 +489,7 @@ static int qcom_cpufreq_probe(struct platform_device *pdev) nvmem_cell_put(speedbin_nvmem); } - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { struct dev_pm_opp_config config = { .supported_hw = NULL, }; @@ -543,7 +543,7 @@ static int qcom_cpufreq_probe(struct platform_device *pdev) dev_err(cpu_dev, "Failed to register platform device\n"); free_opp: - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { dev_pm_domain_detach_list(drv->cpus[cpu].pd_list); dev_pm_opp_clear_config(drv->cpus[cpu].opp_token); } @@ -557,7 +557,7 @@ static void qcom_cpufreq_remove(struct platform_device *pdev) platform_device_unregister(cpufreq_dt_pdev); - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { dev_pm_domain_detach_list(drv->cpus[cpu].pd_list); dev_pm_opp_clear_config(drv->cpus[cpu].opp_token); } @@ -568,7 +568,7 @@ static int qcom_cpufreq_suspend(struct device *dev) struct qcom_cpufreq_drv *drv = dev_get_drvdata(dev); unsigned int cpu; - for_each_possible_cpu(cpu) + for_each_present_cpu(cpu) qcom_cpufreq_suspend_pd_devs(drv, cpu); return 0; diff --git a/drivers/cpufreq/sun50i-cpufreq-nvmem.c b/drivers/cpufreq/sun50i-cpufreq-nvmem.c index 17d6a149f580..47d6840b3489 100644 --- a/drivers/cpufreq/sun50i-cpufreq-nvmem.c +++ b/drivers/cpufreq/sun50i-cpufreq-nvmem.c @@ -262,7 +262,7 @@ static int sun50i_cpufreq_nvmem_probe(struct platform_device *pdev) snprintf(name, sizeof(name), "speed%d", speed); config.prop_name = name; - for_each_possible_cpu(cpu) { + for_each_present_cpu(cpu) { struct device *cpu_dev = get_cpu_device(cpu); if (!cpu_dev) { @@ -288,7 +288,7 @@ static int sun50i_cpufreq_nvmem_probe(struct platform_device *pdev) pr_err("Failed to register platform device\n"); free_opp: - for_each_possible_cpu(cpu) + for_each_present_cpu(cpu) dev_pm_opp_clear_config(opp_tokens[cpu]); kfree(opp_tokens); @@ -302,7 +302,7 @@ static void sun50i_cpufreq_nvmem_remove(struct platform_device *pdev) platform_device_unregister(cpufreq_dt_pdev); - for_each_possible_cpu(cpu) + for_each_present_cpu(cpu) dev_pm_opp_clear_config(opp_tokens[cpu]); kfree(opp_tokens);