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.

TDA4VM: Linux kernel: mmc0: running CQE recovery.

Part Number: TDA4VM

Tool/software:

SDK: 0902
Board TDA4_EVM

Hi Ti expert

My SBL is started on opsi, but I use the emmc interface to read some configuration information in sbl. After reading, the following error appears during the Linux kernel startup: mmc0: running CQE recovery

I learned from E2E that tda4vm only supports HS200 mode, but I found in the device tree that emmc is in HS200 mode:


This is my EMMC read and write interface:



Pls help and check this error.

Regards
Eason

  • Hi Eason,

    Can you try using the latest PDK(10.01.00.04) as the PDK(0902) has issues with eMMC..

    Regards

    Gokul

  • Hi Gokul
    Thanks for your reply

    using the latest PDK(10.01.00.04)
    Our project has now stabilized at version 0902 and cannot be upgraded to the latest SDK. Is there any other temporary solution to circumvent this?

    Regards
    Eason

  • Hi Gokul

    Any suggestion?

    Regards
    Eason

  • Hi Eason,

    Sorry for the late reply

    use the emmc interface to read some configuration information in sb

    Can you elaborate more on this,like

    • The changes made in code and where these changes have been made(is it in sbl code or linux kernel).
    • Can you explain more on what configuration information is being read from emmc and the purpose of reading it.
    • What is the boot flow you are using (optimized / development flow of SBL).
    • You are using TI J721E EVM ,right ?
    • Are you testing this at normal temperature or any other temperature?

    Also,can you just try testing the same by configuring it on lower speed modes like legacy speed mode and see if this issue is reproduced.

    Regards

    Gokul

  • Hi Gokui

    Thanks for your reply

    The changes made in code and where these changes have been made(is it in sbl code or linux kernel).

    The mode in SBL and linux kernel both HS200 mode, I have not made any changes to the emmc registers。

    Can you explain more on what configuration information is being read from emmc and the purpose of reading it.

    I want to OTA.  This is a long story. My mcu1_0 is running in (OSPI DAC  mode) (XIP),and I want to upgrade mcu1_0, but I don't want to switch the boot mode to upgrade (EMMC or SD).  

    When OSPI is in DAC mode, mcu1_0 can read and write ospi flash at the same time when xip is running, so it can be upgraded, but TI experts did not respond to this. Link:  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1475126/tda4vm-uboot-disable-mcu1_0

    So now I want to use emmc, store the flag of whether to upgrade in emmc, and store the mcu1_0 firmware that needs to be upgraded in emmc. SBL reads the upgrade flag in emmc at startup. If an upgrade is required, the firmware in emmc is read out and written to ospi, and the upgrade flag is updated.

    This is easy to do in SBL and I have already done it. 

    However, because I read and write emmc in sql, "mmc0: running CQE recovery" appears when the linux kernel starts, and the kernel startup fails.

    You are using TI J721E EVM ,right ?

     Yes

    Are you testing this at normal temperature or any other temperature?
    I tried both DDR and HS200 modes, but the phenomenon is the same.



    Regards
    Eason

  • Hi Eason,

    So now I want to use emmc, store the flag of whether to upgrade in emmc, and store the mcu1_0 firmware that needs to be upgraded in emmc. SBL reads the upgrade flag in emmc at startup. If an upgrade is required, the firmware in emmc is read out and written to ospi, and the upgrade flag is updated.

    It is mostly likely that since you have made custom changes to the sbl code to support read and write from emmc while sbl boots in ospi mode,the eMMC is mostly going into a bad state due to improper shutdown.

    Hence,since the eMMC is not in a proper state , the kernel shows "CQE recovery error" .

    Regards

    Gokul

  • Hi Gokul

    Thanks for your reply

    It is mostly likely that since you have made custom changes to the sbl code to support read and write from emmc while sbl boots in ospi mode,the eMMC is mostly going into a bad state due to improper shutdown.

    Hence,since the eMMC is not in a proper state , the kernel shows "CQE recovery error"

    Is there any other temporary solution to circumvent this?



    Now I modify this to put emmc into high speed mode, and the same error appears: "mmc0: running CQE recovery"
    But the failure rate of kernel startup is greatly reduced, so is there any other modification that can put EMMC into a lower speed mode?


    Regards
    Eason





  • Hi Eason,

    ow I modify this to put emmc into high speed mode, and the same error appears: "mmc0: running CQE recovery" But the failure rate of kernel startup is greatly reduced, so is there any other modification that can put EMMC into a lower speed mod

    Even though the failure rate might have reduced,the eMMC is still in a bad state and hence issue will occur.

    Is there any other temporary solution to circumvent this?

    Since we haven't tried out this feature yet,I cannot really comment on this, Eason.

    Regards

    Gokul

  • Hi Gokul

    Ok, Thanks for your reply.

    Regards
    Eason