From nobody Wed Feb 11 07:07:34 2026 Received: from out-184.mta0.migadu.com (out-184.mta0.migadu.com [91.218.175.184]) (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 64EB6495E5 for ; Sun, 19 May 2024 16:55:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.184 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716137714; cv=none; b=t0qXgpm3rVtO/YY+y0OXON7820IdH1braHWvcM2/yFOGat0pbKH+Jpn3nO3FqVG5dA/xDRUmHlZk6JqqeeJLAyUIeG0o4UUu2PDFHeieRkyvdJM+DPjNxg6cJHn98M0g7qg2POK0RJHcs3B1FqLv3jlVsmnmFTDY2PGkc2SWfPw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716137714; c=relaxed/simple; bh=HLEE5CycAUBUUmCccedhfrJ12xykardYssIwYKvg69Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G/YP/ib8WUv3SDTv0lQIL7LsCEdkRLLgyrpyx6ywqObimDt1jVgafFNE6FI7ZKIW5YgYXTvdBOnOk5pBjMWUfEFLZ3apwkBIhcp9b0YKyG7JC7mtS8piQ6LYHsFaoj9934ZftCHaQMPg1RoAI+7FGhMg+mf6vHFgPt8DGws7350= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=bBlT1H7D; arc=none smtp.client-ip=91.218.175.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="bBlT1H7D" X-Envelope-To: l.stach@pengutronix.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1716137710; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pwKICKst0L9yhry2NDoovnT+HCNlgrmcR3qE1GjmJec=; b=bBlT1H7DxARNi8JC9kBvYsbaGoD0hxSggt0J/XuuMtKkhgwS8p7//uKxzrGvH8wGWkeKGm e1iyhK+QtBKAFoftw8vneZwgTuHBhhMNXMCe7HXugnF78CplZLZB0hYyEUpZP+8fbVIgP0 GMgT57Wf5lN9/+RCOkQBCZN8fKtJ1Do= X-Envelope-To: linux+etnaviv@armlinux.org.uk X-Envelope-To: christian.gmeiner@gmail.com X-Envelope-To: linux-kernel@vger.kernel.org X-Envelope-To: etnaviv@lists.freedesktop.org X-Envelope-To: dri-devel@lists.freedesktop.org X-Envelope-To: sui.jingfeng@linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Sui Jingfeng To: Lucas Stach Cc: Russell King , Christian Gmeiner , linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Sui Jingfeng Subject: [etnaviv-next v14 4/8] drm/etnaviv: Fix wrong cache property being used for vmap() Date: Mon, 20 May 2024 00:53:17 +0800 Message-Id: <20240519165321.2123356-5-sui.jingfeng@linux.dev> In-Reply-To: <20240519165321.2123356-1-sui.jingfeng@linux.dev> References: <20240519165321.2123356-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" In the etnaviv_gem_vmap_impl() function, the driver vmap whatever buffers with Write-Combine page property. This is unreasonable, as some platforms are cached coherent. And cached buffers should be mapped with cached page property. Fixes: a0a5ab3e99b8 ("drm/etnaviv: call correct function when trying to vma= p a DMABUF") Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnavi= v/etnaviv_gem.c index aa95a5e98374..eed98bb9e446 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c @@ -342,6 +342,7 @@ void *etnaviv_gem_vmap(struct drm_gem_object *obj) static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_object *obj) { struct page **pages; + pgprot_t prot; =20 lockdep_assert_held(&obj->lock); =20 @@ -349,8 +350,19 @@ static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_= object *obj) if (IS_ERR(pages)) return NULL; =20 - return vmap(pages, obj->base.size >> PAGE_SHIFT, - VM_MAP, pgprot_writecombine(PAGE_KERNEL)); + switch (obj->flags) { + case ETNA_BO_CACHED: + prot =3D PAGE_KERNEL; + break; + case ETNA_BO_UNCACHED: + prot =3D pgprot_noncached(PAGE_KERNEL); + break; + case ETNA_BO_WC: + default: + prot =3D pgprot_writecombine(PAGE_KERNEL); + } + + return vmap(pages, obj->base.size >> PAGE_SHIFT, VM_MAP, prot); } =20 static inline enum dma_data_direction etnaviv_op_to_dma_dir(u32 op) --=20 2.34.1