Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp6572154rdb; Fri, 15 Dec 2023 02:21:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IEVqfAR6uhg+93DH9n76dd9xHBY6jd5WyXr1aTQAgG+0PSe/OrKyrfxrvEKzwgU/Xv44JQG X-Received: by 2002:a05:6a00:2281:b0:6ce:2731:a095 with SMTP id f1-20020a056a00228100b006ce2731a095mr12725847pfe.68.1702635678479; Fri, 15 Dec 2023 02:21:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702635678; cv=none; d=google.com; s=arc-20160816; b=E5N6tJGz/3AZIFWRIri862dsoUZQ2yUuj9fk3kw9xzGKMT0qEmzt/ZOFmg7kW5CazT oFhxvb2n5moiDjhXuLsW9CsGlmjRIIQ24U3UD+2Onz81AkwhABXCv2JmCScZuC+zeJXS t2nVQ4jBIcNghqoE/it9EeK7XfIVziIytJkpW5aLeudnJ2ZDqVKUIGrjxYQE9GeBLsYG 2y6EVtHupCbU/6te3fNll05wM7WpuKdEIrlCGbz5BJ7cKPA1bP9CUJMaNBN61RNQHMyE C/h9B54v8TtjuujQzBRvSrxE706ir06CcU+78KoSNyBalvvmN3/85nTHrK7EG7uat2aR 5jgg== 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=F19aSptE/DtTvdAor3A4yFbl9xhJsAFcStDSMkHUiiw=; fh=mFC8nmckJLq19l2a2JACcOVBANdLlvDzOiUZ3OvRdps=; b=1CdxVTtduJ+ZnYqG+NCuZVnYPiYQ4OuX0unl2bQtrTKJlIhzNVXVKKq4L8fPVeFJiS PC8zp81lQX+cSEy+crSwNd8CxWhdt+O2fs136Dd8fyz/qvUlZ25+g/u94nLTnDsfgnpL V6Pi9az/piw+Fj8EeUPp20Ge7p452Q4DY7nryjK8xVwrvG07w5XkVL1++cBBEO9JcMdJ zsI+ab++2mqT6dLz108lOpmbB+i5LBkFuqyklnv2Ou1oLs2xW6TnxQmYUedOTSeMJ7EF 6zwhXD03H6utsOXXoHYA5Hnwo3+biyosmqciIM85YHxzYLJoDziKaqg2qzqCwpW5+eZN 5f1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=WukFiPDp; spf=pass (google.com: domain of linux-kernel+bounces-739-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-739-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id e33-20020a630f21000000b005c6faf0a670si11541057pgl.257.2023.12.15.02.21.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Dec 2023 02:21:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-739-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=WukFiPDp; spf=pass (google.com: domain of linux-kernel+bounces-739-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-739-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 275E2285179 for ; Fri, 15 Dec 2023 10:21:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D0D0C28E3F; Fri, 15 Dec 2023 10:19:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="WukFiPDp" X-Original-To: linux-kernel@vger.kernel.org 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 B7214288B0; Fri, 15 Dec 2023 10:19:49 +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 (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BF3vaTw009763; Fri, 15 Dec 2023 10:19:27 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=F19aSptE/DtTvdAor3A4 yFbl9xhJsAFcStDSMkHUiiw=; b=WukFiPDp0oXXLdRdvlRCAaJHQPPX6J7IfSYE AZ1fTM0ivpro6FWYAHrQUsxtlAAOVJoes4ZpCGmCE1x1feXmayA3BhKiBTh7UaGQ Qb83gVV4yCMctFZr4DN3oODn9JatnvX8mx64//2xozAmfhu4s48FDLdmv2Rsz3X1 R4K+B+oGS759hMGBiXvyF+osqujHoQEORPjjfn3WJ2jnikODoIFoMta+q0mg9LPE /tn1tPifl8GYcFEG96vXhmDG6xVwVcAbtNwhj4tHC7JYZ7vPqHK0XKFUcbh3iNjM VImTPyK3L0IVByWpDgtklpNcGnTYq7+lckRmDZdC3KKl65V6uA== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3v05jqj19m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 10:19:27 +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 3BFAJQT9006813 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 15 Dec 2023 10:19:26 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; Fri, 15 Dec 2023 02:19:20 -0800 From: Bibek Kumar Patro To: , , , , , , , , , , , , , , CC: , , , , , Bibek Kumar Patro Subject: [PATCH v4 5/5] iommu/arm-smmu: re-enable context caching in smmu reset operation Date: Fri, 15 Dec 2023 15:48:27 +0530 Message-ID: <20231215101827.30549-6-quic_bibekkum@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231215101827.30549-1-quic_bibekkum@quicinc.com> References: <20231215101827.30549-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: nasanex01b.na.qualcomm.com (10.46.141.250) 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-ORIG-GUID: sA-WoEV2X3CSwcMhmYaJvDqZmq62MY-y X-Proofpoint-GUID: sA-WoEV2X3CSwcMhmYaJvDqZmq62MY-y 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_01,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxlogscore=999 lowpriorityscore=0 adultscore=0 suspectscore=0 spamscore=0 mlxscore=0 clxscore=1015 impostorscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2312150069 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. Signed-off-by: Bibek Kumar Patro --- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 23 +++++++++++++++++++--- 1 file changed, 20 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 c8f5dd4186b7..70d2a5d43993 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c @@ -516,11 +516,28 @@ 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 i; + u32 reg; + + arm_mmu500_reset(smmu); + + /* arm_mmu500_reset() disables CPRE which is re-enabled here */ + for (i = 0; i < smmu->num_context_banks; ++i) { + reg = arm_smmu_cb_read(smmu, i, ARM_SMMU_CB_ACTLR); + reg |= CPRE; + arm_smmu_cb_write(smmu, i, ARM_SMMU_CB_ACTLR, reg); + } + + 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, @@ -547,7 +564,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, }; @@ -572,7 +589,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