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.

AM5728: RTOS diagnostics mem test error (4 GB RAM)

Part Number: AM5728

Hi,

We are working on a custom board based on AM5728.  

Custom board has 4GB RAM.

We have changed following in ccs code:

1. AM572x_ddr_config.gel file with values generated from EMIF Tool.

2. Updated AM572x_pad_config.gel file.

and Updated packages/ti/board/diag/mem/src/mem_test.c for 4 GB support.

We are running mem test through CCS on custom board and getting following prints

*********************************************
*              DDR Memory Test              *
*********************************************

Testing writing and reading memory

mem test : 413
board_external_memory_test: Start address1 (0x800000)
First 2 GB
Writing to test area...
        Write up to 0x80000000 done
        Write up to 0x90000000 done
        Write up to 0xa0000000 done
        Write up to 0xb0000000 done
        Write up to 0xc0000000 done
        Write up to 0xd0000000 done
        Write up to 0xe0000000 done
        Write up to 0xf0000000 done
Write finished!
Checking values...
        Read up to 0x80000000 okay
        Read up to 0x90000000 okay
        Read up to 0xa0000000 okay
        Read up to 0xb0000000 okay
        Read up to 0xc0000000 okay
        Read up to 0xd0000000 okay
        Read up to 0xe0000000 okay
        Read up to 0xf0000000 okay
board_memory_test: Failed at address index = 0xff0000
board_external_memory_test: Start address2 (0x000000)
Next 2 GB
Writing to test area...
        Write up to 0x00000000 done
        Write up to 0x10000000 done
        Write up to 0x20000000 done
        Write up to 0x30000000 done
        Write up to 0x40000000 done

1. It is showing read error in last 16 MB of first 2 GB segment. (0xff000000 - 0xffffffff). Also we are not able to write this 16 MB segment from memory browser.

2. It is showing starting address of last 2GB segment as 0x00000000 but we have configured start address as 0x200000000 in code. Why it is showing 0x00000000. 

We are also not able to access address 0x200000000 from memory browser.

  • Hi,

    It is showing starting address of last 2GB segment as 0x00000000 but we have configured start address as 0x200000000 in code. Why it is showing 0x00000000.

    Can you put a breakpoint in the code and see which address is actually passing into the write function.

    We are also not able to access address 0x200000000 from memory browser.

    Can you check Memory Map section in CCS and confirm all addresses are initializing. You have to do the memory map in gel files as well.

  • Hi Anubhav,

    1) I have changed the mem_test.c to support the 4 GB memory test.  Please find the changed file attached.

    Can you put a breakpoint in the code and see which address is actually passing into the write function.

    2) I have checked the addresses passing into the write function. we are getting the following values in CCS :

    Start Address : 8589934592

    End Address : 10737418239

    Values are correct but it is getting hang while testing extended 2 GB. 

    Below is the output of mem test.

    *********************************************
    *              DDR Memory Test (2GB + Extended 2GB)              *
    *********************************************
    
    Testing writing and reading memory
    
     TESTING FIRST 2 GB - 32BIT ADDRESSES 
    board_external_memory_test: Start address1 (0x0080000000),            end address (0x00ffffffff)
    	TEST PRINT 594
    First test started
    Writing to test area...
    	Write up to 0x80000000 done
    	Write up to 0x90000000 done
    	Write up to 0xa0000000 done
    	Write up to 0xb0000000 done
    	Write up to 0xc0000000 done
    	Write up to 0xd0000000 done
    	Write up to 0xe0000000 done
    	Write up to 0xf0000000 done
    Write finished!
    Checking values...
    	Read up to 0x80000000 okay
    	Read up to 0x90000000 okay
    	Read up to 0xa0000000 okay
    	Read up to 0xb0000000 okay
    	Read up to 0xc0000000 okay
    	Read up to 0xd0000000 okay
    	Read up to 0xe0000000 okay
    	Read up to 0xf0000000 okay
    board_memory_test32: Failed at address index = 0xff000000                                             value = 0x0 *(index) = 0x0
    Board memory test failed!
    
     TESTING SECOND 2 GB - 64BIT ADDRESSES 
    
     Printf complication due to UART_printf not supporting 64-bit 
    board_external_memory_test: Start address (0xa00000002),            end address (0x000000000)
    First test started
    Writing to test area...
    	Write up to 0xa00000002 done
    	Write up to 0xa00000002 done
    	Write up to 0xa00000002 done
    	Write up to 0xa00000002 done
    	Write up to 0xa00000002 done

    Can you check Memory Map section in CCS and confirm all addresses are initializing. You have to do the memory map in gel files as well.

    3) I have added extended 2 GB memory map in gpevm_am572x.gel. But it is showing error while initializing extended memory. Do I need to change something else ?

    Memory map changes :

    memorymap_init()
    {
        GEL_MapAddStr(0x00000000, 0, 0x20000000, "R|W|AS4", 0);     /* GPMC */
        GEL_MapAddStr(0x20000000, 0, 0x10000000, "R|W|AS4", 0);     /* PCIe */
    
        GEL_MapAddStr(0x40038000, 0, 0x0000C000, "R|AS4", 0);       /* Public ROM - 48KBytes */
    
        GEL_MapAddStr(0x402F0000, 0, 0x00010000, "R|W|AS4", 0);     /* MPU RAM - 48KBytes */
        GEL_MapAddStr(0x40300000, 0, 0x00080000, "R|W|AS4", 0);     /* OCMRAM1 -  */
        GEL_MapAddStr(0x40400000, 0, 0x00200000, "R|W|AS4", 0);     /* OCMRAM 2+3  */
    
        // DSP1/2
        GEL_MapAddStr(0x40800000, 0, 0x00808000, "R|W|AS4", 0);     /* FULL DSP1  */
        GEL_MapAddStr(0x41000000, 0, 0x00808000, "R|W|AS4", 0);     /* FULL DSP2  */
    
        // OCMRAM CBUF
        GEL_MapAddStr(0x41800000, 0, 0x02000000, "R|W|AS4", 0);     /* CBUF  */
    
        //edma, tpcc, ...
        GEL_MapAddStr(0x43300000, 0, 0x00300000, "R|W|AS4", 0);     /* EDMA */
        GEL_MapAddStr(0x43a00000, 0, 0x00040000, "R|W|AS4", 0);     /* OCMCROM */
    
        // L3MAIN, L4s
        GEL_MapAddStr(0x44000000, 0, 0x01800000, "R|W|AS4", 0);     /* L3 main1 */
        GEL_MapAddStr(0x45800000, 0, 0x00040000, "R|W|AS4", 0);     /* MCASP1 */
        GEL_MapAddStr(0x47000000, 0, 0x01000000, "R|AS4", 0);       /* STM - 16MBytes */
    
        GEL_MapAddStr(0x48000000, 0, 0x00200000, "R|W|AS4", 0);     /* L4PER1 */
        GEL_MapAddStr(0x48210000, 0, 0x00040000, "R|W|AS4", 0);     /* MPU  */
        GEL_MapAddStr(0x48250000, 0, 0x000A0000, "R|W|AS4", 0);     /* MPU  */
        GEL_MapAddStr(0x48970000, 0, 0x00040000, "R|W|AS4", 0);     /* MPU  */
        GEL_MapAddStr(0x48400000, 0, 0x00C00000, "R|W|AS4", 0);     /* L4PER2+3 */
        GEL_MapAddStr(0x49000000, 0, 0x01000000, "R|W|AS4", 0);     /* OCMCRAM CBUF 2 + 3 */
        GEL_MapAddStr(0x4A000000, 0, 0x00E00000, "R|W|AS4", 0);     /* L4CFG */
        GEL_MapAddStr(0x4AE00000, 0, 0x00200000, "R|W|AS4", 0);     /* L4WKUP */
    
        GEL_MapAddStr(0x4B200000, 0, 0x00080000, "R|W|AS4", 0);     /* PRUSS 1*/
        GEL_MapAddStr(0x4B280000, 0, 0x00080000, "R|W|AS4", 0);     /* PRUSS 2*/
        GEL_MapAddStr(0x4B300000, 0, 0x00100000, "R|W|AS4", 0);     /* QSPI */
    
        //emif/DMM, ...
        GEL_MapAddStr(0x4C000000, 0, 0x03000000, "R|W|AS4", 0);     /* EMIF1/2, DMM */
        GEL_MapAddStr(0x50000000, 0, 0x01000000, "R|W|AS4", 0);     /* GPMC */
        GEL_MapAddStr(0x51000000, 0, 0x00800000, "R|W|AS4", 0);     /* PCIESS1 */
        GEL_MapAddStr(0x54000000, 0, 0x00800000, "R|W|AS4", 0);     /* L3INSTR */
        GEL_MapAddStr(0x54800000, 0, 0x00800000, "R|W|AS4", 0);     /* DEBUGSS */
        GEL_MapAddStr(0x54140000, 0, 0x00800000, "R|W|AS4", 0);     /* DEBUGSS CONFIG*/
        GEL_MapAddStr(0x56000000, 0, 0x02000000, "R|W|AS4", 0);     /* GPU */
        GEL_MapAddStr(0x55000000, 0, 0x00800000, "R|W|AS4", 0);     /* IPU2 */
        GEL_MapAddStr(0x58000000, 0, 0x00800000, "R|W|AS4", 0);     /* DSS */
        GEL_MapAddStr(0x58800000, 0, 0x00800000, "R|W|AS4", 0);     /* IPU1 */
        GEL_MapAddStr(0x5a000000, 0, 0x01400000, "R|W|AS4", 0);     /* IVA Global */
    
        // Space addressing - big memories here
        GEL_MapAddStr(0x5c000000, 0, 0x04000000, "R|W|AS4", 0);     /* QSPI */
        GEL_MapAddStr(0x60000000, 0, 0x20000000, "R|W|AS4", 0);     /* DMM, tiled area */
        GEL_MapAddStr(0x80000000, 0, 0x80000000, "R|W|AS4", 0);     /* DDR Area */
        GEL_MapAddStr(0x200000000, 0, 0x80000000, "R|W|AS4", 0);     /* Extended DDR Area */
    }
    

    memory map error :

    1. It is showing read error in last 16 MB of first 2 GB segment. (0xff000000 - 0xffffffff). Also we are not able to write this 16 MB segment from memory browser.

    4) Also, why it is showing an error in reading the last 16 MB of the first 2GB section.

    
    
    
    
    
    /* **************************	
    
    		DARSH
    
    
    ************************************* */
    
    
    /*
     * Copyright (c) 2015-2020, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
     
    /**
     *  \file   mem_test.c
     *
     *  \brief  DDR diagnostic test main file
     *
     *  This file implements the DDR memory test function to verify the DDR
     *  memory access by writing a test pattern to all the locations and reading
     *  the same for verification.
     *
     */
    
    #include <ti/drv/uart/UART_stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include "board.h"
    #include "board_cfg.h"
    #if (defined(SOC_AM65XX) || defined(SOC_J721E))
    #include "diag_common_cfg.h"
    #endif
    
    #define BIT_COUNT		(32)
    #define ONE			    (0x00000001)
    #define MSG_FREQ        (0xFFFFFFc)
    
    #define BOARD_DDR1_START_ADDR (BOARD_DDR31_START_ADDR)
    #define BOARD_DDR1_END_ADDR   (BOARD_DDR31_END_ADDR)
    #define BOARD_DDR1_SIZE       (BOARD_DDR31_SIZE)
    #define BOARD_DDR2_START_ADDR (BOARD_DDR32_START_ADDR)
    #define BOARD_DDR2_END_ADDR   (BOARD_DDR32_END_ADDR)
    #define BOARD_DDR2_SIZE       (BOARD_DDR32_SIZE)
    
    #define BOARD_DIAG_MEM_LWORD_SPLIT(lw) ((lw >> 32) & 0xFFFFFFFF), (lw & 0xFFFFFFFF)
    
    char rdBuf = 'y';
    
    /**
     * \brief  Memory test for extended access beyond 2GB
     *
     * This function verifies the DDR memory  access by writing a data
     * and its compliment to all the locations and reading the same for
     * verification.
     *
     * \param   start_address  [IN]   Starting address of the DDR memory
     * \param   end_address    [IN]   Ending address of the DDR memory
     *
     * \return  int32_t
     *              0  - In case of success
     *             -1  - In case of failure
     *
     */
    static inline int32_t board_memory_test64 (uint64_t start_address, uint64_t end_address)
    {
        uint64_t index;
        uint64_t value = 0;
        uint64_t lsb = 0;
        uint64_t msb = 4;
    
        UART_printf("First test started\n");
        UART_printf("Writing to test area...\n");
    
        /* Write a pattern */
        for (index = start_address; (index >= start_address) && (index < end_address); index += 8)
        {
            value = ((msb << 32) | lsb);
    
            *(uint64_t *)index = value;
    
            if (!(index & (uint32_t)MSG_FREQ))
            {
                UART_printf("\tWrite up to 0x%x%08x done\n", BOARD_DIAG_MEM_LWORD_SPLIT(index));
            }
    
            msb += 8;
            lsb += 8;
        }
    
        UART_printf("Write finished!\n");
        UART_printf("Checking values...\n");
    
        /* Read and check the pattern */
        msb     = 4;
        lsb     = 0;
        for (index = start_address;  (index >= start_address) && (index < end_address); index += 8)
        {
            value = *(uint64_t *)index;
    
            if((value != ((msb << 32) | lsb)))
            {
                UART_printf("board_memory_test64: Failed at address index = 0x%x%08x value = 0x%x%08x\n",
                            BOARD_DIAG_MEM_LWORD_SPLIT(index),
                            BOARD_DIAG_MEM_LWORD_SPLIT(value));
                return (-1);
            }
    
            if (!(index & MSG_FREQ))
            {
                UART_printf("\tRead up to 0x%x%08x done\n", BOARD_DIAG_MEM_LWORD_SPLIT(index));
            }
    
            msb += 8;
            lsb += 8;
        }
    
        UART_printf("\nSecond test started\n");
        UART_printf("Writing complementary values to test area...\n");
        msb     = 4;
        lsb     = 0;
        /* Write a pattern for complementary values */
        for (index = start_address; (index >= start_address) && (index < end_address); index += 8)
        {
            value = ((msb << 32) | lsb);
    
            *(uint64_t *)index = ~value;
    
            if (!(index & MSG_FREQ))
            {
                UART_printf("\tWrite up to 0x%x%08x done\n", BOARD_DIAG_MEM_LWORD_SPLIT(index));
            }
    
            msb += 8;
            lsb += 8;
        }
    
        UART_printf("Write finished!\n");
        UART_printf("Checking values...\n");
        /* Read and check the pattern */
        msb     = 4;
        lsb     = 0;
        for (index = start_address;  (index >= start_address) && (index < end_address); index += 8)
        {
            value = *(uint64_t *)index;
    
            if((~value != ((msb << 32) | lsb)))
            {
                UART_printf("board_memory_test64: Failed at address index = 0x%x%08x value = 0x%x%08x\n",
                            BOARD_DIAG_MEM_LWORD_SPLIT(index),
                            BOARD_DIAG_MEM_LWORD_SPLIT(value));
                return (-1);
            }
    
            if (!(index & MSG_FREQ))
            {
                UART_printf("\tRead up to 0x%x%08x done\n", BOARD_DIAG_MEM_LWORD_SPLIT(index));
            }
    
            msb += 8;
            lsb += 8;
        }
    
        return 0;
    }
    /**
     * \brief  walking0s test function
     *
     * This function verifies the DDR memory  access by writing a address
     * and its compliment to all the locations and reading the same for
     * verification.
     *
     * \param   start_address  [IN]   Starting address of the DDR memory
     * \param   end_address    [IN]   Ending address of the DDR memory
     *
     * \return  int32_t
     *              0  - In case of success
     *             -1  - In case of failure
     *
     */
    static inline int32_t board_memory_test32 (uint32_t start_address,
                                                    uint32_t end_address)
    {
    	uint32_t index, value;
    
    	UART_printf("First test started\n");
    	UART_printf("Writing to test area...\n");
    	/* Write a pattern */
    	for (index = start_address; (index >= start_address) &&
                            (index < end_address); index += 4) {
            HW_WR_REG32(index, (uint32_t)index);
    		if (!(index & MSG_FREQ))
                UART_printf("\tWrite up to 0x%08x done\n", index);
    	}
    
    	UART_printf("Write finished!\n");
    	UART_printf("Checking values...\n");
    
    	/* Read and check the pattern */
    	for (index = start_address;  (index >= start_address) &&
                                (index < end_address); index += 4) {
    
            value = HW_RD_REG32(index);
    
    		if (value  != index) {
    			UART_printf("board_memory_test32: Failed at address index = 0x%x \
                                                value = 0x%x *(index) = 0x%x\n",
                                    index, value, HW_RD_REG32(index));
    			return (-1);
    		}
    		if (!(index & MSG_FREQ))
                UART_printf("\tRead up to 0x%08x okay\n", index);
    	}
    
    	UART_printf("Second test started\n");
    	UART_printf("Writing complementary values to test area...\n");
    	/* Write a pattern for complementary values */
    	for (index = start_address; (index >= start_address) &&
                            (index < end_address); index += 4) {
            HW_WR_REG32(index, (uint32_t)~index);
    		if (!(index & MSG_FREQ))
                UART_printf("\tWrite up to 0x%08x done\n", index);
    	}
    
    	UART_printf("Write finished!\n");
    	UART_printf("Checking values...\n");
    	/* Read and check the pattern */
    	for (index = start_address;  (index >= start_address) &&
                            (index < end_address); index += 4) {
    
    		value = HW_RD_REG32(index);
    
    		if (value  != ~index) {
    			UART_printf("board_memory_test32: Failed at address index = 0x%x \
                                value = 0x%x *(index) = 0x%x\n", \
                                index, value, HW_RD_REG32(index));
    			return (-1);
    		}
    		if (!(index & MSG_FREQ))
                UART_printf("\tRead up to 0x%08x okay\n", index);
    	}
    
    	return 0;
    }
    
    int32_t board_external_memory_test(void)
    {
    
        int32_t status;
        int ret;
       
    
    //First 2GB
    	
        UART_printf("\n TESTING FIRST 2 GB - 32BIT ADDRESSES \n");
    
        UART_printf("board_external_memory_test: Start address1 (0x%010x), \
               end address (0x%010x)\n",BOARD_DDR1_START_ADDR, BOARD_DDR1_END_ADDR);
        UART_printf("\tTEST PRINT 594\n");
            status = board_memory_test32(BOARD_DDR1_START_ADDR, BOARD_DDR1_END_ADDR);
    
     	if (status < 0)
            {
                    UART_printf("Board memory test failed!\n");
                    ret = -1;
            }
            else
            {
                    UART_printf("Board memory test passed!\n");
                    ret = 0;
            }
    
    
    //Second 2GB
     
        UART_printf("\n TESTING SECOND 2 GB - 64BIT ADDRESSES \n");
    
        /* Printf complication due to UART_printf not supporting 64-bit */
        UART_printf("\n Printf complication due to UART_printf not supporting 64-bit \n");
        UART_printf("board_external_memory_test: Start address (0x%x%08x), \
               end address (0x%x%08x)\n",
               BOARD_DIAG_MEM_LWORD_SPLIT(BOARD_DDR2_START_ADDR),
               BOARD_DIAG_MEM_LWORD_SPLIT(BOARD_DDR2_END_ADDR));
    	status = board_memory_test64(BOARD_DDR2_START_ADDR, BOARD_DDR2_END_ADDR);
    	
    	if (status < 0)
    	{
    		UART_printf("Board memory test failed!\n");
    		ret = -1;
    	}
    	else
    	{
    		UART_printf("Board memory test passed!\n");
    		ret = 0;
    	}
    
        return ret;
    }
    
    int mem_test()
    {
    	int32_t status;
    	int ret;
    
    #ifdef DIAG_STRESS_TEST
    	UART_printf("\n****************************************************\n");
    	UART_printf  ("*            DDR Memory Stress Test                *\n");
    	UART_printf  ("****************************************************\n");
    #else
    	UART_printf("\n*********************************************\n");
    	UART_printf  ("*              DDR Memory Test (2GB + Extended 2GB)              *\n");
    	UART_printf  ("*********************************************\n");
    #endif
    
    	UART_printf("\nTesting writing and reading memory\n");
    	status = board_external_memory_test();
    	if (status < 0)
    	{
    		UART_printf("Memory test failed!\n");
    		ret = -1;
    	}
    	else
    	{
    		UART_printf("Memory test passed!\n");
    		ret = 0;
    	}
    	return ret;
    }
    
    /*
     *  ======== main ========
     */
    #ifndef SPI_BOOT_FRAMEWORK
    int main(void)
    {
        Board_initCfg boardCfg;
        
    #ifdef SOC_K2G
        DIAG_IntrInit();
    #endif
    
    #ifdef PDK_RAW_BOOT
        boardCfg = BOARD_INIT_MODULE_CLOCK |
                   BOARD_INIT_PINMUX_CONFIG |
                   BOARD_INIT_UART_STDIO;
    #else
        boardCfg = BOARD_INIT_UART_STDIO |
                   BOARD_INIT_PINMUX_CONFIG;
    #endif  /*  #ifdef PDK_RAW_BOOT */
        Board_init(boardCfg);
        
        return mem_test();
    }
    #endif
    

    Regards,

    Rohit Yadav

  • I have changed the mem_test.c to support the 4 GB memory test.  Please find the changed file attached.

    This is just an application. It will not do any DDR specific initialization. If you see the codeflow carefully, we are just writing registers with values. At low level, it is finally of following type : 

    *(volatile uint32_t *) address = (uint32_t)value;

    Therefore, before using this test, you have to make sure that DDR initialization are proper.

    Values are correct but it is getting hang while testing extended 2 GB. 

    Are you able to access the memory in memory browser. As mentioned above, mem test will pass on only those addresses which are initialized already.

    I have added extended 2 GB memory map in gpevm_am572x.gel. But it is showing error while initializing extended memory. Do I need to change something else ?

    Can you confirm till what address you are seeing in memory browser. Its look like you are exceeding the address range.

  • Hi Anubhav,

    Are you able to access the memory in memory browser. As mentioned above, mem test will pass on only those addresses which are initialized already.

    I am only able to access first 2GB i.e upto 0xFFFFFFFF from the memory browser. It is not showing addresses beyond this. In memory map also it is showing address upto 0xFFFFFFFF.

    It is not initializing extended 2GB. How can I initialize that ? 

    I tried adding in memory map in the gel file. But it is giving error while initializing. 

  • Hi,

    Cortex-A15 is a 32-bit processor. So typically it will support till 0xFFFFFFFF.

    I am checking this internally, if it support your usecase. Will let you know once I got any response from them.

  • Hi,

    I checked internally and found out that presently LPAE is validated for RTOS and Linux only. I have let the CCS team aware of this. It will get resolved in future releases.