From: Alexandru Dadu <Alexandru.Dadu@imgtec.com>
To: Luigi Santivetti <Luigi.Santivetti@imgtec.com>,
"tzimmermann@suse.de" <tzimmermann@suse.de>,
"simona@ffwll.ch" <simona@ffwll.ch>,
"airlied@gmail.com" <airlied@gmail.com>,
Frank Binns <Frank.Binns@imgtec.com>,
Alessio Belle <Alessio.Belle@imgtec.com>,
"maarten.lankhorst@linux.intel.com"
<maarten.lankhorst@linux.intel.com>,
Brajesh Gupta <Brajesh.Gupta@imgtec.com>,
"mripard@kernel.org" <mripard@kernel.org>
Cc: "dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>,
"imagination@lists.freedesktop.org"
<imagination@lists.freedesktop.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] drm/imagination: Propagate map failures correctly from pvr_mmu_map_sgl()
Date: Thu, 10 Sep 2026 09:35:06 +0000 [thread overview]
Message-ID: <3675aee3bfe55e406e7b1081e519fb765b08a2e4.camel@imgtec.com> (raw)
In-Reply-To: <20260902-mmu_fix-v1-1-c55a23fb7cab@imgtec.com>
On Wed, 2026-09-02 at 15:25 +0530, Brajesh Gupta wrote:
Hi Brajesh,
> *** NOTE: This is an internal email from Imagination Technologies ***
>
>
>
>
> Map failure from pvr_mmu_map_sgl() interface was not returned
> correctly
> to pvr_mmu_map() interface. This resulted in pvr_mmu_map() interface
> to
> continue instead of returning an error to caller.
> Fix it by returning a proper error code from pvr_mmu_map_sgl()
> interface.
>
> Call stack for crash:
> [ 1179.286237] Unable to handle kernel NULL pointer dereference at
> virtual address 0000000000000008
> [ 1179.295067] Mem abort info:
> [ 1179.297877] ESR = 0x0000000096000004
> [ 1179.301656] EC = 0x25: DABT (current EL), IL = 32 bits
> [ 1179.306987] SET = 0, FnV = 0
> [ 1179.310048] EA = 0, S1PTW = 0
> [ 1179.313198] FSC = 0x04: level 0 translation fault
> [ 1179.318096] Data abort info:
> [ 1179.320993] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
> [ 1179.326483] CM = 0, WnR = 0, TnD = 0, TagAccess = 0
> [ 1179.331546] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
> [ 1179.336895] user pgtable: 4k pages, 48-bit VAs,
> pgdp=000000009822a000
> [ 1179.343402] [0000000000000008] pgd=0000000000000000,
> p4d=0000000000000000
> [ 1179.350243] Internal error: Oops: 0000000096000004 [#2] SMP
> [ 1179.355908] Modules linked in: powervr gpu_sched drm_shmem_helper
> drm_gpuvm drm_exec xhci_plat_hcd xhci_hcd dwc3 usbcore usb_common
> snd_soc_simple_card snd_soc_simple_card_utils dwc3_am62 at24 sa2ul
> sha512 libsha512 sha256 authenc sch_fq_codel fuse dm_mod ipv6
> [ 1179.378992] CPU: 1 UID: 1000 PID: 680 Comm: deqp-vk Tainted:
> G D 6.17.0 #1 PREEMPT
> [ 1179.388120] Tainted: [D]=DIE
> [ 1179.390994] Hardware name: Texas Instruments AM625 SK (DT)
> [ 1179.396467] pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS
> BTYPE=--)
> [ 1179.403415] pc : pvr_mmu_op_context_unmap_curr_page+0x6c/0x134
> [powervr]
> [ 1179.410140] lr : pvr_mmu_op_context_unmap_curr_page+0x58/0x134
> [powervr]
> [ 1179.416848] sp : ffff8000839ab8c0
> [ 1179.420153] x29: ffff8000839ab8c0 x28: 0000000000000001 x27:
> 000000008f386000
> [ 1179.427283] x26: ffff000016d1df98 x25: 0000000000247000 x24:
> 00000000000001e6
> [ 1179.434413] x23: 0000000000000002 x22: 000000000000ffff x21:
> 0000000000000247
> [ 1179.441540] x20: 0000000000000245 x19: ffff000016d1df60 x18:
> 0000000000000002
> [ 1179.448668] x17: 0000000000000000 x16: 0000000000000000 x15:
> 0000000000000001
> [ 1179.455793] x14: 0000000000060810 x13: ffff80007fffffff x12:
> ffff000004190480
> [ 1179.462921] x11: ffff8000853f7000 x10: ffff8000811ae000 x9 :
> ffff0000041900b8
> [ 1179.470051] x8 : 0000000000000000 x7 : 00000000990c4001 x6 :
> 0000000000000007
> [ 1179.477177] x5 : ffff000016d1df60 x4 : 0000000000000000 x3 :
> ffff00000a7d8000
> [ 1179.484306] x2 : 00000000000001ff x1 : 0000000000000000 x0 :
> 0000000000000000
> [ 1179.491433] Call trace:
> [ 1179.493872] pvr_mmu_op_context_unmap_curr_page+0x6c/0x134
> [powervr] (P)
> [ 1179.500582] pvr_mmu_map+0x31c/0x388 [powervr]
> [ 1179.505027] pvr_vm_gpuva_map+0x40/0x88 [powervr]
> [ 1179.509732] __drm_gpuvm_sm_map+0x250/0x44c [drm_gpuvm]
> [ 1179.514952] drm_gpuvm_sm_map+0x48/0x5c [drm_gpuvm]
> [ 1179.519822] pvr_vm_bind_op_exec+0x64/0x70 [powervr]
> [ 1179.524785] pvr_vm_map+0x1f8/0x2a8 [powervr]
> [ 1179.529142] pvr_ioctl_vm_map+0x12c/0x188 [powervr]
> [ 1179.534018] drm_ioctl_kernel+0xb8/0x128
> [ 1179.537941] drm_ioctl+0x21c/0x4ec
> [ 1179.541337] __arm64_sys_ioctl+0xac/0x108
> [ 1179.545344] invoke_syscall+0x44/0x100
> [ 1179.549091] el0_svc_common.constprop.0+0x40/0xe0
> [ 1179.553790] do_el0_svc+0x1c/0x28
> [ 1179.557106] el0_svc+0x34/0xf0
> [ 1179.560159] el0t_64_sync_handler+0xd0/0xe4
> [ 1179.564334] el0t_64_sync+0x198/0x19c
> [ 1179.567996] Code: 54000300 35000360 f9402261 79409a62 (f9400421)
> [ 1179.574081] ---[ end trace 0000000000000000 ]---
>
> Fixes: ff5f643de0bf ("drm/imagination: Add GEM and VM related code")
> Signed-off-by: Brajesh Gupta <brajesh.gupta@imgtec.com>
> ---
> drivers/gpu/drm/imagination/pvr_mmu.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/imagination/pvr_mmu.c
> b/drivers/gpu/drm/imagination/pvr_mmu.c
> index 3cac482e1034..175f0ba4d993 100644
> --- a/drivers/gpu/drm/imagination/pvr_mmu.c
> +++ b/drivers/gpu/drm/imagination/pvr_mmu.c
> @@ -12,6 +12,7 @@
> #include "pvr_rogue_mmu_defs.h"
>
> #include <drm/drm_drv.h>
> +#include <drm/drm_print.h>
> #include <linux/atomic.h>
> #include <linux/bitops.h>
> #include <linux/dma-mapping.h>
> @@ -2553,7 +2554,9 @@ pvr_mmu_map_sgl(struct pvr_mmu_op_context
> *op_ctx, struct scatterlist *sgl,
>
> err_destroy_pages:
> memcpy(&op_ctx->curr_page, &ptr_copy, sizeof(op_ctx-
> >curr_page));
> - err = pvr_mmu_op_context_unmap_curr_page(op_ctx, page);
> + if (pvr_mmu_op_context_unmap_curr_page(op_ctx, page))
> + drm_err(from_pvr_device(op_ctx->mmu_ctx->pvr_dev),
> "%s : Failure in unmapping pages\n",
> + __func__);
>
> return err;
> }
>
> --
> 2.43.0
>
Reviewed by: Alexandru Dadu <alexandru.dadu@imgtec.com>
Thanks,
Alexandru Dadu
next prev parent reply other threads:[~2026-09-10 9:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 9:55 [PATCH 0/2] Fixes for map() path Brajesh Gupta
2026-09-02 9:55 ` [PATCH 1/2] drm/imagination: Propagate map failures correctly from pvr_mmu_map_sgl() Brajesh Gupta
2026-09-02 10:11 ` sashiko-bot
2026-09-10 9:35 ` Alexandru Dadu [this message]
2026-09-02 9:55 ` [PATCH 2/2] drm/imagination: Fix page count for page table for map() interface Brajesh Gupta
2026-09-02 10:09 ` sashiko-bot
2026-09-08 12:32 ` Alexandru Dadu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3675aee3bfe55e406e7b1081e519fb765b08a2e4.camel@imgtec.com \
--to=alexandru.dadu@imgtec.com \
--cc=Alessio.Belle@imgtec.com \
--cc=Brajesh.Gupta@imgtec.com \
--cc=Frank.Binns@imgtec.com \
--cc=Luigi.Santivetti@imgtec.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=imagination@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=simona@ffwll.ch \
--cc=stable@vger.kernel.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox