From nobody Thu Apr 2 21:30:13 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18438C54EE9 for ; Tue, 20 Sep 2022 11:07:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230121AbiITLHe (ORCPT ); Tue, 20 Sep 2022 07:07:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229895AbiITLHb (ORCPT ); Tue, 20 Sep 2022 07:07:31 -0400 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9B7B6FA04; Tue, 20 Sep 2022 04:07:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663672050; x=1695208050; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=cG+ig6PqgXVYwqPyXYzP/pbl6jIfJ30Yz6okZaGjqho=; b=QT6EGNyUCogzRuCTj3J6YQ4aF6NOIRK6GlMtTdK8tsRKIbA5iZne0/W1 aLb85rJQePF265YiqPxursM+PzFBPuHSQdfEIr+eD9WO6fC1PumdkVb93 BVDRDwot3vXmkcmNmvj/Bpp2hfV+N73JQ/ig83c7uIFxDWu6bQQPOIpVS eM/FS8pQjGQBsnmAdWvdqu9RRzZ3whQMqrJq+WdTc/xyeKIgSmLl5MQ1Q tFI10qpfC6ikS9Ep9vYMNrwGtKj1WZ14Y2NDKfj1hTGZ8T5nW1wRKg/+z SN6xEo3IsGXcvKUo5PFd0QinfVBE2+CsrVAE9Zg19vAUUGk1UBCs0zMjR w==; X-IronPort-AV: E=McAfee;i="6500,9779,10475"; a="363623027" X-IronPort-AV: E=Sophos;i="5.93,330,1654585200"; d="scan'208";a="363623027" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Sep 2022 04:07:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,330,1654585200"; d="scan'208";a="621223193" Received: from spandruv-desk.jf.intel.com ([10.54.75.8]) by fmsmga007.fm.intel.com with ESMTP; 20 Sep 2022 04:07:30 -0700 From: Srinivas Pandruvada To: rafael@kernel.org, rui.zhang@intel.com, daniel.lezcano@linaro.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Srinivas Pandruvada , Chen Yu Subject: [PATCH] thermal/drivers/intel_powerclamp: Fix bug for smp_processor_id Date: Tue, 20 Sep 2022 04:06:57 -0700 Message-Id: <20220920110657.1948320-1-srinivas.pandruvada@linux.intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" When CPU 0 is offline and intel_powerclamp is used to inject idle, it generates kernel BUG: BUG: using smp_processor_id() in preemptible [00000000] code: bash/15687 caller is debug_smp_processor_id+0x17/0x20 CPU: 4 PID: 15687 Comm: bash Not tainted 5.19.0-rc7+ #57 Call Trace: dump_stack_lvl+0x49/0x63 dump_stack+0x10/0x16 check_preemption_disabled+0xdd/0xe0 debug_smp_processor_id+0x17/0x20 powerclamp_set_cur_state+0x7f/0xf9 [intel_powerclamp] ... ... Here CPU 0 is the control CPU by default and changed to the current CPU, if CPU 0 offlined. This check has to be performed under cpus_read_lock(), hence the above warning. Use get_cpu() instead of smp_processor_id() to avoid this BUG. Suggested-by: Chen Yu Signed-off-by: Srinivas Pandruvada --- drivers/thermal/intel/intel_powerclamp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/thermal/intel/intel_powerclamp.c b/drivers/thermal/int= el/intel_powerclamp.c index c841ab37e7c6..46cd799af148 100644 --- a/drivers/thermal/intel/intel_powerclamp.c +++ b/drivers/thermal/intel/intel_powerclamp.c @@ -532,8 +532,10 @@ static int start_power_clamp(void) =20 /* prefer BSP */ control_cpu =3D 0; - if (!cpu_online(control_cpu)) - control_cpu =3D smp_processor_id(); + if (!cpu_online(control_cpu)) { + control_cpu =3D get_cpu(); + put_cpu(); + } =20 clamping =3D true; schedule_delayed_work(&poll_pkg_cstate_work, 0); --=20 2.17.1