AM625: GPU Driver Issues of AM62x

Part Number: AM625

SDK10.01.10.04 Kernel version 6.6.58+


GPU-related error message:

2026.06.05-10:37:05..714..[    9.828723] PVR_K:  103: Device: fd00000.gpu
2026.06.05-10:37:05..744..[    9.840287] PVR_K:  103: Read BVNC 33.15.11.3 from HW device registers
2026.06.05-10:37:05..748..[    9.856609] PVR_K:  103: RGX Device registered with BVNC 33.15.11.3
2026.06.05-10:37:05..748..[    9.873282] [drm] Initialized pvr 24.1.6554834 20170530 for fd00000.gpu on minor 1
2026.06.05-10:37:05..749..[   10.056254] PVR_K:  224: RGX Firmware image 'rgx.fw.33.15.11.3' loaded
2026.06.05-10:37:05..749..[   10.077482] PVR_K:  224: Shader binary image 'rgx.sh.33.15.11.3' loaded
2026.06.05-10:37:05..761..[   14.225335]  2b10000.audio-controller-tlv320aic3x-hifi: ASoC: unmatched rate symmetry: 2b10000.audio-controller:8000 - soc_pcm_params_symmetry:22050
2026.06.05-10:37:05..762..[   17.400283] am65-cpsw-nuss 8000000.ethernet eth0: Link is Down
2026.06.05-10:37:05..769..[   19.940783] platform 2b300050.target-module: deferred probe pending
2026.06.05-10:37:05..780..[  247.304232] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [SMSC LAN8710/LAN8720] (irq=POLL)
2026.06.05-10:37:05..781..[  247.314652] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rmii link mode
2026.06.05-10:37:05..791..[  247.372235] pvr_sync_file: pvr_sync_create_fence: Failed to open supplied timeline fd (44)
2026.06.05-10:37:05..804..[  247.380602] PVR_K:(Error):   224: SyncCheckpointCreateFence failed to create new fence<00000000499a4e77> for timeline<44> using sync checkpoint context<00000000bb65e77a>, psNewSyncCheckpoint=<00000000aa9ea695>, eError=PVRSRV_ERROR_INVALID_PARAMS [811]
2026.06.05-10:37:05..829..[  247.402850] PVR_K:(Error):   224: PVRSRVRGXKickTA3DKM:   SyncCheckpointCreateFence[TA] failed (PVRSRV_ERROR_INVALID_PARAMS) [4239]
2026.06.05-10:37:05..865..[  250.404159] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off

 

The following GPU error messages may cause the Qt program to crash:

2026.06.05-10:37:05..791..[  247.372235] pvr_sync_file: pvr_sync_create_fence: Failed to open supplied timeline fd (44)
2026.06.05-10:37:05..804..[  247.380602] PVR_K:(Error):   224: SyncCheckpointCreateFence failed to create new fence<00000000499a4e77> for timeline<44> using sync checkpoint

 


SDK:                 ti-processor-sdk-linux-am62xx-evm-10.01.10.04-Linux-x86-Install.bin
Linux kernel: 6.6.58+
GPU driver:    pvrsrvkm.ko (SDK)

  • Hi Dong, 

    Couple of quick questions. Can you share the relevant code that caused the error message? Has this issue occurred on any different SDK versions? What command or operation trigger this? Are you using an EVM or custom hardware?

    Regards,

    Shriya

  • Hi Dong,

    Apart from Shriya's questions to let us better know your setup, for the error log it may indicate there is a function in your system that is constantly opening files but not closing them properly. Could you also double check this point in the meanwhile please?

    Thanks,

    Kevin

  • Hi

    EVM hardware;

    The GPU driver frequently undergoes open/close operations; there is a network thread that broadcasts the opening and closing of the GPU driver, but it fails to assign the network socket file descriptor (fd) to -1. This results in overlap with the GPU driver fd during allocation, followed by a close operation. Consequently, the GPU driver encounters an exception, leading to abnormal interface calls from the host computer and ultimately causing a crash;

    Suggestion: Can the GPU driver internally fix the file descriptor (fd) so that it doesn't change frequently? Frequent changes can lead to fd overlaps, which may be closed by other applications, resulting in exceptions;

  • Hi 

    You are right. It is caused by the overlapping closure of the file descriptor fd in the GPU driver and the application network socket file descriptor fd. It is recommended to fix the file descriptor fd in the GPU driver.

  • total 0
    dr-x------ 2 root root 45 Jul  2 01:16 .
    dr-xr-xr-x 9 root root  0 Jul  2 01:16 ..
    lr-x------ 1 root root 64 Jul  2 01:16 0 -> /dev/null
    l-wx------ 1 root root 64 Jul  2 01:16 1 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 10 -> socket:[7787]
    lrwx------ 1 root root 64 Jul  2 01:16 11 -> socket:[7788]
    lrwx------ 1 root root 64 Jul  2 01:16 12 -> anon_inode:[eventpoll]
    lrwx------ 1 root root 64 Jul  2 01:16 13 -> anon_inode:[timerfd]
    lrwx------ 1 root root 64 Jul  2 01:16 14 -> socket:[7789]
    lrwx------ 1 root root 64 Jul  2 01:16 15 -> /dev/input/event1
    lrwx------ 1 root root 64 Jul  2 01:16 16 -> /dev/input/event0
    lrwx------ 1 root root 64 Jul  2 01:16 17 -> /usr/cm/patdata/PatCase.db
    lrwx------ 1 root root 64 Jul  2 01:16 18 -> /dev/ttyS6
    lrwx------ 1 root root 64 Jul  2 01:16 19 -> /dev/ttyS7
    l-wx------ 1 root root 64 Jul  2 01:16 2 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 20 -> /dev/ttyS7
    lrwx------ 1 root root 64 Jul  2 01:16 21 -> /dev/ttyS3
    lrwx------ 1 root root 64 Jul  2 01:16 22 -> /dev/ttyS4
    l-wx------ 1 root root 64 Jul  2 01:16 23 -> /dev/dsp
    l-wx------ 1 root root 64 Jul  2 01:16 24 -> /dev/mixer
    lrwx------ 1 root root 64 Jul  2 01:16 25 -> socket:[7796]
    lrwx------ 1 root root 64 Jul  2 01:16 26 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 27 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 28 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 29 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 3 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 30 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 31 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 32 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 33 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 34 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 35 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 36 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 37 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 38 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 39 -> /usr/cm/patdata/SystemLog.txt
    lrwx------ 1 root root 64 Jul  2 01:16 4 -> /dev/dri/card0
    lrwx------ 1 root root 64 Jul  2 01:16 40 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 41 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 42 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 43 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 45 -> socket:[7801]
    lrwx------ 1 root root 64 Jul  2 01:16 5 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 6 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 7 -> socket:[7783]
    lrwx------ 1 root root 64 Jul  2 01:16 8 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 9 -> /dev/dri/card0
    total 0
    dr-x------ 2 root root 44 Jul  2 01:16 .
    dr-xr-xr-x 9 root root  0 Jul  2 01:16 ..
    lr-x------ 1 root root 64 Jul  2 01:16 0 -> /dev/null
    l-wx------ 1 root root 64 Jul  2 01:16 1 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 10 -> socket:[7787]
    lrwx------ 1 root root 64 Jul  2 01:16 11 -> socket:[7788]
    lrwx------ 1 root root 64 Jul  2 01:16 12 -> anon_inode:[eventpoll]
    lrwx------ 1 root root 64 Jul  2 01:16 13 -> anon_inode:[timerfd]
    lrwx------ 1 root root 64 Jul  2 01:16 14 -> socket:[7789]
    lrwx------ 1 root root 64 Jul  2 01:16 15 -> /dev/input/event1
    lrwx------ 1 root root 64 Jul  2 01:16 16 -> /dev/input/event0
    lrwx------ 1 root root 64 Jul  2 01:16 17 -> /usr/cm/patdata/PatCase.db
    lrwx------ 1 root root 64 Jul  2 01:16 18 -> /dev/ttyS6
    lrwx------ 1 root root 64 Jul  2 01:16 19 -> /dev/ttyS7
    l-wx------ 1 root root 64 Jul  2 01:16 2 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 20 -> /dev/ttyS7
    lrwx------ 1 root root 64 Jul  2 01:16 21 -> /dev/ttyS3
    lrwx------ 1 root root 64 Jul  2 01:16 22 -> /dev/ttyS4
    l-wx------ 1 root root 64 Jul  2 01:16 23 -> /dev/dsp
    l-wx------ 1 root root 64 Jul  2 01:16 24 -> /dev/mixer
    lrwx------ 1 root root 64 Jul  2 01:16 25 -> socket:[7796]
    lrwx------ 1 root root 64 Jul  2 01:16 26 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 27 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 28 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 29 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 3 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 30 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 31 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 32 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 33 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 34 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 35 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 36 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 37 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 38 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 39 -> /usr/cm/patdata/SystemLog.txt
    lrwx------ 1 root root 64 Jul  2 01:16 4 -> /dev/dri/card0
    lrwx------ 1 root root 64 Jul  2 01:16 40 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 41 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 42 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 43 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 5 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 6 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 7 -> socket:[7783]
    lrwx------ 1 root root 64 Jul  2 01:16 8 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 9 -> /dev/dri/card0
    total 0
    dr-x------ 2 root root 62 Jul  2 01:16 .
    dr-xr-xr-x 9 root root  0 Jul  2 01:16 ..
    lr-x------ 1 root root 64 Jul  2 01:16 0 -> /dev/null
    l-wx------ 1 root root 64 Jul  2 01:16 1 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 10 -> socket:[7787]
    lrwx------ 1 root root 64 Jul  2 01:16 11 -> socket:[7788]
    lrwx------ 1 root root 64 Jul  2 01:16 12 -> anon_inode:[eventpoll]
    lrwx------ 1 root root 64 Jul  2 01:16 13 -> anon_inode:[timerfd]
    lrwx------ 1 root root 64 Jul  2 01:16 14 -> socket:[7789]
    lrwx------ 1 root root 64 Jul  2 01:16 15 -> /dev/input/event1
    lrwx------ 1 root root 64 Jul  2 01:16 16 -> /dev/input/event0
    lrwx------ 1 root root 64 Jul  2 01:16 17 -> /usr/cm/patdata/PatCase.db
    lrwx------ 1 root root 64 Jul  2 01:16 18 -> /dev/ttyS6
    lrwx------ 1 root root 64 Jul  2 01:16 19 -> /dev/ttyS7
    l-wx------ 1 root root 64 Jul  2 01:16 2 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 20 -> /dev/ttyS7
    lrwx------ 1 root root 64 Jul  2 01:16 21 -> /dev/ttyS3
    lrwx------ 1 root root 64 Jul  2 01:16 22 -> /dev/ttyS4
    l-wx------ 1 root root 64 Jul  2 01:16 23 -> /dev/dsp
    l-wx------ 1 root root 64 Jul  2 01:16 24 -> /dev/mixer
    lrwx------ 1 root root 64 Jul  2 01:16 25 -> socket:[7796]
    lrwx------ 1 root root 64 Jul  2 01:16 26 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 27 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 28 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 29 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 3 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 30 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 31 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 32 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 33 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 34 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 35 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 36 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 37 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 38 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 39 -> /usr/cm/patdata/SystemLog.txt
    lrwx------ 1 root root 64 Jul  2 01:16 4 -> /dev/dri/card0
    lrwx------ 1 root root 64 Jul  2 01:16 40 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 41 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 42 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 43 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 44 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 45 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:18 46 -> /usr/cm/patdata/PatCase.db-journal
    lrwx------ 1 root root 64 Jul  2 01:18 47 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 48 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 49 -> /usr/cm/patdata/2025070200080/PhyAlm_PAlarm1.bin
    lrwx------ 1 root root 64 Jul  2 01:16 5 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:18 50 -> /usr/cm/patdata/2025070200080/vcm_Paw_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 51 -> /usr/cm/patdata/2025070200080/vcm_Flow_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 52 -> /usr/cm/patdata/2025070200080/vcm_Vol_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 53 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 54 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 55 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 56 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 57 -> /dev/dri/renderD128
    lr-x------ 1 root root 64 Jul  2 01:18 58 -> anon_inode:sync_file
    lrwx------ 1 root root 64 Jul  2 01:16 6 -> /dev/dri/renderD128
    lr-x------ 1 root root 64 Jul  2 01:18 62 -> anon_inode:sync_file
    lr-x------ 1 root root 64 Jul  2 01:18 63 -> anon_inode:sync_file
    lr-x------ 1 root root 64 Jul  2 01:18 64 -> anon_inode:sync_file
    lrwx------ 1 root root 64 Jul  2 01:16 7 -> socket:[7783]
    lrwx------ 1 root root 64 Jul  2 01:16 8 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 9 -> /dev/dri/card0
    total 0
    dr-x------ 2 root root 60 Jul  2 01:16 .
    dr-xr-xr-x 9 root root  0 Jul  2 01:16 ..
    lr-x------ 1 root root 64 Jul  2 01:16 0 -> /dev/null
    l-wx------ 1 root root 64 Jul  2 01:16 1 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 10 -> socket:[7787]
    lrwx------ 1 root root 64 Jul  2 01:16 11 -> socket:[7788]
    lrwx------ 1 root root 64 Jul  2 01:16 12 -> anon_inode:[eventpoll]
    lrwx------ 1 root root 64 Jul  2 01:16 13 -> anon_inode:[timerfd]
    lrwx------ 1 root root 64 Jul  2 01:16 14 -> socket:[7789]
    lrwx------ 1 root root 64 Jul  2 01:16 15 -> /dev/input/event1
    lrwx------ 1 root root 64 Jul  2 01:16 16 -> /dev/input/event0
    lrwx------ 1 root root 64 Jul  2 01:16 17 -> /usr/cm/patdata/PatCase.db
    lrwx------ 1 root root 64 Jul  2 01:16 18 -> /dev/ttyS6
    lrwx------ 1 root root 64 Jul  2 01:16 19 -> /dev/ttyS7
    l-wx------ 1 root root 64 Jul  2 01:16 2 -> /dev/console
    lrwx------ 1 root root 64 Jul  2 01:16 20 -> /dev/ttyS7
    lrwx------ 1 root root 64 Jul  2 01:16 21 -> /dev/ttyS3
    lrwx------ 1 root root 64 Jul  2 01:16 22 -> /dev/ttyS4
    l-wx------ 1 root root 64 Jul  2 01:16 23 -> /dev/dsp
    l-wx------ 1 root root 64 Jul  2 01:16 24 -> /dev/mixer
    lrwx------ 1 root root 64 Jul  2 01:16 25 -> socket:[7796]
    lrwx------ 1 root root 64 Jul  2 01:16 26 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 27 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 28 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 29 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 3 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 30 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 31 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 32 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 33 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 34 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 35 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 36 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 37 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 38 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 39 -> /usr/cm/patdata/SystemLog.txt
    lrwx------ 1 root root 64 Jul  2 01:16 4 -> /dev/dri/card0
    lrwx------ 1 root root 64 Jul  2 01:16 40 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 41 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 42 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 43 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:16 45 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:18 46 -> /usr/cm/patdata/PatCase.db-journal
    lrwx------ 1 root root 64 Jul  2 01:18 47 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 48 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 49 -> /usr/cm/patdata/2025070200080/PhyAlm_PAlarm1.bin
    lrwx------ 1 root root 64 Jul  2 01:16 5 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:18 50 -> /usr/cm/patdata/2025070200080/vcm_Paw_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 51 -> /usr/cm/patdata/2025070200080/vcm_Flow_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 52 -> /usr/cm/patdata/2025070200080/vcm_Vol_Wave1.bin
    lrwx------ 1 root root 64 Jul  2 01:18 53 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 54 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 55 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 56 -> anon_inode:[eventfd]
    lrwx------ 1 root root 64 Jul  2 01:18 57 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 6 -> /dev/dri/renderD128
    lr-x------ 1 root root 64 Jul  2 01:18 62 -> anon_inode:sync_file
    lr-x------ 1 root root 64 Jul  2 01:18 63 -> anon_inode:sync_file
    lr-x------ 1 root root 64 Jul  2 01:18 64 -> anon_inode:sync_file
    lrwx------ 1 root root 64 Jul  2 01:16 7 -> socket:[7783]
    lrwx------ 1 root root 64 Jul  2 01:16 8 -> /dev/dri/renderD128
    lrwx------ 1 root root 64 Jul  2 01:16 9 -> /dev/dri/card0

    lrwx------ 1 root root 64 Jul  2 01:16 45 -> /dev/dri/renderD128

    The file descriptor of the node /dev/dri/renderD128 is constantly changing dynamically

  • lrwx------ 1 root root 64 Jul 2 01:16 45 -> /dev/dri/renderD128
    The issue is that fd=45, which was originally a sockfd created by the host computer, was not set to -1 after being closed. This led to the host computer incorrectly determining that sockfd>1 when switching network types later, and closing it again. However, 44 had already been reallocated by the kernel to another resource (/dev/dri/renderD128), resulting in the accidental release of that resource.

  • Hi Dongliang,

    The file descriptors are dynamically allocated by the kernel. The correct modification should be made at the application layer: Standardize Socket Closure Management: In the network thread, after executing close(socket_fd);, this variable must immediately be explicitly reset: socket_fd = -1;.

    Do you still see any error if following the above method?

    Thanks,

    Kevin

  • Hi Kevin,
    The application layer normally closes the file descriptor fd and sets it to -1, which has resolved the issue;
    However, there is still a significant risk associated with the GPU driver repeatedly opening the file descriptor fd; it remains to be seen whether the driver can be optimized. Specifically, we need to examine the file descriptor fd in the driver module "pvrsrvkm.ko"

  • Hi Dongliang,
    Thank you for your feedback regarding the driver behavioral risk. Regarding your suggestion to fix/optimize fd allocation in the GPU driver, we would like to provide some technical context:
    1. Kernel-Level fd Management: In Linux, the Virtual File System (VFS) handles the allocation and recycling of file descriptors, assigning the lowest available number. A driver cannot force a specific fd number.
    2. High-Frequency fd Operations: The rapidly changing anon_inode:sync_file (Synchronization Fences) observed are standard for explicit synchronization in modern Linux DRM/KMS graphics architectures. This dynamic allocation/release is expected behavior, not a driver defect.
    3. System Stability: Because the kernel recycles fds immediately, preventing conflicts relies on the application layer following the standard of resetting the fd variable to -1 immediately after close().
    Therefore, your fix of resetting the variable to -1 is the correct, standard solution, and no changes are required on the driver side.
    Thanks,
    Kevin