Received: by 2002:a05:7412:8521:b0:e2:908c:2ebd with SMTP id t33csp1993531rdf; Mon, 6 Nov 2023 01:06:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IHlML6TDtzcKWqXNJHujZHaeXkgp/nVTVgi3I7NEyCVpzauYCVkBtcCjV4lbndO11BxPgE0 X-Received: by 2002:aca:2202:0:b0:3ac:b12b:9acc with SMTP id b2-20020aca2202000000b003acb12b9accmr30652827oic.43.1699261571174; Mon, 06 Nov 2023 01:06:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699261571; cv=none; d=google.com; s=arc-20160816; b=haHQ3qkkq+3livIxqPHlhwB7PqAOOHZDvPp3JgICkAAYBGtoQhwyx+Vs+3L0IgubRQ CJkrW9NLccyIqwVY8Wm8uPtWk5QAo83IrueU5fEEIG5ltZz00214YEPppr/eFrNgnRSr k9A4eCAoP4xx85RZaaspA0/N4qEoMLOn/ncTt+GNEo25cdOMx1cQC7g1SdaHekxiV0uI GzEKTjMHNirlwUsLNDr++FK9SxxwbBwi/Xsy2L8y9NElVyCJZYx9p/o9eh7S/Wv/NA0z IebIPhN6ZvGtxD9NrtRK3mwFR/YlyjBPGtd9c+sC+MNL0/+19vjFSqeSjyBgjzAkH/5t ZnrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=w+9g7KBr3GWK7S0Hqyl+7EJ7WFKVNLWXQkaAb9zt87k=; fh=tOxrsMndee4zIOy0VZB9aWWeYwsag5IiwXbbn3eahec=; b=E10PrNZ/0eUTM/fiE9oHIbgLm70PMNwx7w3eBwQiMhcMtl9Qh6tHobejhfHraBC2Y6 KY25l3D02C8fC/xhHasuZWPWVbq0JeHQBqe/pQv7gB+txJXZ+zNxxqp2+w8wTZ0A8BBW 9p7HR/YJBpkXIytrC5p2rRW6IVZR0Z155D3X/PKlFjsF1jZZRKIDQwGo1Qw4qIt/VM1G OHw0+MzFw1czKyyeMbkbBYY+XXCRl2pVip+vvlTdMylFuF1+aEacDHELqH9fQn78lp8I TAO8iGDeYJB0JA4uoXjMFUV+zz8kX4UoaCPjQ850vgPShUfM0X27slj42jhekYSXcIPq gDtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=A09z3wOS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id j65-20020a638b44000000b005ac13df150dsi8024754pge.384.2023.11.06.01.06.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Nov 2023 01:06:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=A09z3wOS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id B52EE80964E1; Mon, 6 Nov 2023 01:05:49 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231304AbjKFJFc (ORCPT + 99 others); Mon, 6 Nov 2023 04:05:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230475AbjKFJFa (ORCPT ); Mon, 6 Nov 2023 04:05:30 -0500 Received: from mail-yw1-x112b.google.com (mail-yw1-x112b.google.com [IPv6:2607:f8b0:4864:20::112b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2116483 for ; Mon, 6 Nov 2023 01:05:27 -0800 (PST) Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-5af5b532d8fso48242277b3.2 for ; Mon, 06 Nov 2023 01:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1699261526; x=1699866326; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=w+9g7KBr3GWK7S0Hqyl+7EJ7WFKVNLWXQkaAb9zt87k=; b=A09z3wOSWmgLo2YYh7LJFmdaLEUBv/K8kPeQA+Pp5/0qh15kz7AgWopfJMENjym/EO BDIB9uxkjWwASZ3JbVXbbLcMd+QK2cKgYZzxb6sDnv80sS8g4HmjEBKwyk+0sZUc/5AZ Mikr83V24MizfYuEZckTGjkA6MH/llWuU4fpVcvIRQUm5DA75yv61N5/zTPR2Gxpcq6D Hv6mDcGG0Q22KcvsstyA5XmrWrkHgxcrkTI4d2dZqWhf9MGHw9qy8/j5NoiWzBero9Z6 gU3iW4AjhvNLF8K5orrpjKG5VLsXboB65WmyV8DjrOq0vbBe9ptveLp7XVY+0OWGSgQw zQhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699261526; x=1699866326; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=w+9g7KBr3GWK7S0Hqyl+7EJ7WFKVNLWXQkaAb9zt87k=; b=LDZk3PbODqTp63OLNJ/emSydE1IpzGfbHYbvFOiz11kgExa6rQNTsYYOWdmMV2hmoq X+aUHQBt33IM4m6P+SHXgK/e3hxXMg2khyYgxelP0XF9wPYsQPSM3i+yUHqT2N532TJB 2907RyuVHCe9Ss/wZ1WC/lDI080Pzszas4arJFxGU9hMadcsg48+pbnNSCbMPQcNZpLw B2uFV6KRfi0GPbuPnjZUdIKUyzQhAMejIUk8KcOJYkNqpP7k54sM5Y/pldHV1IUhUSTw wG2KVAgV8XFzlbqesOxyiCxhYTJ6vAcaP52dej2F3CAxK4OEz28qTfdfqvYmgTsKZbs7 7Bqg== X-Gm-Message-State: AOJu0YyEC11NXrByKFBAb2X+qYxsu+2cfK3jeo1/2beFgcb69AvQPOqX SuDukZCOEBjQElBFtDlCH3vt6Ir6znInogKax5ZnHQ== X-Received: by 2002:a81:4c51:0:b0:59f:4dcd:227e with SMTP id z78-20020a814c51000000b0059f4dcd227emr9456844ywa.37.1699261526197; Mon, 06 Nov 2023 01:05:26 -0800 (PST) MIME-Version: 1.0 References: <20231103215124.1095-1-quic_bibekkum@quicinc.com> <20231103215124.1095-3-quic_bibekkum@quicinc.com> In-Reply-To: From: Dmitry Baryshkov Date: Mon, 6 Nov 2023 11:05:14 +0200 Message-ID: Subject: Re: [PATCH 2/3] iommu/arm-smmu: add ACTLR data and support for SM8550 To: Bibek Kumar Patro Cc: will@kernel.org, robin.murphy@arm.com, joro@8bytes.org, a39.skl@gmail.com, konrad.dybcio@linaro.org, quic_saipraka@quicinc.com, quic_pkondeti@quicinc.com, quic_molvera@quicinc.com, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, qipl.kernel.upstream@quicinc.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Mon, 06 Nov 2023 01:05:50 -0800 (PST) On Mon, 6 Nov 2023 at 08:10, Bibek Kumar Patro wrote: > > > > On 11/4/2023 4:11 AM, Dmitry Baryshkov wrote: > > On Sat, 4 Nov 2023 at 00:38, Bibek Kumar Patro > > wrote: > >> > >> > >> > >> On 11/4/2023 3:31 AM, Dmitry Baryshkov wrote: > >>> On Fri, 3 Nov 2023 at 23:53, Bibek Kumar Patro > >>> wrote: > >>>> > >>>> Add ACTLR data table for SM8550 along with support for > >>>> same including SM8550 specific implementation operations. > >>>> > >>>> Signed-off-by: Bibek Kumar Patro > >>>> --- > >>>> drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 85 +++++++++++++++++++++- > >>>> 1 file changed, 81 insertions(+), 4 deletions(-) > >>>> > >>>> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c > >>>> index 68c1f4908473..590b7c285299 100644 > >>>> --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c > >>>> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c > >>>> @@ -25,6 +25,64 @@ struct actlr_data { > >>>> u32 actlr; > >>>> }; > >>>> > >>>> +static const struct actlr_data sm8550_apps_actlr_data[] = { > >>>> + { 0x18a0, 0x0000, 0x00000103 }, > >>>> + { 0x18e0, 0x0000, 0x00000103 }, > >>>> + { 0x0800, 0x0020, 0x00000001 }, > >>>> + { 0x1800, 0x00c0, 0x00000001 }, > >>>> + { 0x1820, 0x0000, 0x00000001 }, > >>>> + { 0x1860, 0x0000, 0x00000001 }, > >>>> + { 0x0c01, 0x0020, 0x00000303 }, > >>>> + { 0x0c02, 0x0020, 0x00000303 }, > >>>> + { 0x0c03, 0x0020, 0x00000303 }, > >>>> + { 0x0c04, 0x0020, 0x00000303 }, > >>>> + { 0x0c05, 0x0020, 0x00000303 }, > >>>> + { 0x0c06, 0x0020, 0x00000303 }, > >>>> + { 0x0c07, 0x0020, 0x00000303 }, > >>>> + { 0x0c08, 0x0020, 0x00000303 }, > >>>> + { 0x0c09, 0x0020, 0x00000303 }, > >>>> + { 0x0c0c, 0x0020, 0x00000303 }, > >>>> + { 0x0c0d, 0x0020, 0x00000303 }, > >>>> + { 0x0c0e, 0x0020, 0x00000303 }, > >>>> + { 0x0c0f, 0x0020, 0x00000303 }, > >>>> + { 0x1961, 0x0000, 0x00000303 }, > >>>> + { 0x1962, 0x0000, 0x00000303 }, > >>>> + { 0x1963, 0x0000, 0x00000303 }, > >>>> + { 0x1964, 0x0000, 0x00000303 }, > >>>> + { 0x1965, 0x0000, 0x00000303 }, > >>>> + { 0x1966, 0x0000, 0x00000303 }, > >>>> + { 0x1967, 0x0000, 0x00000303 }, > >>>> + { 0x1968, 0x0000, 0x00000303 }, > >>>> + { 0x1969, 0x0000, 0x00000303 }, > >>>> + { 0x196c, 0x0000, 0x00000303 }, > >>>> + { 0x196d, 0x0000, 0x00000303 }, > >>>> + { 0x196e, 0x0000, 0x00000303 }, > >>>> + { 0x196f, 0x0000, 0x00000303 }, > >>>> + { 0x19c1, 0x0010, 0x00000303 }, > >>>> + { 0x19c2, 0x0010, 0x00000303 }, > >>>> + { 0x19c3, 0x0010, 0x00000303 }, > >>>> + { 0x19c4, 0x0010, 0x00000303 }, > >>>> + { 0x19c5, 0x0010, 0x00000303 }, > >>>> + { 0x19c6, 0x0010, 0x00000303 }, > >>>> + { 0x19c7, 0x0010, 0x00000303 }, > >>>> + { 0x19c8, 0x0010, 0x00000303 }, > >>>> + { 0x19c9, 0x0010, 0x00000303 }, > >>>> + { 0x19cc, 0x0010, 0x00000303 }, > >>>> + { 0x19cd, 0x0010, 0x00000303 }, > >>>> + { 0x19ce, 0x0010, 0x00000303 }, > >>>> + { 0x19cf, 0x0010, 0x00000303 }, > >>>> + { 0x1c00, 0x0002, 0x00000103 }, > >>>> + { 0x1c01, 0x0000, 0x00000001 }, > >>>> + { 0x1920, 0x0000, 0x00000103 }, > >>>> + { 0x1923, 0x0000, 0x00000103 }, > >>>> + { 0x1924, 0x0000, 0x00000103 }, > >>>> + { 0x1940, 0x0000, 0x00000103 }, > >>>> + { 0x1941, 0x0004, 0x00000103 }, > >>>> + { 0x1943, 0x0000, 0x00000103 }, > >>>> + { 0x1944, 0x0000, 0x00000103 }, > >>>> + { 0x1947, 0x0000, 0x00000103 }, > >>>> +}; > >>> > >>> This is nearly impossible to handle. > >>> Please add defines for 0x1, 0x103 and 0x303. Also please consider > >>> adding comments for the devices. > >>> > >> > >> Ack, Initially added the comments for devices, but since only driver is > >> handling this data, and clients won't refer this so removed it. Will > >> consider adding it back. > > > > It will help developers / porters who will try matching the SID and the device. > > > > Agree on the same, I'll add those comments for devices back. > > >> This actlr field value might different (other > >> than 0x1,0x103,0x303) in other platforms as per my anticipation, > >> depending on the bit settings, so won't the defines change with > >> different platforms? Hence this register setting value might be apt? > > > > It is simple. 0x1, 0x103 and 0x303 are pure magic values. Please > > provide sensible defines so that we can understand and review them. > > > > Understandable, In next patch I'll populate the actlr_data in > following format { SID, MASK, PRE_FETCH_n | CPRE | CMTLB }. > where " PRE_FETCH_n | CPRE | CMTLB " will be defines for > the actlr values (0x1,0x103,0x303). > This would help in understanding these values. Hope this > proposed format will be okay? Yes, this sounds good. Please also add description for CPRE and CMTLB bits. > > > > Other platforms might use new defines. > > > >> > >>>> + > >>>> static struct qcom_smmu *to_qcom_smmu(struct arm_smmu_device *smmu) > >>>> { > >>>> return container_of(smmu, struct qcom_smmu, smmu); > >>>> @@ -444,6 +502,16 @@ static const struct arm_smmu_impl sdm845_smmu_500_impl = { > >>>> .tlb_sync = qcom_smmu_tlb_sync, > >>>> }; > >>>> > >>>> + > >>>> +static const struct arm_smmu_impl sm8550_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, > >>>> + .write_s2cr = qcom_smmu_write_s2cr, > >>>> + .tlb_sync = qcom_smmu_tlb_sync, > >>>> +}; > >>>> + > >>>> static const struct arm_smmu_impl qcom_adreno_smmu_v2_impl = { > >>>> .init_context = qcom_adreno_smmu_init_context, > >>>> .def_domain_type = qcom_smmu_def_domain_type, > >>>> @@ -507,6 +575,11 @@ static const struct qcom_smmu_config qcom_smmu_impl0_cfg = { > >>>> .reg_offset = qcom_smmu_impl0_reg_offset, > >>>> }; > >>>> > >>>> +static const struct actlr_config sm8550_actlrcfg = { > >>>> + .adata = sm8550_apps_actlr_data, > >>>> + .size = ARRAY_SIZE(sm8550_apps_actlr_data), > >>>> +}; > >>>> + > >>>> /* > >>>> * It is not yet possible to use MDP SMMU with the bypass quirk on the msm8996, > >>>> * there are not enough context banks. > >>>> @@ -530,16 +603,20 @@ static const struct qcom_smmu_match_data sdm845_smmu_500_data = { > >>>> /* Also no debug configuration. */ > >>>> }; > >>>> > >>>> + > >>>> +static const struct qcom_smmu_match_data sm8550_smmu_500_impl0_data = { > >>>> + .impl = &sm8550_smmu_500_impl, > >>>> + .adreno_impl = &qcom_adreno_smmu_500_impl, > >>>> + .cfg = &qcom_smmu_impl0_cfg, > >>>> + .actlrcfg = &sm8550_actlrcfg, > >>>> +}; > >>> > >>> This structure doesn't seem to be linked. Did you test your patches? > >>> > >> > >> Apologies Dmitry, just checked back my patches, I tested it but while > >> refining the patches I somehow missed this link > >> { .compatible = "qcom,sm8550-smmu-500", .data = > >> &sm8550_smmu_500_impl0_data }; > >> in below qcom_smmu_500_impl0_data structure. > >> I will take care of this in next version. > >> > >>>> + > >>>> static const struct qcom_smmu_match_data qcom_smmu_500_impl0_data = { > >>>> .impl = &qcom_smmu_500_impl, > >>>> .adreno_impl = &qcom_adreno_smmu_500_impl, > >>>> .cfg = &qcom_smmu_impl0_cfg, > >>>> }; > >>>> > >>>> -/* > >>>> - * Do not add any more qcom,SOC-smmu-500 entries to this list, unless they need > >>>> - * special handling and can not be covered by the qcom,smmu-500 entry. > >>>> - */ > >>> > >>> Leave the comment in place. > >>> > >> > >> Thanks for this comment which helped me to note the above mentioned > >> mistake. > >> > >>>> static const struct of_device_id __maybe_unused qcom_smmu_impl_of_match[] = { > >>>> { .compatible = "qcom,msm8996-smmu-v2", .data = &msm8996_smmu_data }, > >>>> { .compatible = "qcom,msm8998-smmu-v2", .data = &qcom_smmu_v2_data }, > >>>> -- > >>>> 2.17.1 > >>>> > >>> > >>> > > > > > > -- With best wishes Dmitry