Orin nano unable to handle kernel page request

I am using the orin nano to capture images of a v4l2 device using a c++ implementation. However when initializing and trying to receive images the kernel crashes. The C++ code works fine on a Xavier NX running Jetpack 4.6.

The dmesg code is linked below, it is however cut short as the device reboots and is not able to print the complete message:
The virtual address shown is always the same.

[ +0,016636] Unable to handle kernel paging request at virtual address 0000000000140000
[ +0,001158] bwmgr API not supported
[ +0,006999] Mem abort info:
[ +0,002826] ESR = 0x96000044
[Jul 3 13:06] EC = 0x25: DABT (current EL), IL = 32 bits
[ +0,000002] SET = 0, FnV = 0
[ +0,000001] EA = 0, S1PTW = 0
[ +0,000001] Data abort info:
[ +0,000001] ISV = 0, ISS = 0x00000044
[ +0,000001] CM = 0, WnR = 1
[ +0,000003] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000157b1b000
[ +0,000004] [0000000000140000] pgd=0000000000000000, p4d=0000000000000000
pmp_thermal(E) spi_tegra114(E) binfmt_misc(E) ina3221(E) pwm_fan(E) nvgpu(E) nvmap(E) ip_tables(E) x_tables(E) [last unloaded: mtd]
[ +0,118625] CPU: 0 PID: 2925 Comm: vi-output, adsd Tainted: G OE 5.10.104-tegra #1
[ +0,008999] Hardware name: Unknown NVIDIA Orin NX Developer Kit/NVIDIA Orin NX Developer Kit, BIOS 3.0-32616947 02/21/2023
[ +0,011333] pstate: 40c00009 (nZcv daif +PAN +UAO -TCO BTYPE=–)
[ +0,006173] pc : tegra_channel_kthread_capture_enqueue+0x2f8/0x500
[ +0,006335] lr : tegra_channel_kthread_capture_enqueue+0x200/0x500
[ +0,006331] sp : ffff80001b893d20
[ +0,003392] x29: ffff80001b893d20 x28: ffff800017ae3000
[ +0,005451] x27: ffff1d2d86c7a9fc x26: 0000000000000001
[ +0,005444] x25: ffff1d2d86c7a080 x24: ffff1d2cc32ab060
[ +0,005444] x23: 0000000000000000 x22: ffff80001b893e28
[ +0,005450] x21: ffff1d2d86c7aac0 x20: 0000000000000000
[ +0,005454] x19: ffff1d2cc32ab000 x18: 000000000000002a
[ +0,005440] x17: 0000000000000000 x16: 0000000000000000
[ +0,004340] x15: 0000000000000005 x14: 0000000000000a00
[ +0,000003] x13: ffff800017ae1000 x12: 0000000000000a00
[ +0,000002] x11: ffff800017ae3000 x10: 0000000000000000

The output of the application ends with this:
Message from syslogd@orinnano-desktop at Jul 3 13:05:59 …
kernel:[ 1775.008633] Internal error: Oops: 96000044 [#1] PREEMPT SMP

Further behaviour is when using a v4l2-ctl command to receive images and configure the frontend it works as expected also for multiple captures. However when using v4l2 or ioctl in the C++ code it seems to crash. In the C++ implementation we also use the USER_PTR method to directly move the image to cuda memory.

thank you for your help

Maybe check the MMAPI sample 12_v4l2_camera_cuda

thanks, will do. This would mean that it is not recommended to use the USER_PTR method but user DMA or MMAP ? Is there a reason to why this is not working on the orin nano but on the older xavier nx?

we followed the sample 18_v4l2_camera_cuda_rgb pretty closely and basically initialize and configure the buffers the same way

Does 18_v4l2_camera_cuda_rgb work for your device?

running it with default params seems to work. (default MMAP), however when trying the -u -z option it gives me:
VIDIOC_QBUF error 22, Invalid argument

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.

Could you help to debug it to figure the failed.