I edit and compile the uvcvideo driver on Jetson Xavier NX, to print the sampling timestamp py pr_info
. After that I run my program to collect viedo data through the Intel Realsense D435if camera. Then it shows an abormal high CPU usage:
When I run
dmesg
to check the system log, it shows:
[ 566.981892] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 742.122063] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 960.242017] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 1036.321407] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 1056.309144] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 1100.357959] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[ 1140.356073] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
After sometime, the system will crash and reboot.
Does anyone meet this problem? I wonder how to solve it
Is this on custom board or NV devkit?
Seems not a good idea to have “I think” in such simple question… maybe you should take a photo of the carrier board you are using .
please take the photo of both side.
Is there any NVIDIA logo under that nvme SSD? If there is not, then I don’t think it is a NV devkit.
- I want my camera supply for continuous FPS in the kernel level, instead of simply filtering out frames in the application level program. My method is to filter the frames before they reconstruct from URB packages, so I add an API in the
uvc_v4l2.c
, here is the code example:
...
#define SET_FPS_CMD _IOW('U', 1, unsigned int)
static unsigned int frame_counter = 0;
static unsigned int user_fps = 60;
static long uvc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {
// pr_info("Received ioctl cmd: %u\n", cmd);
switch (cmd) {
case SET_FPS_CMD:
if (copy_from_user(&user_fps, (unsigned int *)arg, sizeof(user_fps))) {
return -EFAULT;
}
pr_info("User FPS set to %u\n", user_fps);
return 0;
default:
// pr_info("Forwarding to video_ioctl2\n");
return video_ioctl2(file, cmd, arg);
}
}
...
Of course I dont think there would be that much of CPU usage, you can see that nearly all cores are full.
- Yes, the fan goes up sometimes.
Share the serial console log for that crash.
Here I find the NVIDIA logo.
That thing is the module… of course it will have NVIDIA logo….
I am asking the carrier board itself… not the module.
Sorry, I see. I check it for the seller, and it is a Chinese costom board… Oops
Is there any significant differences on the custom board?
The crash happens occasionally, once it happended, I will show you the screenshot.
Do not share us screenshot… share full text log…
Sure. Once it happens, I will share. And do you know why the CPU usage increase so high?
It happens…
[29850.292509] usbcore: registered new interface driver uvcvideo
[29850.292522] USB Video Class driver (1.1.1)
[29857.481077] pwm-tegra-tachometer 39c0000.tachometer: Tachometer Overflow is detected
[29862.905353] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).
[29864.735260] usb 2-3.3: Disable of device-initiated U1 failed.
[29864.737937] usb 2-3.3: Disable of device-initiated U2 failed.
[29865.285158] usb 2-3.3: reset SuperSpeed Gen 1 USB device number 15 using tegra-xusb
[29865.319300] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 435i (8086:0b3a)
[29865.326868] input: Intel(R) RealSense(TM) Depth Ca as /devices/platform/3610000.xhci/usb2/2-3/2-3.3/2-3.3:1.0/input/input52
[29865.327851] uvcvideo: Found UVC 1.50 device Intel(R) RealSense(TM) Depth Camera 435i (8086:0b3a)
[29872.950360] User FPS set to 30
[29873.266755] Unable to handle kernel paging request at virtual address ffff800032805000
[29873.267036] Mem abort info:
[29873.267127] ESR = 0x96000047
[29873.267265] EC = 0x25: DABT (current EL), IL = 32 bits
[29873.267413] SET = 0, FnV = 0
[29873.267555] EA = 0, S1PTW = 0
[29873.267641] Data abort info:
[29873.267721] ISV = 0, ISS = 0x00000047
[29873.267823] CM = 0, WnR = 1
[29873.267912] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000024fb37000
[29873.268080] [ffff800032805000] pgd=00000001000ae003, p4d=00000001000ae003, pud=00000001000af003, pmd=000000011aa02003, pte=0000000000000000
[29873.268529] Internal error: Oops: 0000000096000047 [#1] PREEMPT SMP
[29873.268688] Modules linked in: uvcvideo(OE) fuse xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter br_netfilter lzo_rle lzo_compress zram bnep overlay aes_ce_ccm hid_sensor_gyro_3d hid_sensor_accel_3d hid_sensor_trigger industrialio_triggered_buffer hid_sensor_custom kfifo_buf hid_sensor_iio_common snd_soc_tegra186_dspk snd_soc_tegra210_ope snd_soc_tegra186_asrc snd_soc_tegra210_mvc snd_soc_tegra186_arad snd_soc_tegra210_iqc snd_soc_tegra210_afc snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_admaif snd_soc_tegra210_mixer snd_soc_tegra210_amx snd_soc_tegra210_i2s snd_soc_tegra_pcm snd_soc_tegra210_sfc iwlmvm mac80211 input_leds aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_spdif_tx snd_soc_tegra_machine_driver leds_gpio hid_sensor_hub videobuf2_vmalloc max77620_thermal btusb btrtl btbcm btintel snd_soc_tegra210_adsp
[29873.266755] Unable to handle kernel paging request at virtual address ffff800032805000
Hi,
Above error happened when your change makes driver trying to access invalid address.