Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp471018pxu; Thu, 7 Jan 2021 09:27:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJzYJ8X5jygHvRkX2zbC7bcJhTUHWqjnNDJd3LCZUWazzLc8yT/3+CvimQEogV06hR4Mrc4/ X-Received: by 2002:a17:907:3f9e:: with SMTP id hr30mr7015349ejc.258.1610040422500; Thu, 07 Jan 2021 09:27:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610040422; cv=none; d=google.com; s=arc-20160816; b=w9KgWVMTkxHur2lEHRnVoCBVURUo1xpESlemDAfwVa5Zs21zzHvSqqHFpIgn4ASAdX HkyuatHzNLf6m1/ORS1yf2v73/KiPivyO74WEwyHrdKqg36p3/n8lSY85fLZNBUmOZdf NyqPnViMT9xHcdGVGD6PfYYz+s3S+gzFxBhfJMamJQxoBhO3ZhCSfLz33CnMWHBMKJhy jjNkDw38ZpU1CRmr9Evvme/TrvkQc1qaBJ8+w2VJJ/xm/nlGPFSzS1iYWVf/kb+aHYaD JCancHtryUEPlsubW/MxOKnrdOHbUH2FnenzQk9xZek+ZLnZlLfhdv6edU3Y2IUk96Wq h7eA== 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=KMvmEFBpjy2So792rxW7fyxN8VfuxztLpgDX8jgcy6g=; b=Nykd3UsQzifWpFEKW7BFauqIqAKyupFPU71G3Vc1m0rPAq0cKsjPDPvPpDJ8MTco0W p4h/wtJKJCEihghyMpsE+ukDfAFUh/B5Y9g+WW6xiCE+HSE6HQ7tSXBPdruVcHOo9yDG ZEeTSL0SssDOzBoC8tTpPashVgKEp0Hy/jjWsdcnsehNVMk5gBShxFYJgmpWRydeBcz+ unT/yVEEDVN7sBMsOwvb8bHSvov0L7qg/DhH+tAPzEqIHcj5srpBUQEJ6p4CtLajDTu3 UE9J8qbMyc+WqzjAM37sFbYej8KwY95F4A++fpQrlBdpp5bSKbpabIjJ8jb581RYYdLc EILg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ry1v3bCY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hr6si2537377ejc.319.2021.01.07.09.26.38; Thu, 07 Jan 2021 09:27:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ry1v3bCY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728066AbhAGRZS (ORCPT + 99 others); Thu, 7 Jan 2021 12:25:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726541AbhAGRZS (ORCPT ); Thu, 7 Jan 2021 12:25:18 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC154C0612F4; Thu, 7 Jan 2021 09:24:37 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id y23so6220752wmi.1; Thu, 07 Jan 2021 09:24:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KMvmEFBpjy2So792rxW7fyxN8VfuxztLpgDX8jgcy6g=; b=ry1v3bCYDlpd2lmszzoxlNXPjCZ2xQdciyO/IvfSSz4lAU8CddtrK78CtbZxzYt8Lk 52R/W8yqwNTtRPdn/lWQ+/H7BRfL+fe37DtNZA3XuXZr4+78RJRnKOTx3aKlW7MdCeaU y4JZYt+SrOXX0QsJKEGyRoP6UsYmjY1ocGDHdXyNE3iz2Dal+e5npt/tUOQAQgq3Siim kLaGP0wdqbWZEABtmAYctA43t9R8LyMGurVvvKLuha9R+SZe72SouUEyQGVlYUkYMWeD /3gPrWRa5B9FFU6H1M99v5jawKbG50WZmrmnZhhI55f13Crxz70f5x2b9JxXFYJ3nY0o PG6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KMvmEFBpjy2So792rxW7fyxN8VfuxztLpgDX8jgcy6g=; b=OP81mQMeu+zUr3IhFl5+NWOTU9/mtkWBRWRY7SxMLlHIZQnke4xKudBpV95ikh67eS yEJpkNPTO4nDBOq2B3y2Ea/swxLv3TI2RNp/Z9Ul8kxTptsDlUppgdXHVpWhkOawozmA 3NGQX7eYa1bV/eYreTH0WcbUjfenbFsGEClJ24W23+SuAwpT2bQNSrBeI12NXwjNAeoy e7+EF0oQ6jAnvAh9kQHXKoeT2vjQeiDXgqTVZyFIdwO8JEPRjzf/fluojCGiThHN9upc /DF8SxlCUL+rJtHgy7Wx6u6io/mdZcEPFIPTImkwF/gw5FPDa0nRvbIi23Q5ZzcDoI4s +qLg== X-Gm-Message-State: AOAM532j9F7k4dzD86ZZElvY0GWX8hY0UG9MV56W4k0uptXF4rq6Ocdz OvWzcx9cMMup2C48zPMbBdPOX8QIsOvKBpnz5Yo= X-Received: by 2002:a7b:c0c8:: with SMTP id s8mr8930405wmh.123.1610040276433; Thu, 07 Jan 2021 09:24:36 -0800 (PST) MIME-Version: 1.0 References: <20210104193044.80591-1-konrad.dybcio@somainline.org> <8847b190c9d03afd731881689d9b28d3@codeaurora.org> In-Reply-To: <8847b190c9d03afd731881689d9b28d3@codeaurora.org> From: Rob Clark Date: Thu, 7 Jan 2021 09:26:54 -0800 Message-ID: Subject: Re: [PATCH] drm/msm: Only enable A6xx LLCC code on A6xx To: Sai Prakash Ranjan Cc: Konrad Dybcio , phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, martin.botka@somainline.org, angelogioacchino.delregno@somainline.org, marijn.suijten@somainline.org, Sean Paul , David Airlie , Daniel Vetter , Jordan Crouse , Bjorn Andersson , Jonathan Marek , Dave Airlie , Sharat Masetty , Akhil P Oommen , Shawn Guo , linux-arm-msm , dri-devel , freedreno , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 6, 2021 at 8:50 PM Sai Prakash Ranjan wrote: > > On 2021-01-05 01:00, Konrad Dybcio wrote: > > Using this code on A5xx (and probably older too) causes a > > smmu bug. > > > > Fixes: 474dadb8b0d5 ("drm/msm/a6xx: Add support for using system > > cache(LLC)") > > Signed-off-by: Konrad Dybcio > > Tested-by: AngeloGioacchino Del Regno > > > > --- > > Reviewed-by: Sai Prakash Ranjan > > > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 21 ++++++++++++--------- > > drivers/gpu/drm/msm/adreno/adreno_gpu.h | 5 +++++ > > 2 files changed, 17 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c > > b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > > index 6cf9975e951e..f09175698827 100644 > > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c > > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > > @@ -191,8 +191,6 @@ adreno_iommu_create_address_space(struct msm_gpu > > *gpu, > > struct platform_device *pdev) > > { > > struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); > > - struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); > > - struct io_pgtable_domain_attr pgtbl_cfg; > > struct iommu_domain *iommu; > > struct msm_mmu *mmu; > > struct msm_gem_address_space *aspace; > > @@ -202,13 +200,18 @@ adreno_iommu_create_address_space(struct msm_gpu > > *gpu, > > if (!iommu) > > return NULL; > > > > - /* > > - * This allows GPU to set the bus attributes required to use system > > - * cache on behalf of the iommu page table walker. > > - */ > > - if (!IS_ERR(a6xx_gpu->htw_llc_slice)) { > > - pgtbl_cfg.quirks = IO_PGTABLE_QUIRK_ARM_OUTER_WBWA; > > - iommu_domain_set_attr(iommu, DOMAIN_ATTR_IO_PGTABLE_CFG, > > &pgtbl_cfg); > > + > > + if (adreno_is_a6xx(adreno_gpu)) { > > + struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); > > + struct io_pgtable_domain_attr pgtbl_cfg; > > + /* > > + * This allows GPU to set the bus attributes required to use system > > + * cache on behalf of the iommu page table walker. > > + */ > > + if (!IS_ERR(a6xx_gpu->htw_llc_slice)) { > > + pgtbl_cfg.quirks = IO_PGTABLE_QUIRK_ARM_OUTER_WBWA; > > + iommu_domain_set_attr(iommu, DOMAIN_ATTR_IO_PGTABLE_CFG, > > &pgtbl_cfg); > > + } I'm applying for -fixes as this is an obvious problem.. But kinda thinking that we should try to move it into an a6xx specific create_address_space() (or wrapper for the generic fxn) Sai/Jordan, could I talk one of you into trying to clean this up better for next cycle? BR, -R > > } > > > > mmu = msm_iommu_new(&pdev->dev, iommu); > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h > > b/drivers/gpu/drm/msm/adreno/adreno_gpu.h > > index 4574d85c5680..08421fa54a50 100644 > > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h > > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h > > @@ -226,6 +226,11 @@ static inline int adreno_is_a540(struct adreno_gpu > > *gpu) > > return gpu->revn == 540; > > } > > > > +static inline bool adreno_is_a6xx(struct adreno_gpu *gpu) > > +{ > > + return ((gpu->revn < 700 && gpu->revn > 599)); > > +} > > + > > static inline int adreno_is_a618(struct adreno_gpu *gpu) > > { > > return gpu->revn == 618; > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > member > of Code Aurora Forum, hosted by The Linux Foundation