Received: by 2002:a05:7412:d024:b0:f9:90c9:de9f with SMTP id bd36csp32351rdb; Wed, 20 Dec 2023 05:39:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHvJ3opLN2SiCTYOo85f6uh9qzVQM4k1FMhpxNLdnBI97Cnb7D1IoLmIDLwC+wvASys9BX4 X-Received: by 2002:a17:902:b683:b0:1d0:6ffd:e2b8 with SMTP id c3-20020a170902b68300b001d06ffde2b8mr18086769pls.82.1703079570264; Wed, 20 Dec 2023 05:39:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703079570; cv=none; d=google.com; s=arc-20160816; b=Wg1JO4dQbOzDawjMJyqOjXmpUPBQO1eU5eZLnBoEyalg60knzwASGXNz98Bq4AstQM Ugfmf6ZZxZqmXNcDilXZxsBa3vTKCpJSFOAaabzD0NRxylXdRacxzoWpLJfz/hiksqiq mwyFoXB7WKJF5QqRIeRMAcAYmX8BibZtIbdmvamBueNlu2FH0lfLQ7rkRPBBce0ACsg1 JCI5NKmQYfuWR2hX+kX7GquTU9brEkFiurcqY7JKUcmLoZ+HVIyYFz0WZBZK4CvUHAEl JOaiit7+aPn5Sz8oqjQ0NnhOrW6Nrvgls4BycjjQxUj3xeF7Htj2HYB3vPpn23G/SpE+ aOIQ== 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=GoztlXCDEb5vrsVrMC6+E6EshVMmGerVRldyGtTVCto=; fh=mFC8nmckJLq19l2a2JACcOVBANdLlvDzOiUZ3OvRdps=; b=k1PPcZni1ma6GWup9IqOAGMUmY5iZMhsTKwO8VJZytxv8gKrdPvpwaA+pbePXxtjkF jUSzKfAtj72z3EJ8mT4yaumEX27KomnIz5Vnv/7jeMC/w/rDmbvSExtEEMRJRKHWKYi+ fGiuzfmC9Z565cTHjQFr/RnO2NPKm9Nl0hxQZN2+i3oXuW4/xcuxqG4V0a09TNlH4sh1 DO+o4b1F4Z3IylmaUi2xw3h16qURmNsqEqeQPrhxhEFopm7EDyvN0V9fGSWPGcqkSabb uUdR5+VqjeU7nIevwbFvzjd1BK5yBnAT55qaz5L5jNNLF6DsvaI4Gy1jG92YiBcodNGl uFmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b="U5QJ/9Xy"; spf=pass (google.com: domain of linux-kernel+bounces-6972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-6972-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. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id iw5-20020a170903044500b001d3fbd67b52si96354plb.147.2023.12.20.05.39.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 05:39:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-6972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b="U5QJ/9Xy"; spf=pass (google.com: domain of linux-kernel+bounces-6972-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-6972-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 DEA87286D32 for ; Wed, 20 Dec 2023 13:39:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0B79837167; Wed, 20 Dec 2023 13:39:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="U5QJ/9Xy" 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 10ECE2D63E; Wed, 20 Dec 2023 13:39:00 +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 (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BKDKxUe021583; Wed, 20 Dec 2023 13:38:41 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=GoztlXCDEb5vrsVrMC6+ E6EshVMmGerVRldyGtTVCto=; b=U5QJ/9Xy7HNPwnf0SyioYid4kkou47WQnpKO joyC2DvOS+a0aSLxgHwM/EjpmxPstCmU6AhX0apc61jVEoacvKVSTP6Ug7XvUVKQ ThebtS98by71I7qBKBlQBZeWaQ2hLQ/W9oU2Fid0UGNQn8kRG9kkZTJc/M5UKUWJ yTqzmTdYPauokXgbbVl+yjJ3AXf4m/89cv5NcgDm9IazHCde+AfV5EJKo6yy0HVU D6eleASyxzVfo4t0hTmw1GBLToGOPtI5HRVQVBw3g5aERAtTr9JRUvVKTqXqLr17 UdzEDmB2n4UUeMbrAcqoZm3ZA0YtX4883DTdnuTDzLusn0qjYA== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3v37vxuncq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Dec 2023 13:38:41 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 3BKDcect021729 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Dec 2023 13:38: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; Wed, 20 Dec 2023 05:38:33 -0800 From: Bibek Kumar Patro To: , , , , , , , , , , , , , , CC: , , , , , Bibek Kumar Patro Subject: [PATCH v6 1/5] iommu/arm-smmu: re-enable context caching in smmu reset operation Date: Wed, 20 Dec 2023 19:08:04 +0530 Message-ID: <20231220133808.5654-2-quic_bibekkum@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20231220133808.5654-1-quic_bibekkum@quicinc.com> References: <20231220133808.5654-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-ORIG-GUID: q8nPaJCcW-qxkgte6wjKN-DlrrGxLL7L X-Proofpoint-GUID: q8nPaJCcW-qxkgte6wjKN-DlrrGxLL7L 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 mlxlogscore=999 suspectscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 phishscore=0 spamscore=0 clxscore=1015 mlxscore=0 adultscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2312200097 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 | 37 ++++++++++++++++++++-- 1 file changed, 34 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..000e207346af 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,32 @@ 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 +438,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 +463,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