Received: by 2002:a05:7412:8d09:b0:fa:4c10:6cad with SMTP id bj9csp500937rdb; Tue, 16 Jan 2024 07:05:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IEDSEsTv8Ro8APSaG9wvLv1jjsfArLiorBXmAehLJulUfB/ERugvsETXFgy4FUm4LRtDLIy X-Received: by 2002:a17:907:c711:b0:a2e:5be8:13c9 with SMTP id ty17-20020a170907c71100b00a2e5be813c9mr1587180ejc.38.1705417526222; Tue, 16 Jan 2024 07:05:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705417526; cv=none; d=google.com; s=arc-20160816; b=O4Wcel4UQPMX7hll2XkaUGgv0LOIGeD52o6zPGk0Ui2Cq1ULQuowSfotlmGu9rBjX0 Pa+GA22kXIHeb6Z3XVAWe/jZ1wB5LRBa0IEpbwz6FY2v4xW++MT0xPap+f61R4YfpACm Mfl/d45Sn7EK1DMnIZHTV8/h6YgE3pLRrU6Zl/YlL2kgys6p7SnV8NuQmzE1DXbAxXXT lv6VRYjVc/6019uDOL84tmKqRys8ZJtENOe5ROFM6hgmixs0tg2H3pg6vfaG+2afDHYG pJkR6bb2XSFwqiC775DEao3iFnkrY3QFQkmqLcgOHJ1Um2+Z661lyw9qhsDjSyfzfY6S sESA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=U5PLBym+lB74aH4+z1oqnztVitfqjwoz3FAlJGCWR7w=; fh=2b5Hz7/94Zva/HiqXptvJTbobkLgBIeTZr9PwKBsRw4=; b=CT4LAxBvPRdL1WyFsCrxDxRSTKXI843ktExHaglXITV0vVZXunWISff6w8x8yNEk2m XMu9nUnUQYQkUjIIpRbJ6y0WkgyLdca2NJ2GjuGMwG7U+A3nMnkQBRa/fca7KLda5wZQ dO3Iif+09hyJ9yAjuFupAq2qmu8hBOas2oq4kpcnd2Xba7MrKcuT41qv5YXkYlPyWY3T nKPM0Yfozp7MCuNVtRBzvEHSF9W1Q9jWWBTJYTpGECZCiHZHgGys6+Crj/+3h95SN756 P6B6rEZkGKyZbuvNruo2W6CUGVtK/uTaMjR5VX/7nrl8k93ij6XM1/PW+ig7sobqUvJ+ vEUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=NiBn3p7I; spf=pass (google.com: domain of linux-kernel+bounces-27492-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27492-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id b12-20020a0564021f0c00b00558546b005fsi5068756edb.108.2024.01.16.07.05.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 07:05:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-27492-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=NiBn3p7I; spf=pass (google.com: domain of linux-kernel+bounces-27492-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27492-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id F2FF21F245A1 for ; Tue, 16 Jan 2024 15:05:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 50AB11BF5D; Tue, 16 Jan 2024 15:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="NiBn3p7I" 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 2C3A41BF44; Tue, 16 Jan 2024 15:05:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40GDmEPn018976; Tue, 16 Jan 2024 15:04:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=U5PLBym+lB74aH4+z1oq nztVitfqjwoz3FAlJGCWR7w=; b=NiBn3p7IQ+OStYLhFH2LEPIaO3+RlHwAj2mc 8hQ0/tTqW40+h8WWcSeOsifeLbxg75Tlh9zjKdqL7T73MvPciVHKANNeadGtKM8U t7NcxlRIIcStl7imqStwOXISTROrMVkudkUU2mZRIZdS1sXdnW5m4AyVUeYKYoDa Y6n0no5UlmYDD7snkPDJNDKwENPsDtHw5Ipr+kvDA54M5vVj1yCeHwU1nABzCSWd X9sVuKWuPe+291UH1XngbL+6C8kkZ1wDehHE7pzjJiPUAVloGB5/duqOyXR0og0x tmoGVitSxk7vGCX9DcaQEYnNjz5wja4DQQZIf04QjZ7kWq61ew== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3vns4m8gbu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 16 Jan 2024 15:04:41 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 40GF4ebg026484 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 16 Jan 2024 15:04:40 GMT Received: from hu-bibekkum-hyd.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 16 Jan 2024 07:04:34 -0800 From: Bibek Kumar Patro To: , , , , , , , , , , , , , , CC: , , , , Bibek Kumar Patro Subject: [PATCH v8 1/5] iommu/arm-smmu: re-enable context caching in smmu reset operation Date: Tue, 16 Jan 2024 20:34:07 +0530 Message-ID: <20240116150411.23876-2-quic_bibekkum@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240116150411.23876-1-quic_bibekkum@quicinc.com> References: <20240116150411.23876-1-quic_bibekkum@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: ohV5SPXN-oOVHcMEVASvj2FksmsarubZ X-Proofpoint-ORIG-GUID: ohV5SPXN-oOVHcMEVASvj2FksmsarubZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 bulkscore=0 phishscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=999 spamscore=0 mlxscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401160118 Default MMU-500 reset operation disables context caching in prefetch buffer. It is however expected for context banks using the ACTLR register to retain their prefetch value during reset and runtime suspend. Replace default MMU-500 reset operation with Qualcomm specific reset operation which envelope the default reset operation and re-enables context caching in prefetch buffer for Qualcomm SoCs. Reviewed-by: Konrad Dybcio Signed-off-by: Bibek Kumar Patro --- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 36 ++++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c index 549ae4dba3a6..c432e80a69fc 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c @@ -14,6 +14,16 @@ #define QCOM_DUMMY_VAL -1 +/* + * SMMU-500 TRM defines BIT(0) as CMTLB (Enable context caching in the + * macro TLB) and BIT(1) as CPRE (Enable context caching in the prefetch + * buffer). The remaining bits are implementation defined and vary across + * SoCs. + */ + +#define CPRE (1 << 1) +#define CMTLB (1 << 0) + static struct qcom_smmu *to_qcom_smmu(struct arm_smmu_device *smmu) { return container_of(smmu, struct qcom_smmu, smmu); @@ -376,11 +386,31 @@ static int qcom_smmu_def_domain_type(struct device *dev) return match ? IOMMU_DOMAIN_IDENTITY : 0; } +static int qcom_smmu500_reset(struct arm_smmu_device *smmu) +{ + int ret; + u32 val; + int i; + + ret = arm_mmu500_reset(smmu); + if (ret) + return ret; + + /* arm_mmu500_reset() disables CPRE which is re-enabled here */ + for (i = 0; i < smmu->num_context_banks; ++i) { + val = arm_smmu_cb_read(smmu, i, ARM_SMMU_CB_ACTLR); + val |= CPRE; + arm_smmu_cb_write(smmu, i, ARM_SMMU_CB_ACTLR, val); + } + + return 0; +} + static int qcom_sdm845_smmu500_reset(struct arm_smmu_device *smmu) { int ret; - arm_mmu500_reset(smmu); + qcom_smmu500_reset(smmu); /* * To address performance degradation in non-real time clients, @@ -407,7 +437,7 @@ static const struct arm_smmu_impl qcom_smmu_500_impl = { .init_context = qcom_smmu_init_context, .cfg_probe = qcom_smmu_cfg_probe, .def_domain_type = qcom_smmu_def_domain_type, - .reset = arm_mmu500_reset, + .reset = qcom_smmu500_reset, .write_s2cr = qcom_smmu_write_s2cr, .tlb_sync = qcom_smmu_tlb_sync, }; @@ -432,7 +462,7 @@ static const struct arm_smmu_impl qcom_adreno_smmu_v2_impl = { static const struct arm_smmu_impl qcom_adreno_smmu_500_impl = { .init_context = qcom_adreno_smmu_init_context, .def_domain_type = qcom_smmu_def_domain_type, - .reset = arm_mmu500_reset, + .reset = qcom_smmu500_reset, .alloc_context_bank = qcom_adreno_smmu_alloc_context_bank, .write_sctlr = qcom_adreno_smmu_write_sctlr, .tlb_sync = qcom_smmu_tlb_sync, -- 2.17.1