From nobody Sun Jun 14 08:16:09 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 6E9BE34250E for ; Thu, 2 Apr 2026 03:01:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098903; cv=none; b=YUoo0M0KrVAsMdLwqpbTS+Ppq+6SNAFurIGecMUOQ1r1huocudh9J/b27ew55g5L8JTNVsfWT9hNBZQ9ack6eBlSrKe1e+ja6/TSedMraPYJFajqcWOQdti6Sfs0yrUpeE2ZEpQSt1CoaGU7Jgvct6MrJ/gW3IhGsu0zOitN39E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098903; c=relaxed/simple; bh=xvIhsQLnf6VaC5Osn71e2H8dj70AFPG1lZSuD4kkNsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KhAMjt2aG10EQQmEy9j1dN+ZfOo2RWfvat0YCXuOvFEzcB6+1Frnn1nYet5BMD1+wJ9dqNBeqbzLRbyozsZpKMrXPs9rAu1E+pUxpZv70EbDsUOaNBRV3sCGihQtkTVsvGbzRf05o+1gKZ/xIBhRSlWNmEKTpbfHa79fem56Fas= 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=atiKGzz2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=a4lMxbdI; arc=none smtp.client-ip=205.220.168.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="atiKGzz2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="a4lMxbdI" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 631M4L241965398 for ; Thu, 2 Apr 2026 03:01:42 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= AllDrQRxwAl7RCBJmeePH104tAT70KjLDbo84NciKdk=; b=atiKGzz2M0U6E1Hh FbdFOgHERWa1EoiVQq0p495S3zCEoToAk76wytbhO+p0iU54f9isRvFd/pcb8gzC 4Xgir+644U6/f+s4Fyez1uwJIaVOj4hiU6e+rRoiJwwZUQDHb3En92mwPGCPfo21 8G1hI/lbUw2Mj5QsLQczobOTr/Vutd0RfPacLUr/1eLrBf+TS8/GnLIpLMiMQ+jq 9ZZF9JnHTbokhj1LQmjj4WRygTVfMA0ILQIZ+4/p91ilKBWsYA4s/pfoPYMsElI/ 5jS5pEBNDlVDc/gV67JmNQ28QziI6rAG9GA+Lyzn/qTlBm2ffnGnCq+wLDvnIeby 5WXPaA== Received: from mail-dy1-f198.google.com (mail-dy1-f198.google.com [74.125.82.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d9b9h0w4c-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 02 Apr 2026 03:01:41 +0000 (GMT) Received: by mail-dy1-f198.google.com with SMTP id 5a478bee46e88-2c5b48baf75so3755462eec.0 for ; Wed, 01 Apr 2026 20:01:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775098901; x=1775703701; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=AllDrQRxwAl7RCBJmeePH104tAT70KjLDbo84NciKdk=; b=a4lMxbdIOfXqNNutH0be7n/SdnlHHtv59i0YYOUSeRSYeYL+LVUIJ4HF/92DV+Y4PG bO5ykosA7p4LCOLxzdpuJ1BspZw/HH3IqPBuyzyp+uDvvvDD9/HtsyEpslRaQSNIP9uf lEpDCIsMS9JZRoH/bmmSBEfndHbNVFGeMe3bkfrsZ3L/7MbaWTmwM/ficu55UxTv63L/ dxvXmI7sdyrpScoIEV7T0xVR34uGMlGE0Z/Jz2EhedU9vev5MNGm+/HER6m4Ul4SqjLo XijJzyCuWhzw/F5Gb2BiXZjZd9juxopqhZVaDNNqbgxSkDsvndyjvw3lu44fbdbgkmy8 xQpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775098901; x=1775703701; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=AllDrQRxwAl7RCBJmeePH104tAT70KjLDbo84NciKdk=; b=m/H8KtDJPkguFuAWKW+lgjGcDOuO41ag+OEWFOfP81Te0MVQiigVi+DR+TZDTaeluq o1dTGR2dPM2Qdkh4/2O+5Kranp6hFbYV8Za2VrFIT7JXihT9sFxngScZaT3VajjRr8ln h64vcX+wgvZPaJyaz732dvOx376ozqSOzHF+EoxoXDHfOesm6c82o4bCcirDBRBEsCIB 2918bOPTk6it4KwFkhVq+AglQy7ByFl/wi6TtgqocF5JPsC2C5iwwF/0aX/LaI4fuAUm rNxCUIZDVtX2dVJsghA1JqrSB3ewNP8RePfgJeQVb0a9BaMX6+wy4o4WWdTe8iCQc/9y l8/w== X-Forwarded-Encrypted: i=1; AJvYcCUX8893nOGrelB1aKu60m0NrqbgCzjwqBWY0hn8SkLo0S1UdEwCZUj9ycGXPz5Hha2GsijKroWdMujuLuM=@vger.kernel.org X-Gm-Message-State: AOJu0YzZQqTJQWvoMGMWE0pecNJP5sDTFYa5y0pEyOdrg37+IPSlW/KN LADt9aKLVLY2vJqGUUQUcvMBid5v5yJ1WDXfe90yFZnaNsgfVk5jBTZVPjnLKFU3bzvvycMvZzk 0SMoDc0bwd3+6vOL+e1JOyF0V/mCAuHZaPtQRDCLCHrqk9itDl8NdtheM6Ueur2y+AA== X-Gm-Gg: ATEYQzyjSK7PVM9ixa28xEyVGYqYoMuxXoXYDRuixLrhlEbTQeyuQQLkD70Kl2NNJQ1 YthzGPTPZr6WORPUJDFINj1nghHfpV6feNcyG3iBxY5cb4++bD6A8v97c5VggWSF0S5GpCtgZ9h 3MKTEExsGaus2IfQIw7jqX+7tYZi+Tmkhmz5TkiSUaWUW/wQkqKqhyufIrYkW6BfdM50QeC8QxG 9lg6Ug21+xTU5zB7U0Qq0k3t1ArdZpyXLQ633QpO+3XAPyYXBnfKvM6JvJ1czO32JGRjD634vSv u3UYWQmVt5bKqjn5Ib5VcZWA8AvQNktXap9VHHCGXsPPm4jrrirguyVb6FiapAStyPl7fSFZPeM MSz2AqTWPUM+5xjZEnE10j41hzhEj6XiVYszIZFnEDYpDREymI79F7RKDAprGHuMrySNO0ZZrng == X-Received: by 2002:a05:7022:458c:b0:128:d5f1:d594 with SMTP id a92af1059eb24-12bee639048mr1075722c88.10.1775098900987; Wed, 01 Apr 2026 20:01:40 -0700 (PDT) X-Received: by 2002:a05:7022:458c:b0:128:d5f1:d594 with SMTP id a92af1059eb24-12bee639048mr1075700c88.10.1775098900112; Wed, 01 Apr 2026 20:01:40 -0700 (PDT) Received: from hu-fruiz-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ca7cf010d7sm1287044eec.25.2026.04.01.20.01.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 20:01:39 -0700 (PDT) From: Francisco Munoz Ruiz Date: Wed, 01 Apr 2026 20:01:34 -0700 Subject: [PATCH 1/3] dt-bindings: cache: qcom,llcc: Document Hawi and future SoCs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-external_llcc_changes2set-v1-1-97645ede9f6a@oss.qualcomm.com> References: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> In-Reply-To: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , Rob Herring , Kees Cook , "Gustavo A. R. Silva" Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Francisco Munoz Ruiz , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775098898; l=2958; i=francisco.ruiz@oss.qualcomm.com; s=20260305; h=from:subject:message-id; bh=xvIhsQLnf6VaC5Osn71e2H8dj70AFPG1lZSuD4kkNsA=; b=UxYvpSs3KbM8aGkfbVs/PZ16ZOn9en7czLcEF7YcFwobXdVfJEh4SPICstvLteJNbvx+sIXV7 2ShvmHAjM0hByZFthynH2n+7Ryn0Ycq2KboA01Y/dh9NFEoeo3gZ4Q5 X-Developer-Key: i=francisco.ruiz@oss.qualcomm.com; a=ed25519; pk=Gcv2CX7iHozjnQ4oK+9fINmBiQTmVC4SpaZzoM63CHE= X-Authority-Analysis: v=2.4 cv=TqLrRTXh c=1 sm=1 tr=0 ts=69cddc15 cx=c_pps a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=TYsQ6n2DTjt8ZF7sQeIA:9 a=QEXdDO2ut3YA:10 a=bBxd6f-gb0O0v-kibOvt:22 X-Proofpoint-ORIG-GUID: _4Gyc6ETZTh1eGJz6JinH8a4tnZh3v8h X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDAyMDAyNCBTYWx0ZWRfXw3N7V7CxOdgA DKBXkp4JkpqOufvtQp1cnmZlMp/l6xKlBfLKgUjKWEEwDn2m7uXIal/qobmrUTBM/GysmG/dnrf 229WzDzfoXDHvZ2dVSftD9/EIJ1/kY8QYO3ng+l5nQ73fOua6NfmE8wQv1l/z+NwyAVzZQHnGr4 Pp3Ka3PdzZxbVRNZHy1hIWwYnHL8XL+M/+BsmYQWDVrY1W1oTSWpOkb3WyQyMfb1WQBeIqvVc3S bu1lqRNpareOl2+F8Kd2EVTtfwyPWhUXz6VO49uLZTA7HXMwIxxjSd2TG/i/dEXLAM9KZ6zF+eM GyXGCMk5a2uR9grasrVZlQw9Qu+O6ZY6z84lEumOHUFCxugSxZdYHjEP2nwBbhyHivA981PPdcZ ws/KpOosXxVEiPNEbau3ygm20XSZxfupMRSxF/nJzByG4QekiX2YkcjhMZ55z+Zj1IVsJsCz1wp C6l2CSFyznhyXdVFs+A== X-Proofpoint-GUID: _4Gyc6ETZTh1eGJz6JinH8a4tnZh3v8h X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-02_01,2026-04-01_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 spamscore=0 adultscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2604020024 Add documentation for the Last Level Cache Controller (LLCC) bindings to support Hawi and upcoming Qualcomm SoCs where the System Cache Table (SCT) is programmed by firmware outside of Linux. Introduce a property that specifies the base address of the shared memory region from which the driver should read SCT descriptors provided by firmware. Signed-off-by: Francisco Munoz Ruiz Reviewed-by: Konrad Dybcio --- .../devicetree/bindings/cache/qcom,llcc.yaml | 29 ++++++++++++++++++= ---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/cache/qcom,llcc.yaml b/Docum= entation/devicetree/bindings/cache/qcom,llcc.yaml index 995d57815781..ca1313de10ca 100644 --- a/Documentation/devicetree/bindings/cache/qcom,llcc.yaml +++ b/Documentation/devicetree/bindings/cache/qcom,llcc.yaml @@ -11,16 +11,17 @@ maintainers: =20 description: | LLCC (Last Level Cache Controller) provides last level of cache memory i= n SoC, - that can be shared by multiple clients. Clients here are different cores= in the - SoC, the idea is to minimize the local caches at the clients and migrate= to - common pool of memory. Cache memory is divided into partitions called sl= ices - which are assigned to clients. Clients can query the slice details, acti= vate - and deactivate them. + that can be shared by multiple clients. Clients here are different cores= in + the SoC. The idea is to minimize the local caches at the clients and mig= rate + to a common pool of memory. Cache memory is divided into partitions call= ed + slices which are assigned to clients. Clients can query the slice detail= s, + activate and deactivate them. =20 properties: compatible: enum: - qcom,glymur-llcc + - qcom,hawi-llcc - qcom,ipq5424-llcc - qcom,kaanapali-llcc - qcom,qcs615-llcc @@ -57,6 +58,11 @@ properties: interrupts: maxItems: 1 =20 + memory-region: + maxItems: 1 + description: handle to a reserved-memory node used for firmware-popula= ted + SLC/SCT shared memory. + nvmem-cells: items: - description: Reference to an nvmem node for multi channel DDR @@ -318,6 +324,7 @@ allOf: contains: enum: - qcom,kaanapali-llcc + - qcom,hawi-llcc - qcom,sm8450-llcc - qcom,sm8550-llcc - qcom,sm8650-llcc @@ -340,6 +347,18 @@ allOf: - const: llcc3_base - const: llcc_broadcast_base - const: llcc_broadcast_and_base + - if: + properties: + compatible: + contains: + enum: + - qcom,hawi-llcc + then: + required: + - memory-region + else: + properties: + memory-region: false =20 additionalProperties: false =20 --=20 2.34.1 From nobody Sun Jun 14 08:16:09 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 855FB352C51 for ; Thu, 2 Apr 2026 03:01:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098905; cv=none; b=YEy7AFYjsO0osFYAmwvkj0Wxa41iqArMhO0CGKcNceOpnuSTa6vpZ+jCg2PdJ+0DgtJSvL8f4tDFYI0p0DVfIqRH7Z1va7cUOSqepsPxFa0gCYx1pPR1z+7232mdIzUF9y6AAJRIA2av/kOSRRcnDqpv1TA3il7xxHN9ejjKvHE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098905; c=relaxed/simple; bh=VRvociPdZzkn2LBvWUuRQKKAFjnlqZ3T0gECO7AzEzs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SaZQ4eWPdevLpadbdfYGmTI2H4J7u2MHO9R47Ys4akbWkXFmDtcpR/87Vnefw0K/5CsfYYBCfdIyQsAk4kOHvL5KMIP3LmA/4GivItkDyEbPLGu1XOn7gSYgyvU6ZRIpvUi+gsfO/NnhvUpFGr3gL6LDo6W5fCEgZIi4mHXNQBI= 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=IgU0LK6V; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fLNLEhUy; arc=none smtp.client-ip=205.220.168.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="IgU0LK6V"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fLNLEhUy" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 631M42Y42903519 for ; Thu, 2 Apr 2026 03:01:43 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= PbkX5Opmvuv/ESNdNx9guci0IYixc6Yeg821sutZxMo=; b=IgU0LK6Vdll9puOW SuB2uhZDa0+gAxnMH0pSpMrVHZsbhDtXSKZUJ6r3KllrQKlSUcvaZAPT1tyVcjMK S35HjYY0ycfXalvyujROnbOOFAON8S/WV0ZHqPAaDYygt7ooGSYKPgoF5O+lIrt+ +TlIIatUKGbKpA71ObKXC3CW0KVMV+eoq/w7AoSUSl4HhYZ6Ibna3EkuYmI9RRik zP8pzei6wYDtZ9uAMColOVCJEfBZSmOC2qubMp3gKZ0bsZnsYYyoGtCnYoQBhXam WOm4KbH3EYf4Ht58OoKJq5kDDRIotIwbOuFy26c2SgBtXKLlQfrq+8cdyFodV59Z jPCQtA== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d954cagxs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 02 Apr 2026 03:01:42 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2ba8013a9e3so544190eec.0 for ; Wed, 01 Apr 2026 20:01:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775098902; x=1775703702; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PbkX5Opmvuv/ESNdNx9guci0IYixc6Yeg821sutZxMo=; b=fLNLEhUySMmZMJ5fzNL8PQx2CBcyTHAET288LNJepxj1rBRm4mZAnADdCogsLKuiAB wyPatcOxxxuyWqSawBI9IfQjauZY1wMKQr0I8qIBC2TH/mcGwyEwF6IfGxx1M80o9/eR luvSm8tZH8ZUe8HxFc1/qctY9TzTSoE2quVeaGpVF2h6t76GgPOgqdC0IiAvldTbbkJ0 kVU6WRAYKvqkTgt6Z4Fi4A7Ko41zmYmdUF6HNVIzHxOs1SbdorAjS1QHOqqIPXLByjud cO1s4kf97skyY0w6umSXvR/fLfsmxP31t9f6BfiIGhgIKNkKXX02x6gEkak5fgTDH0o2 SDZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775098902; x=1775703702; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PbkX5Opmvuv/ESNdNx9guci0IYixc6Yeg821sutZxMo=; b=i+klPrjofKJjDv1jMu+XzGbyEzt3PkHvLBTt/A7eAzbRHU7wAg1+mZht9er1V4J73r 7YZtEuXpNIm+Jtxxj9TxFToohT8knIKGtvYL8efTL2529+2keZMN3aBzXGHVaPz4PQQ3 BQjSBqUpzaV2sFdMFnnFi4TVpAjLkpmDCQT8tzIn7C9ys8hNDDojprR7bXOtPDHydgO9 3G09svu0VhW8x/Y8Z723pd6kZqwFr7KvLnZH1EcFg9PNxUHweq6nZGloYY0nvtHIJDXb 2zT5+dyWMui+HXQsGgCva5/3SXazqoiMlq5PojLQI/NV0KN32goK8RVKFUoSo+AUjlVr 5Cag== X-Forwarded-Encrypted: i=1; AJvYcCUt6ubzqeQjOTWQbKpOWOEbi+QlfWeyRYVzeXjfJOIAWdNwQJLkd4AdPl7O8jKaGyfR4ZXt+EThKYcN/aA=@vger.kernel.org X-Gm-Message-State: AOJu0YyxFsnKG2WnXWvJB/G/j7AsoozrxfPFWeuONrwkYL7bD356ilFb ZmbMok497x/0YcMXyaYa+IsXCHYyVUdjJDe+tpURk7CRG8TDohlNAHbW6OyIZV8w4pJrugQuE9D L1uxUk0J/GRV5Teg1LD7vyylmf7ktRQllyYjChnlL1fB3lmupfW4xdyZZqY3jBpUZNw== X-Gm-Gg: ATEYQzzU1pnFmQh/Tpa+1MVt0sX8wndqbjCfyriWo55qIY6YiI1RgiKNJ865/f7CwVc +JcQVreca29lYockH3Xw3Th5jZD7Df41kKVSy5WXmztG6r01WASnH2wpgOQulPMP0/Qf0PKHp7L FKWjyfYm3YSZhgfREuGjp7eaXSu4BRrdOjLyCR6nS/J//iqs6J2q2/7lA845xFF7fRKuk9dlzPo k8xAM+KzozOl0n2tJ8ku7eG9GPfXCLZ8uYlLpccrxm6uLb9SfyYN2xuDo+3uqyV7W2suMYALWjL zymsTrjQCRMlAjH7SOQtjHD6/Mu6Y2IIK+a2H2aBZRYeM8kubrsl8FgsLv7147XAg0CxSCWcrdJ GVEzpHTOvt8oJ740DQ4sTCqVCDYipMCxXCzAIrhjfbkGzehP2neMXcX+QURlwjpNSm9ZjJKN8tQ == X-Received: by 2002:a05:693c:2c8b:b0:2c0:f84b:2455 with SMTP id 5a478bee46e88-2c9325b11ecmr3104488eec.19.1775098901794; Wed, 01 Apr 2026 20:01:41 -0700 (PDT) X-Received: by 2002:a05:693c:2c8b:b0:2c0:f84b:2455 with SMTP id 5a478bee46e88-2c9325b11ecmr3104469eec.19.1775098901081; Wed, 01 Apr 2026 20:01:41 -0700 (PDT) Received: from hu-fruiz-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ca7cf010d7sm1287044eec.25.2026.04.01.20.01.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 20:01:40 -0700 (PDT) From: Francisco Munoz Ruiz Date: Wed, 01 Apr 2026 20:01:35 -0700 Subject: [PATCH 2/3] soc: qcom: llcc-qcom: get SCT descriptors from fw-populated memory Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-external_llcc_changes2set-v1-2-97645ede9f6a@oss.qualcomm.com> References: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> In-Reply-To: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , Rob Herring , Kees Cook , "Gustavo A. R. Silva" Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Francisco Munoz Ruiz , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775098898; l=14020; i=francisco.ruiz@oss.qualcomm.com; s=20260305; h=from:subject:message-id; bh=VRvociPdZzkn2LBvWUuRQKKAFjnlqZ3T0gECO7AzEzs=; b=MQzWKm2venFyhz8litPlbhFXm/YQwy7SFmphqGNw1TWRl6v9jccvNZsRIz5VMZ2h4CGsvq+0/ Kn2pX0I6w4uCKe0En3psqFg2P9Z8tS7ytSciRrAlsglCQj/+dKo4mlG X-Developer-Key: i=francisco.ruiz@oss.qualcomm.com; a=ed25519; pk=Gcv2CX7iHozjnQ4oK+9fINmBiQTmVC4SpaZzoM63CHE= X-Authority-Analysis: v=2.4 cv=WMlyn3sR c=1 sm=1 tr=0 ts=69cddc16 cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=mueQnyBuSmwt3Ye5OMMA:9 a=QEXdDO2ut3YA:10 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-GUID: 96pmBmGbV170IlwNx-hY5QTyOAdRxi1N X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDAyMDAyNCBTYWx0ZWRfXzZrUeu/u3byx ATtlzdpvho6UYoBQoxRzRzihN6T7AUGRZ3QUXD+jbnJeiGx80IWeJGP36dBhqBGRp5Erqh9keJ9 PRjURDMckFIcmJfbXcufYjprKmfvRRa4koqLd3L6vCjryY48Q0+U/tVPuTWq7khIlfBRycHOwmE 7zGBGrrtclw+y7UfXWts2wa5wJbUH/WsSXP/9FwxeYtP7IQi0QRwYyHsb1BC752yy/mumzY4wWa WnF4I7c58y7gO9qgytw6YPg2HUx9FK4bA3Wr1YxZayfUDUfq+3O1Qeke491K7u2jkE2b4EUm0i5 BY7/xgtroclnZpzp14fU7VJbGoSvBs7smsTzemHj6Yogim4dBQMqkayq3+2yiQei+FaQCmw6bKW enH5QNnyEXD82WLDnmMvcLHq/QuL3s/9dRts2IvwQiVU6r5nAnvc6fjb/MR3gMNZjT/9hIhrXfr sRNmhEq3BCg0crV71Qg== X-Proofpoint-ORIG-GUID: 96pmBmGbV170IlwNx-hY5QTyOAdRxi1N X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-02_01,2026-04-01_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2604020024 Retrieve System Cache Table (SCT) descriptors from a shared memory region populated by firmware. SCT initialization and programming are performed entirely by firmware outside of Linux. The LLCC driver only consumes the pre-initialized descriptor data and does not configure SCT itself. Support this mechanism for future SoCs that provide SCT programming via firmware. Signed-off-by: Francisco Munoz Ruiz Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/llcc-qcom.c | 269 ++++++++++++++++++++++++++++++++-= ---- include/linux/soc/qcom/llcc-qcom.h | 8 +- 2 files changed, 240 insertions(+), 37 deletions(-) diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index 0161ceec8842..f8cd35b205eb 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -5,7 +5,6 @@ */ =20 #include -#include #include #include #include @@ -14,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -76,6 +76,12 @@ #define LLCC_VERSION_4_1_0_0 0x04010000 #define LLCC_VERSION_6_0_0_0 0X06000000 =20 +#define SLC_SCT_MEM_LAYOUT_VERSION1 1 /* SCT Memory layout version */ +#define SLC_SCT_DONE 0x00534354444f4e45 /* SCT programmin= g OK */ +#define SLC_SCT_FAIL 0x005343544641494c /* SCT programmin= g failed */ +#define SLC_SCT_NAME_LEN 15 +#define SLC_SCT_SLICE_ACT_ON_BOOT BIT(25) + /** * struct llcc_slice_config - Data associated with the llcc slice * @usecase_id: Unique id for the client's use case @@ -143,6 +149,87 @@ struct llcc_slice_config { u32 parent_slice_id; }; =20 +/* + * struct slc_sct_error - Represents SCT error + * @code: FW code status + * @param: Holds the SCT programming error + */ +struct slc_sct_error { + __le64 code; + __le64 param; +} __packed; + +/* + * struct slc_sct_status - SCT programming status + * @program_status: Indicates programming success or failure + * @version: SCT mem layout version + * @error: Error enum and its param + */ +struct slc_sct_status { + __le64 program_status; + /* Use the lower 8 bits */ + __le64 version; + struct slc_sct_error error; +} __packed; + +/* + * struct slc_sct_details - SCT details + * @revision: revision of the SCT table + * @name: name of the SCT table + */ +struct slc_sct_details { + u8 revision; + char name[SLC_SCT_NAME_LEN]; +} __packed; + +/* + * struct tcm_mem_info - SC TCM Shared memory details + * @is_present: is TCM region present + * @offset: offset of TCM shared memory details + */ +struct slc_tcm_mem_info { + __le32 is_present; + __le32 offset; +} __packed; + +/* + * struct slc_sct_slice_desc - Slice descriptor definition used in shmem + * @slice_id: SCID of the slice + * @usecase_id: Usecase ID of the slice + * @slice_properties: + * slice_size: Contains the slice descriptor size - 20 bit wide + * rsvd: Reserved space - 4 bit wide + * flags: Flags for descriptors - 3 bit wide + * MPAM SCID: Bit 24 + * Activate on boot: Bit 25 + * Non-HLOS SCID: Bit 26 + * HWMutex: Ensures only one processor (CPU or MCU) at a time can + * access the LLCC hardware resources - 5 bit wide + */ +struct slc_sct_slice_desc { + __le16 slice_id; + __le16 usecase_id; + __le32 slice_properties; +} __packed; + +/* + * struct slc_sct_mem - Shared memory structure + * @sct_status: Status of SCT programming + * @sct_details: Sct revision and name details + * @tcm_mem_info: TCM shared memory presence & offset info + * @slice_descs_count: Number of slice desc present in SCT + * @scid_max: Maximum no. of SCIDs supported + * @slice_descs: Array of SCT slice desc + */ +struct slc_sct_mem { + struct slc_sct_status sct_status; + struct slc_sct_details sct_details; + struct slc_tcm_mem_info tcm_mem_info; + __le32 slice_descs_count; + __le32 scid_max; + struct slc_sct_slice_desc slice_descs[] __counted_by_le(slice_descs_count= ); +} __packed; + struct qcom_llcc_config { const struct llcc_slice_config *sct_data; const u32 *reg_offset; @@ -4141,6 +4228,15 @@ static const u32 llcc_v6_reg_offset[] =3D { [LLCC_TRP_WRS_CACHEABLE_EN] =3D 0x00042088, }; =20 +static const struct qcom_llcc_config hawi_sct_cfg[] =3D { + { + .sct_data =3D NULL, + .size =3D 0, + .reg_offset =3D llcc_v6_reg_offset, + .edac_reg_offset =3D &llcc_v6_edac_reg_offset, + }, +}; + static const struct qcom_llcc_config kaanapali_cfg[] =3D { { .sct_data =3D kaanapali_data, @@ -4397,6 +4493,11 @@ static const struct qcom_llcc_config x1e80100_cfg[] = =3D { }, }; =20 +static const struct qcom_sct_config hawi_sct_cfgs =3D { + .llcc_config =3D hawi_sct_cfg, + .num_config =3D ARRAY_SIZE(hawi_sct_cfg), +}; + static const struct qcom_sct_config kaanapali_cfgs =3D { .llcc_config =3D kaanapali_cfg, .num_config =3D ARRAY_SIZE(kaanapali_cfg), @@ -4533,23 +4634,20 @@ static struct llcc_drv_data *drv_data =3D (void *) = -EPROBE_DEFER; */ struct llcc_slice_desc *llcc_slice_getd(u32 uid) { - const struct llcc_slice_config *cfg; - u32 sz, i; - if (IS_ERR(drv_data)) return ERR_CAST(drv_data); =20 - cfg =3D drv_data->cfg; - sz =3D drv_data->cfg_size; + if (IS_ERR_OR_NULL(drv_data->desc)) + return ERR_PTR(-ENODEV); =20 - for (i =3D 0; cfg && i < sz; i++, cfg++) - if (cfg->usecase_id =3D=3D uid) - break; + for (u32 i =3D 0; i < drv_data->cfg_size; i++) { + if (uid =3D=3D drv_data->desc[i].uid) + return &drv_data->desc[i]; + } =20 - if (i =3D=3D sz) - return ERR_PTR(-ENODEV); + dev_err(drv_data->dev, "Failed to get slice desc for uid: %u\n", uid); =20 - return &drv_data->desc[i]; + return ERR_PTR(-EINVAL); } EXPORT_SYMBOL_GPL(llcc_slice_getd); =20 @@ -5029,6 +5127,12 @@ static int qcom_llcc_cfg_program(struct platform_dev= ice *pdev, sz =3D drv_data->cfg_size; llcc_table =3D drv_data->cfg; =20 + for (i =3D 0; i < sz; i++) { + drv_data->desc[i].uid =3D llcc_table[i].usecase_id; + drv_data->desc[i].slice_id =3D llcc_table[i].slice_id; + drv_data->desc[i].slice_size =3D llcc_table[i].max_cap; + } + if (drv_data->version >=3D LLCC_VERSION_6_0_0_0) { for (i =3D 0; i < sz; i++) { ret =3D _qcom_llcc_cfg_program_v6(&llcc_table[i], cfg); @@ -5064,6 +5168,101 @@ static int qcom_llcc_get_cfg_index(struct platform_= device *pdev, u8 *cfg_index, return ret; } =20 +static int qcom_llcc_verify_fw_config(struct device *dev, + const struct slc_sct_mem *slc_mem) +{ + u64 program_status; + + program_status =3D le64_to_cpu(slc_mem->sct_status.program_status); + + if (program_status =3D=3D SLC_SCT_DONE) { + u32 desc_count =3D le32_to_cpu(slc_mem->slice_descs_count); + u32 scid_max =3D le32_to_cpu(slc_mem->scid_max); + + if (desc_count > scid_max) { + dev_err(dev, "Descriptor count above max limit (%u > %u)\n", + desc_count, scid_max); + return -EINVAL; + } + + u8 revision =3D slc_mem->sct_details.revision; + char name_buf[SLC_SCT_NAME_LEN]; + + memcpy(name_buf, slc_mem->sct_details.name, + SLC_SCT_NAME_LEN - 1); + name_buf[SLC_SCT_NAME_LEN - 1] =3D '\0'; + + dev_dbg(dev, "SCT init: desc_count=3D%u, rev=3D%u, name=3D%s\n", + desc_count, revision, name_buf); + + return 0; + } else if (program_status =3D=3D SLC_SCT_FAIL) { + u8 version =3D (u8)(le64_to_cpu(slc_mem->sct_status.version)); + u64 code =3D le64_to_cpu(slc_mem->sct_status.error.code); + u64 param =3D le64_to_cpu(slc_mem->sct_status.error.param); + + if (version =3D=3D SLC_SCT_MEM_LAYOUT_VERSION1) { + dev_err(dev, "SCT init failed: code =3D %llu, param =3D %llu, version = =3D 0x%x\n", + code, param, version); + } else { + dev_err(dev, "Found unsupported version %u\n", version); + } + } else { + dev_err(dev, "Unknown SCT Initialization error\n"); + } + + return -EINVAL; +} + +static int qcom_llcc_get_fw_config(struct platform_device *pdev) +{ + const struct slc_sct_mem *slc_mem =3D NULL; + const struct slc_sct_slice_desc *memslice; + struct device *dev =3D &pdev->dev; + u32 slice_properties; + struct resource res; + u32 i, sz; + int ret; + + ret =3D of_reserved_mem_region_to_resource(dev->of_node, 0, &res); + if (ret) { + dev_err(dev, "Unable to locate DT /reserved-memory resource\n"); + return ret; + } + + slc_mem =3D devm_memremap(dev, res.start, resource_size(&res), MEMREMAP_W= B); + if (!slc_mem) { + dev_err(dev, "Failed to memremap SLC shared memory\n"); + return -ENOMEM; + } + + ret =3D qcom_llcc_verify_fw_config(dev, slc_mem); + if (ret) + return ret; + + sz =3D le32_to_cpu(slc_mem->slice_descs_count); + + drv_data->desc =3D devm_kcalloc(dev, sz, sizeof(struct llcc_slice_desc), + GFP_KERNEL); + if (!drv_data->desc) + return -ENOMEM; + + for (i =3D 0; i < sz; i++) { + memslice =3D &slc_mem->slice_descs[i]; + drv_data->desc[i].slice_id =3D le16_to_cpu(memslice->slice_id); + drv_data->desc[i].uid =3D le16_to_cpu(memslice->usecase_id); + slice_properties =3D le32_to_cpu(memslice->slice_properties); + /* Set refcount to 1 if FW already activated this descriptor */ + if (FIELD_GET(SLC_SCT_SLICE_ACT_ON_BOOT, slice_properties)) + refcount_set(&drv_data->desc[i].refcount, 1); + } + + drv_data->cfg =3D NULL; + drv_data->cfg_size =3D sz; + + return 0; +} + static void qcom_llcc_remove(struct platform_device *pdev) { /* Set the global pointer to a error code to avoid referencing it */ @@ -5096,8 +5295,6 @@ static int qcom_llcc_probe(struct platform_device *pd= ev) struct platform_device *llcc_edac; const struct qcom_sct_config *cfgs; const struct qcom_llcc_config *cfg; - const struct llcc_slice_config *llcc_cfg; - u32 sz; u8 cfg_index; u32 version; struct regmap *regmap; @@ -5190,32 +5387,31 @@ static int qcom_llcc_probe(struct platform_device *= pdev) } } =20 - llcc_cfg =3D cfg->sct_data; - sz =3D cfg->size; - drv_data->desc =3D devm_kcalloc(dev, sz, sizeof(struct llcc_slice_desc), = GFP_KERNEL); - if (!drv_data->desc) { - ret =3D -ENOMEM; - goto err; - } + mutex_init(&drv_data->lock); + if (!cfg->size) { + ret =3D qcom_llcc_get_fw_config(pdev); + if (ret) + goto err; + } else { + drv_data->cfg =3D cfg->sct_data; + drv_data->cfg_size =3D cfg->size; + drv_data->desc =3D devm_kcalloc(dev, cfg->size, + sizeof(struct llcc_slice_desc), GFP_KERNEL); =20 - for (i =3D 0; i < sz; i++) { - drv_data->desc[i].slice_id =3D llcc_cfg[i].slice_id; - drv_data->desc[i].slice_size =3D llcc_cfg[i].max_cap; - refcount_set(&drv_data->desc[i].refcount, 0); + if (!drv_data->desc) { + ret =3D -ENOMEM; + goto err; + } + + ret =3D qcom_llcc_cfg_program(pdev, cfg); + if (ret) + goto err; } =20 - drv_data->cfg =3D llcc_cfg; - drv_data->cfg_size =3D sz; + drv_data->ecc_irq =3D platform_get_irq_optional(pdev, 0); drv_data->edac_reg_offset =3D cfg->edac_reg_offset; drv_data->ecc_irq_configured =3D cfg->irq_configured; - mutex_init(&drv_data->lock); - platform_set_drvdata(pdev, drv_data); - - ret =3D qcom_llcc_cfg_program(pdev, cfg); - if (ret) - goto err; - - drv_data->ecc_irq =3D platform_get_irq_optional(pdev, 0); + drv_data->dev =3D dev; =20 /* * On some platforms, the access to EDAC registers will be locked by @@ -5231,6 +5427,8 @@ static int qcom_llcc_probe(struct platform_device *pd= ev) dev_err(dev, "Failed to register llcc edac driver\n"); } =20 + platform_set_drvdata(pdev, drv_data); + return 0; err: drv_data =3D ERR_PTR(-ENODEV); @@ -5239,6 +5437,7 @@ static int qcom_llcc_probe(struct platform_device *pd= ev) =20 static const struct of_device_id qcom_llcc_of_match[] =3D { { .compatible =3D "qcom,glymur-llcc", .data =3D &glymur_cfgs }, + { .compatible =3D "qcom,hawi-llcc", .data =3D &hawi_sct_cfgs }, { .compatible =3D "qcom,ipq5424-llcc", .data =3D &ipq5424_cfgs}, { .compatible =3D "qcom,kaanapali-llcc", .data =3D &kaanapali_cfgs}, { .compatible =3D "qcom,qcs615-llcc", .data =3D &qcs615_cfgs}, diff --git a/include/linux/soc/qcom/llcc-qcom.h b/include/linux/soc/qcom/ll= cc-qcom.h index 227125d84318..b5e917154998 100644 --- a/include/linux/soc/qcom/llcc-qcom.h +++ b/include/linux/soc/qcom/llcc-qcom.h @@ -90,11 +90,13 @@ /** * struct llcc_slice_desc - Cache slice descriptor * @slice_id: llcc slice id + * @uid: Unique ID associated with the llcc device * @slice_size: Size allocated for the llcc slice * @refcount: Atomic counter to track activate/deactivate calls */ struct llcc_slice_desc { u32 slice_id; + u32 uid; size_t slice_size; refcount_t refcount; }; @@ -147,6 +149,7 @@ struct llcc_edac_reg_offset { =20 /** * struct llcc_drv_data - Data associated with the llcc driver + * @dev: device back-pointer for this llcc instance * @regmaps: regmaps associated with the llcc device * @bcast_regmap: regmap associated with llcc broadcast OR offset * @bcast_and_regmap: regmap associated with llcc broadcast AND offset @@ -157,10 +160,11 @@ struct llcc_edac_reg_offset { * @num_banks: Number of llcc banks * @ecc_irq: interrupt for llcc cache error detection and reporting * @ecc_irq_configured: 'True' if firmware has already configured the irq = propagation - * @desc: Array pointer of pre-allocated LLCC slice descriptors * @version: Indicates the LLCC version + * @desc: Array pointer of pre-allocated LLCC slice descriptors */ struct llcc_drv_data { + struct device *dev; struct regmap **regmaps; struct regmap *bcast_regmap; struct regmap *bcast_and_regmap; @@ -183,7 +187,7 @@ struct llcc_drv_data { struct llcc_slice_desc *llcc_slice_getd(u32 uid); =20 /** - * llcc_slice_putd - llcc slice descritpor + * llcc_slice_putd - llcc slice descriptor * @desc: Pointer to llcc slice descriptor */ void llcc_slice_putd(struct llcc_slice_desc *desc); --=20 2.34.1 From nobody Sun Jun 14 08:16:09 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 61B5F358375 for ; Thu, 2 Apr 2026 03:01:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098906; cv=none; b=IEv0GiC+j1NSUZlQkDuhGokh0H4gR36UP6M+UWVnGOketxYVtgzrzZooPl8N+lnPV2fHcm5PrSQzx4TKwIoDUlOBXTQqTFhG5V/3cS12uBeJ0KAcTpQ3CzWlvx4BO3p1v3+LGv9VR541SeDUOt/evY/977XEQgo9skzcomL/nTg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775098906; c=relaxed/simple; bh=2Y3ZNVnqNzvGn4NwizHcAhPQrYo7GkEd/vnRF4b+W5o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s46dAKrksm63V3vyuXu0twVkLbDN7G1QzDkMCZPl1QtlEi4SySCEaGyj4q1TkawmmlkAJ5tFHjDM8hrcv0pgCP9e5yaJ5myGjaHTPAjE7SJnv5vue1QzRxyfeemGBGsaPIziJo0kZpqloWoAvy76o9089qP+cAbM9VtOLGVCKrE= 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=AIcHgeQe; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gWkAj3lZ; arc=none smtp.client-ip=205.220.168.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="AIcHgeQe"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gWkAj3lZ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 631M4Lut1965395 for ; Thu, 2 Apr 2026 03:01:43 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= dkodzDOEhiLOVRt5dWjZn1rS8FD4B1gl5hvYY5lrWII=; b=AIcHgeQeRQQHrK8u QuwsrkmMTXDqqFZtpEcmF2+8l0DI0uVtc9a8hjzradoR6YY9BIuGkMHgCamAMTba wvF0cXS54fAw6E9QCPwISOmBrzE4CKwOSS0YywXA3lRqCfHqK/C5O0ZSzmzX0jKr LhQaRbnCwn5zW8HlVIlyGVM4XjVjjHeBNgvhoBCrVloKihhg9TVVlYTG6qiL8fdy C3VQ/PxizYwGh9996aOznFkgMt3RANWSdndDVvzh15XJmsthIdtqBGib6yq+rKTq ufu3WG2R7JnsjpY0VCcnl19xRR6WHNp2zuO2PeyCJtYQfSQVnKykfeZeH1A6FsHX 0gNyMw== Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d9b9h0w4p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 02 Apr 2026 03:01:43 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2ba9a744f7dso721782eec.0 for ; Wed, 01 Apr 2026 20:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775098903; x=1775703703; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dkodzDOEhiLOVRt5dWjZn1rS8FD4B1gl5hvYY5lrWII=; b=gWkAj3lZLcLOzREsKfVGFeFw57d/YLOTKqGEf0PbrTpDDdVvQdm/jBH1bZFgzZSiqp 2MfTLL+7DkpMpcOCHBZBohMf2FK/NkRisQTuuqu5o4ZTq17UqXDCtzUaIFV12NEKFcVL IfZueckUqJI4QQNiJq4pdKouwX6lXfm1ULIdwxNqP5xlOCvC858flhYb7YPeCEohWZE4 YKxwwCvFmp5UFfQTVMDhYlalMoAK3rP8Ke4p0/+jvVdyMrn5YWiKRgHyyODFE7vnPbv7 UeqpdFpbaw0HErLlHtPWFTjjeovJ0CVVSL+Fl9IxoprcdgvYGSQ6sgSq4U+oJPlllDFh Egdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775098903; x=1775703703; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dkodzDOEhiLOVRt5dWjZn1rS8FD4B1gl5hvYY5lrWII=; b=M+gxyEqY9RLloiRx5x+aTyvNU0bRxuT+76qegMEMfmOqpgD01rZvRR2Eo/vKtiVLXy rJlnk5jcK67R8zKhrfQiKCUIRbWYMDcVglHDMEExLFXj5UIIcPMb/ONwQqojvBuVHh2Q vSc0cb0nEqHgdiCCcXg5f0h2VZ+K0TvqV7iDP1UNN1fePMTXK0J5FkNy80vCgzRtkQDV tX6oUM9spp7NqsloX26sCLC2kWEjTqUxuhYokhsXX+ePbWshxMDEMTdmPTfbkOOnr2Eq lldNoYvvt645LpXijfQ0OCkeIZZlkyS8DF6TEB5R/vjGxt7kjoVMvYx+z52L99XqxlBN r/Lw== X-Forwarded-Encrypted: i=1; AJvYcCWlYP+q9HugzhU+7G6EdLFDHXfE4vykwr00WhyJ3xEEcY9qTJ0x5BWhpNA2KOvxp+BWVXuxp5ozGHdg3NA=@vger.kernel.org X-Gm-Message-State: AOJu0YyNKy4+ifql7KSUTJksNysxEmHerVA0wwmwkkNgcYeRLHuNCPx+ +ICzR0mp5u49xNPP5aSpuUbFF9RBZ50jpxa2bK5sgrxj2cjwA6Ka1zHMMfkmkgefZ5ey8B2Citz 9W0v2Fihx85YWRNaVQTgAu+jK/CtqMKJjZZGreLvjXw5bjaAq7HsRJBBniKTK+9/a5Q== X-Gm-Gg: ATEYQzwhglST9ToPGC9P5HaBBq2Md3idYVV5dHk5EG1yM8EhvCb0XVJBRbZbSikh1h/ KZ1GanXFgg4FfATDnInB7SCoYS4v3gl9ITe+2BpExsp0lLSLSWl1PJEd7ISh9155OBzOzZgvBLf 4kTEnwoUQIyLox5SP3DmGd3QCNsSoTvCspW7uhbvipWeW8C5RY5q2kRuCjORcROKjc5GEO46mEC raE0U+SK69aB5OhZrU424uGgtnTfZ0qpdJFLnD9b6Xqd4Cr5rjW1feWhV7xOt/pful5AHlVgRFe SF6s2e+L+ENTCAHcjzD0U1LxWPzd7e6psOT57IHDDEwjLYDss3oYWtwAbAFf5raOfVQ1oeSlemi 1nXk/PBIIsOTXQKjK1Sx39N93sOQwVeisfw6jP428ckI/KR0e6eBxYTSJmNN6brKtY0QMiDUxjQ == X-Received: by 2002:a05:7301:5781:b0:2c7:3a7:c7b6 with SMTP id 5a478bee46e88-2ca8d488e9bmr743712eec.6.1775098902694; Wed, 01 Apr 2026 20:01:42 -0700 (PDT) X-Received: by 2002:a05:7301:5781:b0:2c7:3a7:c7b6 with SMTP id 5a478bee46e88-2ca8d488e9bmr743694eec.6.1775098902036; Wed, 01 Apr 2026 20:01:42 -0700 (PDT) Received: from hu-fruiz-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ca7cf010d7sm1287044eec.25.2026.04.01.20.01.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 20:01:41 -0700 (PDT) From: Francisco Munoz Ruiz Date: Wed, 01 Apr 2026 20:01:36 -0700 Subject: [PATCH 3/3] soc: qcom: llcc-qcom: Capitalize LLCC/EDAC in comments and diagnostics Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-external_llcc_changes2set-v1-3-97645ede9f6a@oss.qualcomm.com> References: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> In-Reply-To: <20260401-external_llcc_changes2set-v1-0-97645ede9f6a@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley , Jonathan Cameron , Rob Herring , Kees Cook , "Gustavo A. R. Silva" Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Francisco Munoz Ruiz , Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775098898; l=8946; i=francisco.ruiz@oss.qualcomm.com; s=20260305; h=from:subject:message-id; bh=2Y3ZNVnqNzvGn4NwizHcAhPQrYo7GkEd/vnRF4b+W5o=; b=eUVBjU5hPRQgFzDy1xUyDIQWqODJzNfEn0b0yMAFI9sCZwmOKamdcXK7CFzEHSPS9zuYNrJsf wJZmEjTYYhwAhgcSxYk3egu7lnbB2Z89rpsfAERYqMNa7IlzKe9zVzH X-Developer-Key: i=francisco.ruiz@oss.qualcomm.com; a=ed25519; pk=Gcv2CX7iHozjnQ4oK+9fINmBiQTmVC4SpaZzoM63CHE= X-Authority-Analysis: v=2.4 cv=TqLrRTXh c=1 sm=1 tr=0 ts=69cddc17 cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=19UnNs3dAo88WjIHmoIA:9 a=QEXdDO2ut3YA:10 a=PxkB5W3o20Ba91AHUih5:22 X-Proofpoint-ORIG-GUID: 5J0OhR_Qr4jZq0oS8QFIUXwSBerdzsWc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDAyMDAyNCBTYWx0ZWRfX3Xv96OJgxu/v oZ1NdmF9kmarkPVSDm29QXjg7CMBmQcALBkkKto0/JeBGoWa1jEfDlMveEqE+g5R8wBPNMMBO1r E5VGAomD/vTfQ4rDoLm2phAM71tvOCnZy+IojPkuz6otTHIPZPFem1dpSwvB8ox53aCvvgB4ry2 4E2SDErEmMjpYAltSWgbXKR0MqfJxZZbsHdJLm5mk9Zt/H7V1/lh018XEmAdnJEaT/wBveCnNcl o9ymZlwqnriicUXCwYgGR1hSEflSCLFUSjKuxftFDQLdNPmBenZXAicD6s4sVZUY66AdaaIIZFG Yz9N5Bgu/ONU/sifIz0evezQNk0T1dTWYKWMUAQB7SLQ+UeQbJqneWO+Hz0ITRU9OAI/jcIZGtF eHNB0Q6DpRlkh4ofr6zghXSAj72DYNGeCY/PyPWXFI03cZrFRXGxvwWbQMq+QWtneFWqAe2mQ3n Som4xlq781Ymqv7gFpg== X-Proofpoint-GUID: 5J0OhR_Qr4jZq0oS8QFIUXwSBerdzsWc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-02_01,2026-04-01_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 spamscore=0 adultscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2604020024 Capitalize occurrences of the acronym "LLCC" and "EDAC" in comments and diagnostic text to improve consistency and readability. Signed-off-by: Francisco Munoz Ruiz Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/llcc-qcom.c | 32 ++++++++++++++--------------- include/linux/soc/qcom/llcc-qcom.h | 42 +++++++++++++++++++---------------= ---- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index f8cd35b205eb..dcc08f63e020 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -83,9 +83,9 @@ #define SLC_SCT_SLICE_ACT_ON_BOOT BIT(25) =20 /** - * struct llcc_slice_config - Data associated with the llcc slice + * struct llcc_slice_config - Data associated with the LLCC slice * @usecase_id: Unique id for the client's use case - * @slice_id: llcc slice id for each client + * @slice_id: LLCC slice id for each client * @max_cap: The maximum capacity of the cache slice provided in KB * @priority: Priority of the client used to select victim line for replac= ement * @fixed_size: Boolean indicating if the slice has a fixed capacity @@ -99,7 +99,7 @@ * slice: normal or TCM(Tightly Coupled Memory) * @probe_target_ways: Determines what ways to probe for access hit. When * configured to 1 only bonus and reserved ways are pro= bed. - * When configured to 0 all ways in llcc are probed. + * When configured to 0 all ways in LLCC are probed. * @dis_cap_alloc: Disable capacity based allocation for a client * @retain_on_pc: If this bit is set and client has maintained active vote * then the ways assigned to this client are not flushed on = power @@ -4626,10 +4626,10 @@ static const struct qcom_sct_config x1e80100_cfgs = =3D { static struct llcc_drv_data *drv_data =3D (void *) -EPROBE_DEFER; =20 /** - * llcc_slice_getd - get llcc slice descriptor + * llcc_slice_getd - get LLCC slice descriptor * @uid: usecase_id for the client * - * A pointer to llcc slice descriptor will be returned on success + * A pointer to LLCC slice descriptor will be returned on success * and error pointer is returned on failure */ struct llcc_slice_desc *llcc_slice_getd(u32 uid) @@ -4652,8 +4652,8 @@ struct llcc_slice_desc *llcc_slice_getd(u32 uid) EXPORT_SYMBOL_GPL(llcc_slice_getd); =20 /** - * llcc_slice_putd - llcc slice descriptor - * @desc: Pointer to llcc slice descriptor + * llcc_slice_putd - LLCC slice descriptor + * @desc: Pointer to LLCC slice descriptor */ void llcc_slice_putd(struct llcc_slice_desc *desc) { @@ -4716,8 +4716,8 @@ static int llcc_update_act_ctrl(u32 sid, } =20 /** - * llcc_slice_activate - Activate the llcc slice - * @desc: Pointer to llcc slice descriptor + * llcc_slice_activate - Activate the LLCC slice + * @desc: Pointer to LLCC slice descriptor * * A value of zero will be returned on success and a negative errno will * be returned in error cases @@ -4752,8 +4752,8 @@ int llcc_slice_activate(struct llcc_slice_desc *desc) EXPORT_SYMBOL_GPL(llcc_slice_activate); =20 /** - * llcc_slice_deactivate - Deactivate the llcc slice - * @desc: Pointer to llcc slice descriptor + * llcc_slice_deactivate - Deactivate the LLCC slice + * @desc: Pointer to LLCC slice descriptor * * A value of zero will be returned on success and a negative errno will * be returned in error cases @@ -4789,7 +4789,7 @@ EXPORT_SYMBOL_GPL(llcc_slice_deactivate); =20 /** * llcc_get_slice_id - return the slice id - * @desc: Pointer to llcc slice descriptor + * @desc: Pointer to LLCC slice descriptor */ int llcc_get_slice_id(struct llcc_slice_desc *desc) { @@ -4802,7 +4802,7 @@ EXPORT_SYMBOL_GPL(llcc_get_slice_id); =20 /** * llcc_get_slice_size - return the slice id - * @desc: Pointer to llcc slice descriptor + * @desc: Pointer to LLCC slice descriptor */ size_t llcc_get_slice_size(struct llcc_slice_desc *desc) { @@ -4836,9 +4836,9 @@ static int _qcom_llcc_cfg_program(const struct llcc_s= lice_config *config, /* * LLCC instances can vary for each target. * The SW writes to broadcast register which gets propagated - * to each llcc instance (llcc0,.. llccN). + * to each LLCC instance (llcc0,.. llccN). * Since the size of the memory is divided equally amongst the - * llcc instances, we need to configure the max cap accordingly. + * LLCC instances, we need to configure the max cap accordingly. */ max_cap_cacheline =3D max_cap_cacheline / drv_data->num_banks; max_cap_cacheline >>=3D CACHE_LINE_SIZE_SHIFT; @@ -5424,7 +5424,7 @@ static int qcom_llcc_probe(struct platform_device *pd= ev) "qcom_llcc_edac", -1, drv_data, sizeof(*drv_data)); if (IS_ERR(llcc_edac)) - dev_err(dev, "Failed to register llcc edac driver\n"); + dev_err(dev, "Failed to register LLCC EDAC driver\n"); } =20 platform_set_drvdata(pdev, drv_data); diff --git a/include/linux/soc/qcom/llcc-qcom.h b/include/linux/soc/qcom/ll= cc-qcom.h index b5e917154998..f3ed63e475ab 100644 --- a/include/linux/soc/qcom/llcc-qcom.h +++ b/include/linux/soc/qcom/llcc-qcom.h @@ -89,9 +89,9 @@ =20 /** * struct llcc_slice_desc - Cache slice descriptor - * @slice_id: llcc slice id - * @uid: Unique ID associated with the llcc device - * @slice_size: Size allocated for the llcc slice + * @slice_id: LLCC slice id + * @uid: Unique ID associated with the LLCC device + * @slice_size: Size allocated for the LLCC slice * @refcount: Atomic counter to track activate/deactivate calls */ struct llcc_slice_desc { @@ -102,7 +102,7 @@ struct llcc_slice_desc { }; =20 /** - * struct llcc_edac_reg_data - llcc edac registers data for each error type + * struct llcc_edac_reg_data - LLCC EDAC registers data for each error type * @name: Name of the error * @reg_cnt: Number of registers * @count_mask: Mask value to get the error count @@ -148,17 +148,17 @@ struct llcc_edac_reg_offset { }; =20 /** - * struct llcc_drv_data - Data associated with the llcc driver - * @dev: device back-pointer for this llcc instance - * @regmaps: regmaps associated with the llcc device - * @bcast_regmap: regmap associated with llcc broadcast OR offset - * @bcast_and_regmap: regmap associated with llcc broadcast AND offset + * struct llcc_drv_data - Data associated with the LLCC driver + * @dev: device back-pointer for this LLCC instance + * @regmaps: regmaps associated with the LLCC device + * @bcast_regmap: regmap associated with LLCC broadcast OR offset + * @bcast_and_regmap: regmap associated with LLCC broadcast AND offset * @cfg: pointer to the data structure for slice configuration * @edac_reg_offset: Offset of the LLCC EDAC registers * @lock: mutex associated with each slice * @cfg_size: size of the config data table - * @num_banks: Number of llcc banks - * @ecc_irq: interrupt for llcc cache error detection and reporting + * @num_banks: Number of LLCC banks + * @ecc_irq: interrupt for LLCC cache error detection and reporting * @ecc_irq_configured: 'True' if firmware has already configured the irq = propagation * @version: Indicates the LLCC version * @desc: Array pointer of pre-allocated LLCC slice descriptors @@ -181,38 +181,38 @@ struct llcc_drv_data { =20 #if IS_ENABLED(CONFIG_QCOM_LLCC) /** - * llcc_slice_getd - get llcc slice descriptor + * llcc_slice_getd - get LLCC slice descriptor * @uid: usecase_id of the client */ struct llcc_slice_desc *llcc_slice_getd(u32 uid); =20 /** - * llcc_slice_putd - llcc slice descriptor - * @desc: Pointer to llcc slice descriptor + * llcc_slice_putd - LLCC slice descriptor + * @desc: Pointer to LLCC slice descriptor */ void llcc_slice_putd(struct llcc_slice_desc *desc); =20 /** * llcc_get_slice_id - get slice id - * @desc: Pointer to llcc slice descriptor + * @desc: Pointer to LLCC slice descriptor */ int llcc_get_slice_id(struct llcc_slice_desc *desc); =20 /** - * llcc_get_slice_size - llcc slice size - * @desc: Pointer to llcc slice descriptor + * llcc_get_slice_size - LLCC slice size + * @desc: Pointer to LLCC slice descriptor */ size_t llcc_get_slice_size(struct llcc_slice_desc *desc); =20 /** - * llcc_slice_activate - Activate the llcc slice - * @desc: Pointer to llcc slice descriptor + * llcc_slice_activate - Activate the LLCC slice + * @desc: Pointer to LLCC slice descriptor */ int llcc_slice_activate(struct llcc_slice_desc *desc); =20 /** - * llcc_slice_deactivate - Deactivate the llcc slice - * @desc: Pointer to llcc slice descriptor + * llcc_slice_deactivate - Deactivate the LLCC slice + * @desc: Pointer to LLCC slice descriptor */ int llcc_slice_deactivate(struct llcc_slice_desc *desc); =20 --=20 2.34.1