From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 1789743CE72 for ; Thu, 20 Aug 2026 12:57:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787230634; cv=none; b=pWl1PsYbYssLQ4SN0I7u5eNLhBCLmRo+Q+qnAsNB9yHyfhOzSXPUQCBhVNDSXa0KnLIQHXMmiHb9zl5JbSNhl20Nt1h7JFLCwcvEYvaKP1Yz2pX/eLTM9n+ncmdW7hWDpk9m2diDCkXtNTyvkd0MWuyS0uR5c4ltayg3lLiXHU8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787230634; c=relaxed/simple; bh=6zPicfPSfuHP5+V8DMnoMTiDbA7taLfFXsURXMarNus=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=J83S1a5Qt2W0TPUUzHCXl/MqsdgryQpZ7VfXHjpRkbWPEoBTPo7lYYz7VvO1ZE+mMeKfar8O+i9UUFnkxW7Q5uq7dGB2VBNsHG51BoGQdpge+SmpsZn7WqnBbaQdZMVjIRZyDGjcqy6g80dQH16ASI0bmt4Y1oAEs4qqfi8FRVM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Fzeij/KY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=g0l5kqHA; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Fzeij/KY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="g0l5kqHA" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67K9JJNB2927299 for ; Thu, 20 Aug 2026 12:57:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 7fpQDiZh6Rcpd53mASakZgg950UiukvD0vCxtgS43C8=; b=Fzeij/KYYbYcT4iP Qogo9oAMVShbd7qjrNoRYE0XcfkQH1/xw4cT/MiTXAyE8aOhRP3cJVPg1t1Tsh9k wMLL2wuBpPixMO7qIsXN1jqgrG+oj+v1SnOM/+SfgzPxu6aYflpd54ogEAI0wNBM 113lpXUunt/DssYPbjcLjCzFqHNxJNRxiI+1M45AQJkE19sBz9RaCKFAT0n9OneH +QbHlgYsbNHdsN1urEt4CTlF1RC3DPu7vu94FG6+WZFj6QSABfyk+SuWsUS0ts5l vVgc6dh+IkjBycTHyhwIKxolnlZ267DHpzxQazd74b7kBBOonJoJH9PNsbvXm/T/ TQvarg== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g5xuk0shm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 20 Aug 2026 12:57:09 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38dd87656d3so2892221a91.2 for ; Thu, 20 Aug 2026 05:57:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787230629; x=1787835429; darn=vger.kernel.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7fpQDiZh6Rcpd53mASakZgg950UiukvD0vCxtgS43C8=; b=g0l5kqHAAC7QR/HccktfhCOc4AurVOfLSrjdctUOkCQF7Ckue1xbTxC9X6yteYVUKU RhhwMUksI4d7TQj+3GcoQY10uQOtivqLIXI6WqorohawHF9OqfY0+BbSvuHoAl+blIa2 zyKppFhW1mUxlPLuMD3pgV8+U280CnfAjar6tDvWZ2k3RAk3aChmO+SuvR7GFUmKVUri nTcIUjitWChrtiquX3Si5d8uZlFrE0BhfPQhHbdioITMx8AspRTXaVeXu4aXFw6ct3OO nNCEDhD6cSSQKcP2GQKUds2cl3IUfgE+PPbJgmSjN8cA2bJhCuJmUoleP/NBeEFW+1pn N+Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787230629; x=1787835429; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7fpQDiZh6Rcpd53mASakZgg950UiukvD0vCxtgS43C8=; b=kM4gtPFQDnXOb4nvf6OuoCvyjMqsheOwZ0aqK6wnJETNG7FTZVCpNJ5B2li6EwJnMn 1zJrjdS72MQhKFIn35HwsHXKWVbPNWfCfNYE5AMZnmXkja6bCuiRXTWKPNQaq99mEecm 8WoLsFMmFAdzkEeIHHrDOhRGmnAr//AX1+NH3l37LHNUMWW7HwZPA6p/Fk5a0ILkxBjv UF0PIMzDD0JMrzpL4c4EMkcclvCqhOrXp03iMvQ3G9gUw+aFeOz1aY4Y60IrNOkOm2no x2zz4jBOZ+pKw5zWStpUKgUwfDd5kXcD35udypJxlLJBMEinYg9+w2VCU5CrJ/skYAg2 xG+w== X-Forwarded-Encrypted: i=1; AHgh+RqMFBA9jG9mbD+sZyFZJQLsWsbIJqOVbgj/75LzlNqiL0ZvHSphDBare7aTsDHRSeDkganFQ08DosKX1js=@vger.kernel.org X-Gm-Message-State: AFuF++nxcJ/rPO+cWXzlbvdSIuCumLD5ZGvN9qqq6viTsGr6rAZVbr2K vpaKBiYL5Q94cwaMbmCurXgXFywIknsH5P7n4LexGnVMMo+ypJVPEh0NGvdyidetnuW5hp8ONYQ i/mAWCJSStMDuC7ycb2ZZoppbrQsIUT70WeO1TDtJGRa6Qt/vMfiIHycM9CU3pPGOijc= X-Gm-Gg: AR+sD13oDLNgQgswNRnuCjTy5edPs1PX+S44sTN9gJyg9W6vj6EcNB56Cmqnlsg7AAv hFp7QU0TVDcGgxWalQdMc2K3eFYjh/gFKVcEMBSOYPItbRUpDxGIh1Uit47Q3Af2vzZRTncLnal rQp5QS8NlQ9V0OzztF8z2n1FFtKMLpQsSAYOT1k/8BHwlWYghk6lds6OgoysFb96F+9hV83xAGe ENA+9qWddZj5QKgRCiWf3XAoJXOHPVOE8rgBH109HdFqavPkfSLJeVeKMO51CNCqdM9aRSSpb5O qExXGv9TGPHXzjOqjJ2EUSAQTTAzr1E4bOPNLKnGGKI1vV81ix9L9ZgIJfLkQMCnpAJHhiW0XJq kWkwcHCfVx0tXXtFCqXoZZs+OA179GK4tg6fLSJdh2ws2cQhF6BsbEePuc72nOaK78/XtdD4c X-Received: by 2002:a17:90b:3c8f:b0:395:4de4:92c8 with SMTP id 98e67ed59e1d1-395810e9626mr25289915a91.15.1787230628773; Thu, 20 Aug 2026 05:57:08 -0700 (PDT) X-Received: by 2002:a17:90b:3c8f:b0:395:4de4:92c8 with SMTP id 98e67ed59e1d1-395810e9626mr25289810a91.15.1787230628295; Thu, 20 Aug 2026 05:57:08 -0700 (PDT) Received: from [10.133.33.112] (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3957fb60a2bsm7019248a91.17.2026.08.20.05.57.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Aug 2026 05:57:07 -0700 (PDT) Message-ID: Date: Thu, 20 Aug 2026 20:57:03 +0800 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 5/5] cpufreq: loongson3: Replace IOCSR read/write with MMIO ones To: Huacai Chen , "Rafael J . Wysocki" , Viresh Kumar , Huacai Chen Cc: loongarch@lists.linux.dev, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Xuerui Wang , Jiaxun Yang , stable@vger.kernel.org, zhongqiu.han@oss.qualcomm.com References: <20260818123921.3600606-1-chenhuacai@loongson.cn> <20260818123921.3600606-6-chenhuacai@loongson.cn> Content-Language: en-US From: Zhongqiu Han In-Reply-To: <20260818123921.3600606-6-chenhuacai@loongson.cn> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-GUID: mgxO_GFQuF4z7zYppxIgrMdilw6IqWjD X-Proofpoint-Spam-Info: AW1haW4tMjYwODIwMDA5NyBTYWx0ZWRfXwe4NIBFi7szn KB1Np/381FEPgXEzEcl9ft5DyWw0nDP6R/j4SsRlE23XsE2nC/cXBlkp2OqM7AaqCBN57APWT7b iNlFVfRlt1PcI7SdOrtHPusYAqGcO5k= X-Authority-Analysis: v=2.4 cv=T/O8ifKQ c=1 sm=1 tr=0 ts=6a86f9a5 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=VwQbUJbxAAAA:8 a=X8ooYf98hskApLny6-EA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODIwMDA5NyBTYWx0ZWRfX7yec6VuszA++ u0KVjbr/Dq5nI/5unutLBJd4Ivgk6iOeAZwd08XB51CAGjjs6LkK3eOmz9MUQpvLlDQtayAHn3M rQx+NLpvXBpmGjw3oSoF5QHXqdYrmH+C5H9cZ8XGHCZ3JeDGgCeb+9+27nTFZTl/dTHOQMCIcLm L2x13lAKRlSPaeh1oY7MoflK5iDPpAyD79+pGClVleSxGtI/0MflqvU0RgjWxp89AjdEaM2d4nF PgQTm6zaQjSckWKD2TNcpWHnN0/FA3PBHM1Vn+CorvWzvZuYhx+s/pG8WcWB31gBpPqywU5+W/v hBEoUjb9Csvk4ikHqkyf59jN9xleURhLBj5A9P/9AtH2v9iiGyagIqR2THVXXyW53OvR7NswvWX d+uD7UHkb1TiAWJlxr5q7bwkyCcMzfZ0j4FEcRpO0r8HqhyD76NkQ/yjE96Lak5mpWsItWKtIPx rP1MEraykkaeIXGo8Rw== X-Proofpoint-ORIG-GUID: mgxO_GFQuF4z7zYppxIgrMdilw6IqWjD 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_06,2026-08-19_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 bulkscore=0 spamscore=0 adultscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608200097 On 8/18/2026 8:39 PM, Huacai Chen wrote: > Our server productions (e.g. Loongson-3D6000/3E6000) can have multiple > nodes in one package and SMC mailboxes are also per-node. However, IOCSR > read/write can only perform on the current node, while sometimes we want > to perform on other nodes (e.g. when switch governor, the get and target > callbacks are not run on target core). So replace IOCSR read/write with > MMIO ones. > > Cc: stable@vger.kernel.org > Signed-off-by: Huacai Chen > --- > drivers/cpufreq/loongson3_cpufreq.c | 31 ++++++++++++++++++++++------- > 1 file changed, 24 insertions(+), 7 deletions(-) > > diff --git a/drivers/cpufreq/loongson3_cpufreq.c b/drivers/cpufreq/loongson3_cpufreq.c > index c75c0e30e881..e5062cd62390 100644 > --- a/drivers/cpufreq/loongson3_cpufreq.c > +++ b/drivers/cpufreq/loongson3_cpufreq.c > @@ -164,6 +164,12 @@ union smc_message { > > #define FREQ_MAX_LEVEL 16 > > +#define MMIO_SMCMBX(node) \ > + ((void __iomem *)(IO_BASE | (u64)(node) << NODE_ADDRSPACE_SHIFT | LOONGSON_REG_BASE | LOONGARCH_IOCSR_SMCMBX)) > + > +#define MMIO_MISC_FUNC(node) \ > + ((void __iomem *)(IO_BASE | (u64)(node) << NODE_ADDRSPACE_SHIFT | LOONGSON_REG_BASE | LOONGARCH_IOCSR_MISC_FUNC)) > + > struct loongson3_freq_data { > unsigned int def_freq_level; > struct cpufreq_frequency_table table[]; > @@ -176,13 +182,25 @@ static DEFINE_PER_CPU(struct loongson3_freq_data *, freq_data); > static inline int do_service_request(u32 id, u32 info, u32 cmd, u32 val, u32 extra) > { > int retries; > - unsigned int cpu = raw_smp_processor_id(); > - unsigned int nid = cpu_to_node(cpu); > + unsigned int cpu, nid; > union smc_message msg, last; > > + switch (cmd) { > + case CMD_GET_FREQ_INFO: > + case CMD_SET_FREQ_INFO: > + case CMD_GET_FREQ_LEVEL_NUM: > + case CMD_GET_FREQ_LEVEL_INFO: > + case CMD_GET_FREQ_BOOST_LEVEL: > + cpu = cpu_number_map(id); cpu_number_map() is undefined when CONFIG_SMP=n. Wouldn't that result in a build failure? > + break; > + default: > + cpu = raw_smp_processor_id(); > + } > + nid = cpu_to_node(cpu); > + > mutex_lock(&cpufreq_mutex[nid]); > > - last.value = iocsr_read32(LOONGARCH_IOCSR_SMCMBX); > + last.value = readl(MMIO_SMCMBX(nid)); > if (!last.complete) { > mutex_unlock(&cpufreq_mutex[nid]); > return -EPERM; > @@ -195,12 +213,11 @@ static inline int do_service_request(u32 id, u32 info, u32 cmd, u32 val, u32 ext > msg.extra = extra; > msg.complete = 0; > > - iocsr_write32(msg.value, LOONGARCH_IOCSR_SMCMBX); > - iocsr_write32(iocsr_read32(LOONGARCH_IOCSR_MISC_FUNC) | IOCSR_MISC_FUNC_SOFT_INT, > - LOONGARCH_IOCSR_MISC_FUNC); > + writel(msg.value, MMIO_SMCMBX(nid)); > + writel(readl(MMIO_MISC_FUNC(nid)) | IOCSR_MISC_FUNC_SOFT_INT, MMIO_MISC_FUNC(nid)); > > for (retries = 0; retries < 10000; retries++) { > - msg.value = iocsr_read32(LOONGARCH_IOCSR_SMCMBX); > + msg.value = readl(MMIO_SMCMBX(nid)); > if (msg.complete) > break; > Please ignore this comments if you do not think it is worth addressing: A separate issue, it seems that DVFS and Boost feature is set in loongson3_cpufreq_probe(), what if about on other nodes (non-boot cpu node) and what if cpu hotplug? static int loongson3_cpufreq_probe(struct platform_device *pdev) { int i, ret; for (i = 0; i < MAX_PACKAGES; i++) { ret = devm_mutex_init(&pdev->dev, &cpufreq_mutex[i]); if (ret) return ret; } ret = do_service_request(0, 0, CMD_GET_VERSION, 0, 0); if (ret <= 0) return -EPERM; ret = do_service_request(FEATURE_DVFS, 0, CMD_SET_FEATURE, FEATURE_DVFS_ENABLE | FEATURE_DVFS_BOOST, 0); if (ret < 0) return -EPERM; ...... } -- Thx and BRs, Zhongqiu Han