This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4AH-Q1: The TDA4VH GPU initialization FW failure when using 64KB kernel page table

Part Number: TDA4AH-Q1

HI ,Erick

      Previously, we encountered a problem with GPU initialization firmware failure in this thread :TDA4VH-Q1: TDA4VH GPU init FW failed - Processors forum - Processors - TI E2E support forums . I don’t have a record of the problem reoccurring after we modified the page table to be 64KB. But today, we encountered this issue again during the debugging process on the vehicle. Does the variation in voltage, current or other hardware environment have an impact on GPU firmware initialization? 

      We are conducting tests both on the vehicle and on the test bench to verify the impact of the environment.

Best, Regards

Alex

  • Hello Alex,

    Does the variation in voltage, current or other hardware environment have an impact on GPU firmware initialization? 

    It can, the GPU expects the stable voltage/current/frequency. The initialization of the GPU includes powering on multiple subsystems within the GPU, and if there are unexpected disturbances in the power, there could be issues.

    Please let me know further details if you get logs of these issues. Console output is the first, then a "pvrlogdump" would be next. There are flags to enable firmware logs that can enable further details of the power-up sequence if we need.

    Regards,

    Erick

  • Hi Erick

    We use SDK8.6, SBL boot mode.  The current approach is to insmod the GPU driver after Linux has finished booting.

    When a problem occurs, the console output is as follows.

    [20231111_08:33:19_801]#Support EGL_MESA_platform_surfaceless! 
    [20231111_08:33:20_324]#[    8.855914] PVR_K:(Error):   756: PollForValueKM: Timeout. Expected 0x1 but found 0x0 (mask 0xffffffff). [2928]
    [20231111_08:33:20_328]#[    8.865992] PVR_K:(Error):   756: PVRSRVPollForValueKM: Failed! Error(PVRSRV_ERROR_TIMEOUT) CPU linear address(00000000c0b9aaf1) Expected value(1) [2955]
    [20231111_08:33:20_328]#[    8.879953] ------[ Native Fence Sync: timelines ]------
    [20231111_08:33:20_328]#[    8.885258] foreign_sync: @0 ctx=1 refs=1
    [20231111_08:33:20_345]#[    8.889881] PVR_K:(Error):   756: RGXPostPowerState: Polling for 'FW started' flag failed. [1003]
    [20231111_08:33:20_499]#[    9.039879] PVR_K:(Error):   756: PVRSRVDeviceFinalise: Failed to set device 00000000c0b5e416 power state to 'on' (PVRSRV_ERROR_TIMEOUT) [2775]
    [20231111_08:33:20_526]#[    9.052727] PVR_K:(Error):   756: PVRSRVDeviceFinalise() failed (PVRSRV_ERROR_TIMEOUT) in PVRSRVCommonDeviceInitialise() [2226]
    [20231111_08:33:20_526]#[    9.064186] PVR_K:(Error):   756: PVRSRVDeviceOpen: Failed to initialise device (PVRSRV_ERROR_TIMEOUT) [476]
    [20231111_08:33:20_533]#libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri[    9.074833] PVR_K:(Error):   756: PVRSRVDeviceOpen: Driver already in bad state. Device open failed. [464]
    [20231111_08:33:20_544]#/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/dri)
    [20231111_08:33:20_544]#
    [20231111_08:33:20_571]#libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/dri)
    

    How to enable details of power-up sequence?

    Best Regards

    Alex

  • Alex,

    Before you insmod the GPU driver, can you please run this command:

    insmod pvrsrvkm gPVRDebugLevel=255
    OR

    PVR_SRVKM_PARAMS="gPVRDebugLevel=255" /etc/init.d/rc.pvr start

    Either of these commands will work, whichever you are using to initialize the GPU. They will dump many logs out, it will help to capture the console output when this issue occurs with the verbose log settings. Please send those to us if it replicates.

    Regards,

    Erick

  • Hi Erick

    After adding “insmod pvrsrvkm gPVRDebugLevel=255”, we reproduced the issue again, and the log is as follows:

    [   12.387402] PVR_K:(Error):   783: PollForValueKM: Timeout. Expected 0x1 but found 0x0 (mask 0xffffffff). [2928]
    [   12.397478] PVR_K:(Error):   783: PVRSRVPollForValueKM: Failed! Error(PVRSRV_ERROR_TIMEOUT) CPU linear address(00000000facaeeeb) Expected value(1) [2955]
    [   12.411435] ------[ Native Fence Sync: timelines ]------
    [   12.416738] foreign_sync: @0 ctx=1 refs=1
    [   12.421345] PVR_K:(Error):   783: RGXPostPowerState: Polling for 'FW started' flag failed. [1003]
    [   12.575822] PVR_K:(Error):   783: PVRSRVDeviceFinalise: Failed to set device 0000000059632a71 power state to 'on' (PVRSRV_ERROR_TIMEOUT) [2775]
    [   12.588668] PVR_K:(Error):   783: PVRSRVDeviceFinalise() failed (PVRSRV_ERROR_TIMEOUT) in PVRSRVCommonDeviceInitialise() [2226]
    [   12.600126] PVR_K:(Error):   783: PVRSRVDeviceOpen: Failed to initialise device (PVRSRV_ERROR_TIMEOUT) [476]
    libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri[   12.610839] PVR_K:(Error):   783: PVRSRVDeviceOpen: Driver already in bad state. Device open failed. [464]
    /swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/dri)
    
    libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/dri)
    

    Best Regards

    Alex

  • HI Erick

    During this reproduction process, we encountered another type of exception printing. Let’s see if it helps with troubleshooting the issue.

    [   11.900755] PVR_K:(Error):   793: RGXAlignmentCheck: Mismatching sizes of RGXFW_ALIGN_CHECKS_INIT array between UM(43) and FW(0) [1899]
    ( 793) PVR:(Error): BridgeAlignmentCheck() failed (PVRSRV_ERROR_INVALID_ALIGNMENT) in _AlignmentCheck() [ :150 ]
    libEGL warning: DRI2: failed to create dri screen
    libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/dri)

    Best Regards

    Alex

  • Alex,

    The setting seems to not have applied correctly. With these debug steps, you should see your console filled with many debug messages showing each step of the GPU firmware. However, I don't see that in your logs. Are you sure the GPU driver has not loaded automatically? Can you please follow the steps to blacklist the GPU driver?

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1218307/faq-how-can-i-analyze-a-gpu-graphics-process-unit-driver-or-hardware-issue

    This will ensure that the GPU driver is not loaded. Then, you can add the verbose debug level to the init script.


    PVR_SRVKM_PARAMS="gPVRDebugLevel=255" /etc/init.d/rc.pvr start

    Regards,

    Erick