Le 15/09/2026 à 17:57, Kumar, Udit a écrit :


On 9/15/2026 7:29 PM, Richard GENOUD wrote:
+        k3_ddrss_lpddr4_exit_low_power(dev, &regs);
+
+        do_resume();

could you check, if caches can be enabled before do_resume() call
I've tested that on j7200 and j784s4, and it fails at resume:
U-Boot SPL 2026.10-rc2-00046-g31003eca655b-dirty (Sep 15 2026 - 15:52:55
+0200)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.12--v11.02.12 (Fancy Rat)')
Initialized 4 DRAM controllers
Skipping authentication on GP device
Starting ATF on ARM64 core...


You need to flush caches before starting DM
I did that and it failed in the same way.
I dug more in the PDK, and I found that at startup, it does unconditionally:
__attribute__((section(".startupCode"))) static void _enable_cache(void)
{
    CSL_armR5StartupCacheEnableAllCache( CSL_CACHE_DISABLE );      /* Disable 
I/D caches */
    CSL_armR5StartupCacheEnableForceWrThru( CSL_CACHE_DISABLE );   /* Disable 
force write-thru */
    CSL_armR5StartupCacheInvalidateAllCache();     /* Invalidate I/D caches */
    CSL_armR5StartupCacheEnableAllCache( CSL_CACHE_ENABLE );      /* Enable I/D 
caches */
}


Whereas for the mcu_plus / J722s, the case with caches enabled is dealt
with in:

    enabled = CacheP_getEnabled();

    /* disable the caches if anything is currently enabled */
    if (enabled!=0U) {
        CacheP_disable((uint32_t)CacheP_TYPE_ALL);
    }

    /* set DLFO, this is not needed on SOC AM64x and later SOCs */
    /* CacheP_setDLFO(); */

    if (gCacheConfig.enable!=0U) {
         CacheP_configForceWrThru(gCacheConfig.enableForceWrThru);

        /*
         * CacheP_enable() code will invalidate the L1D and L1P caches.
         * Therefore, no need to explicitly invalidate the cache here.
         */
        CacheP_enable((uint32_t)CacheP_TYPE_ALL);
    }




[   82.967460] Enabling non-boot CPUs ...
ERROR:   Timeout waiting for thread RX_SECURE_TRANSPORT_CHANNEL_ID to fill
ERROR:   Thread RX_SECURE_TRANSPORT_CHANNEL_ID verification failed (-60)
ERROR:   Message receive failed (-60)
ERROR:   Failed to get response (-60)
ERROR:   Transfer send failed (-60)
ERROR:   Request to start core failed: -60
[   83.998938] psci: failed to boot CPU1 (-22)
[   84.003168] CPU1: failed to boot: -22
[   84.006989] Error taking CPU1 up: -22



--
Richard Genoud, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Reply via email to