Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp14055334pxu; Mon, 4 Jan 2021 11:36:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJzoMFarWzyNL/7o2TJfPxdrO3sT3DcfnxlcW57/IgX+TjotQhJahkCcXcQsF5a9olH/lsq6 X-Received: by 2002:a17:906:cd14:: with SMTP id oz20mr63216317ejb.99.1609788981300; Mon, 04 Jan 2021 11:36:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609788981; cv=none; d=google.com; s=arc-20160816; b=YSPvobYcBX5acLcrbZ1MMXL2oI0+kB55yj9hkp539spoaD8VWHZbfCBDZxLnVoJHto 63mEeKIYMBnFU0Ux2pF/I/w5k4ZEshjA6AP2leIkgsUVSNHhPLIF+G4Z8CW6GDs6XAVU jxInXp0FUmDs8OQikQdvj3J4KTf+IVNtoU5Kj/vQp3yANwSjhOEoOEnU+SXC+iYFw1jD xqC4i8KD/n99AQ0C7aBbcdw+Igh7pl3bFFXEgEuzlJAx4Zh5Cf5ydx2si0DkLN8yZGBM NYkLdrkdeTzxleysD4v66QQtbJpYYhN+fbHh5ave9XVhX7tQo20XjbLd6vrtMgGI7nfx BvrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=an8NQkZnyxYwH2YqRxbRpTd0QQFJUP3DAztZWpvkM1E=; b=YaZFrUliQ2Dpf4NG60QcGbdx+0u5e564h48SKJ/30jxnGeBzvIAzmHpGbL3INMqmdx ea8fhlF9O5lTkgeAF5EQCpKTHbAoJJjZNtKSJc0sgGUR11V0/PnEfsG9a7cTy8KB2UR9 eRp1g1g2XSEPf9H0g88j10pux8jk5fe1NPY2Pp1zSnfTimaC+PnGJmk261i08t2M80AP HMLPWInownDdyKDKhPfo+7vXPDLahnOBgLRSjWQJ8reMhLKPHu0Kwpx+EJ+gF/drkS3p Zsuh7eaczXE6g4oEyJtBlHkT0F5lctvKeKilUpMcz9G5QFUL2el5gvllm1FaLyTinjQQ g5kw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bm26si32472471edb.528.2021.01.04.11.35.57; Mon, 04 Jan 2021 11:36:21 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727310AbhADTcg (ORCPT + 99 others); Mon, 4 Jan 2021 14:32:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726606AbhADTcg (ORCPT ); Mon, 4 Jan 2021 14:32:36 -0500 Received: from relay03.th.seeweb.it (relay03.th.seeweb.it [IPv6:2001:4b7a:2000:18::164]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9243C061793 for ; Mon, 4 Jan 2021 11:31:55 -0800 (PST) Received: from localhost.localdomain (abaf53.neoplus.adsl.tpnet.pl [83.6.169.53]) by m-r1.th.seeweb.it (Postfix) with ESMTPA id 1BCEA20014; Mon, 4 Jan 2021 20:31:48 +0100 (CET) From: Konrad Dybcio To: phone-devel@vger.kernel.org Cc: ~postmarketos/upstreaming@lists.sr.ht, martin.botka@somainline.org, angelogioacchino.delregno@somainline.org, marijn.suijten@somainline.org, Konrad Dybcio , Rob Clark , Sean Paul , David Airlie , Daniel Vetter , Jordan Crouse , Bjorn Andersson , Jonathan Marek , Dave Airlie , Sharat Masetty , Akhil P Oommen , Shawn Guo , Sai Prakash Ranjan , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/msm: Only enable A6xx LLCC code on A6xx Date: Mon, 4 Jan 2021 20:30:41 +0100 Message-Id: <20210104193044.80591-1-konrad.dybcio@somainline.org> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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); + } } 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; -- 2.29.2