From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 E7183209F4A for ; Tue, 12 Nov 2024 09:08:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731402527; cv=none; b=UIAzlkr6Wv7fYmGzIHTqC3oVhM/Q7YGAFCrDU+AXhp72fyNBWz+yCwGJWcNDSSQ+xKkC8CAcSpPJmB7iR0m9dOyObBDMFqs/oeafJaipnfcN7Qqx9BI7pKVz/GXI51MkF01ZKCGz31pY+HOIsSNcEq+fi2rN00gY0xT0smsknbE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731402527; c=relaxed/simple; bh=1BPCp/eM6urbPUDXCjCfw1PE8UHU+GB2Mm8NG/AaJpY=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=l2Ms6FY7k8aRpEZLmAbmvq/ik/RxRt1E+9x+hK1AHJGxAlt+DM1kthTkelleusqN/kqo2/bASkNe5lyvapYSQAblgqSnctDuW+C57mVqpKZfuAkJqFprjWfvfQoczAx97fWI+zKKbUzq0v/D9tu7QRu0Hkz9BxY0FZ9yahcRHME= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=apVyWmKd; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="apVyWmKd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1731402524; bh=1BPCp/eM6urbPUDXCjCfw1PE8UHU+GB2Mm8NG/AaJpY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=apVyWmKdTawdkNq8GjXAhYwaUwXBp9uE3/RlXEhgVyO6/RXvBw6l3jaV+rVkOzwNH AZtZjQN5vJ1HRda+9ZQql+79U6hG2R6MEfmWbwfsv+AMmITmAifPCoaLDW62tPSKl2 uUxWKm9DhmPt4/D28ZxOKWnVH3+jaCM69e03SlF4nA23DFZ6n2xetwwsaYwGUylARn A5T4L+AfBK2DxuWJDn8rbHBeID2qf8HZ3GafOlAQK681Yg718ZJqj8lbcvazbQM7Me Vfx0hovjkv8yMw4L9AVawkDlSvQuSyLGZyiFXoJ3hwXgCdj1ox33v5pKnS/p+/LkiW /lM2HhGCQ9CGA== Received: from localhost (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: bbrezillon) by bali.collaboradmins.com (Postfix) with ESMTPSA id A907617E1411; Tue, 12 Nov 2024 10:08:43 +0100 (CET) Date: Tue, 12 Nov 2024 10:08:36 +0100 From: Boris Brezillon To: Akash Goel Cc: liviu.dudau@arm.com, steven.price@arm.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, mihail.atanassov@arm.com, ketil.johnsen@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, nd@arm.com Subject: Re: [PATCH v2] drm/panthor: Fix handling of partial GPU mapping of BOs Message-ID: <20241112100836.57fcfd5f@collabora.com> In-Reply-To: <20241111134720.780403-1-akash.goel@arm.com> References: <20241111134720.780403-1-akash.goel@arm.com> Organization: Collabora X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; x86_64-redhat-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Mon, 11 Nov 2024 13:47:20 +0000 Akash Goel wrote: > This commit fixes the bug in the handling of partial mapping of the > buffer objects to the GPU, which caused kernel warnings. > > Panthor didn't correctly handle the case where the partial mapping > spanned multiple scatterlists and the mapping offset didn't point > to the 1st page of starting scatterlist. The offset variable was > not cleared after reaching the starting scatterlist. > > Following warning messages were seen. > WARNING: CPU: 1 PID: 650 at drivers/iommu/io-pgtable-arm.c:659 __arm_lpae_unmap+0x254/0x5a0 > > pc : __arm_lpae_unmap+0x254/0x5a0 > lr : __arm_lpae_unmap+0x2cc/0x5a0 > > Call trace: > __arm_lpae_unmap+0x254/0x5a0 > __arm_lpae_unmap+0x108/0x5a0 > __arm_lpae_unmap+0x108/0x5a0 > __arm_lpae_unmap+0x108/0x5a0 > arm_lpae_unmap_pages+0x80/0xa0 > panthor_vm_unmap_pages+0xac/0x1c8 [panthor] > panthor_gpuva_sm_step_unmap+0x4c/0xc8 [panthor] > op_unmap_cb.isra.23.constprop.30+0x54/0x80 > __drm_gpuvm_sm_unmap+0x184/0x1c8 > drm_gpuvm_sm_unmap+0x40/0x60 > panthor_vm_exec_op+0xa8/0x120 [panthor] > panthor_vm_bind_exec_sync_op+0xc4/0xe8 [panthor] > panthor_ioctl_vm_bind+0x10c/0x170 [panthor] > drm_ioctl_kernel+0xbc/0x138 > drm_ioctl+0x210/0x4b0 > __arm64_sys_ioctl+0xb0/0xf8 > invoke_syscall+0x4c/0x110 > el0_svc_common.constprop.1+0x98/0xf8 > do_el0_svc+0x24/0x38 > el0_svc+0x34/0xc8 > el0t_64_sync_handler+0xa0/0xc8 > el0t_64_sync+0x174/0x178 > > panthor : [drm] drm_WARN_ON(unmapped_sz != pgsize * pgcount) > WARNING: CPU: 1 PID: 650 at drivers/gpu/drm/panthor/panthor_mmu.c:922 panthor_vm_unmap_pages+0x124/0x1c8 [panthor] > > pc : panthor_vm_unmap_pages+0x124/0x1c8 [panthor] > lr : panthor_vm_unmap_pages+0x124/0x1c8 [panthor] > > panthor : [drm] *ERROR* failed to unmap range ffffa388f000-ffffa3890000 (requested range ffffa388c000-ffffa3890000) > > Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block") > Reviewed-by: Liviu Dudau > Reviewed-by: Steven Price > Signed-off-by: Akash Goel Oops, sorry, didn't notice the v2 before adding my R-b on v1. Reviewed-by: Boris Brezillon > --- > drivers/gpu/drm/panthor/panthor_mmu.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c > index d8cc9e7d064e..8d05124793f5 100644 > --- a/drivers/gpu/drm/panthor/panthor_mmu.c > +++ b/drivers/gpu/drm/panthor/panthor_mmu.c > @@ -989,6 +989,8 @@ panthor_vm_map_pages(struct panthor_vm *vm, u64 iova, int prot, > > if (!size) > break; > + > + offset = 0; > } > > return panthor_vm_flush_range(vm, start_iova, iova - start_iova);