1 问题背景
使用两片ddr5后,执行“reboot”软件重启命令导致系统卡死
打印日志如下:
[ 109.086664][ T1] [ascend] [ERROR] [devdrv] [hal_kernel_send_ipc_to_lp_async 1541] <systemd-shutdow:1,1> ipc message send failed, ret = -19.
[ 109.173896][ T1794] [ascend] [ERROR] [ascend_lpm] [devdrv_get_freq_from_lp 356] <kworker/0:4:1794:1794> dev(0) devdrv_get_msg_from_lp failed, ret = -19.
[ 109.187538][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_freq_info_from_lp 34] <kworker/0:4:1794> Failed to get freq and bandwidth. (dev_id=0; ret=-19)
[ 109.201876][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_frequency_info 235] <kworker/0:4:1794> Get device freq failed. (ret=-19; dev_id=0; sub_cmd=6)
[ 109.216128][ T1794] [ascend] [drv_memory] [error] [update_ddr_max_bandwidth 52] <kworker/0:4:1794> Failed to get freq and bandwidth. (dev_id=0; ret=-19)
[ 109.229769][ T1794] [ascend] [drv_memory] [error] [calculate_ddr_bw_util_rate 164] <kworker/0:4:1794> Failed to update max bandwidth. (ret=-19; dev_id=0)
[ 109.243498][ T1794] [ascend] [drv_memory] [error] [get_ddr_bw_util_rate 256] <kworker/0:4:1794> Failed to calculate bandwidth utilization rate. (ret=-19; dev_id=0)
[ 109.258096][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_bw_util_rate 295] <kworker/0:4:1794> Failed to get bw util rate failed. (ret=-19; dev_id=0)
[ 109.272169][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_bw_util_scan 64] <kworker/0:4:1794> Failed get ddr bw util rate. (dev_id=0; ret=-19)
[ 109.285653][ T1] reboot: Restarting system
NOTICE: itrusteed system reset
NOTI▒
====================================
HI, BSBC!
====================================
key point log : 00000044 0006f27f; 00000000 00000000
select area: c11cb55b
hboot start ea000002.
DC
L6
ci
is
cr
nr
vs
41
as
as
as
co
FT
1s
cs
eb
[0.965] [BOOT_TRACE]HBOOT1_b
current[3], last[99]
DC mode
reset reason:1 pad info:10180
Master entry
HccsPmuInit: boardid 214, pmu addr[0x1d]:0x3; ldo38: 0x3
current[4], last[99]
[1.078] [BOOT_TRACE] HCCS Start
HCCS init start
HCCS init ok
Cpu reset ok
l2buf init ok
current[6], last[99]
Dfx init l2 xloader done
check dataLen 0xffffffff is invalid
check dataLen 0xffffffff is invalid
flash cfg is invalid, use default cfg
DC SavePgInfoToSram start!
cpuAg = 0xffff
AI core freq is 550MHz
: BoardId is 214, PG Info bitmap: 0xff 0x00 0xff 0x00 0x7f 0x03 0x00 0x00
aic:0x0 aiv:0x0 l3d:0x0 cpu:0x0 cluster:0x0
Get PG Info ok
current[7], last[99]
AICORE PG 0xff
Clear Aic isolation bits 0xff
AI Vector PG 0x7f
Clear Aiv isolation bits 0x7f
Aisystem disreset ok
current[8], last[99]
Hboot1_a point:[14] 01 02 03 04 06 07 16 05 19 09 11 12 13 15 00 00 00 00 00 00
sys info:1,0x1,0x10180
board id:214
Atf reboot point(0)
efuse0:0x0 efuse1:0x1800 aic:0x0 aiv:0x0 l3d:0x0 cluster:0x0
AB Report val:0x80
memory repiar status: 0x1fff, 0xf3ffff
compatibility file not exist
Boot ddr image start(1157)
current[10], last[99]
ddr init state(0x0)
LPR52 config ok
LPR52 atcm clean(ddr 0x110c0014)...
ok
1st A, Master area boot
80
non-sec boot!
image vef success!
compatible file not exit, flag = 0x0
LP R52 ATCM(0xea00001e)
Dreset LPR5BOoT_
RuCr] td1 ],il sta99]
spmt rd Muste[0a0ea b0o4c:0x93]
spmi wr:[0x09:0x084c:0x93]
spmi rd succ:[0x09:0x084c:0x93]
Upgrade_flag 0x110c0014
boardId 0xd6
Swap 0x2
ddrSelfRefreshErrFlag = 0x1.
2 修复方案
2.1 源码编译和生效参见,需要编译和生效HBOOT1_b.bin
https://support.huawei.com/enterprise/zh/doc/EDOC1100445968/6eb62f81?idPath=23710424|251366513|254884019|261408772|263024819
2.2 修改
修改LowPowerR52AtcmInitForDdr函数,去除热复位的判断,默认为冷启动

void LowPowerR52AtcmInitForDdr(void)
{
#ifndef BIOS_GTEST
UINT32 val;
UINT32 addr;
UINT32 offset;
register UINT32 value1 asm("r0");
register UINT32 value2 asm("r1");
value1 = 0; // 四字节0
value2 = 0; // 四字节0
val = readl(SC_POR_REG5);
PRINT_INFO("LPR52 atcm clean(all 0x%x)...\n", val);
for (offset = 0; offset < ATCM_MAX_SIZE; offset += DATA_LEN_8BYTES) {
addr = LP_R52_ATCM_BASE_ADDR + offset;
__asm__ volatile ("strd %0, %1, [%2]"::"r" (value1), "r" (value2), "r"(addr));
}
val |= LPR52_ATCM_CLEAN_MASK;
writel(val, SC_POR_REG5);
PRINT_INFO("ok\n");
#endif
}
2.3 修改完成后重新编译生效HBOOT1_b.bin即可
1 问题背景
使用两片ddr5后,执行“reboot”软件重启命令导致系统卡死
打印日志如下:
[ 109.086664][ T1] [ascend] [ERROR] [devdrv] [hal_kernel_send_ipc_to_lp_async 1541] <systemd-shutdow:1,1> ipc message send failed, ret = -19.
[ 109.173896][ T1794] [ascend] [ERROR] [ascend_lpm] [devdrv_get_freq_from_lp 356] <kworker/0:4:1794:1794> dev(0) devdrv_get_msg_from_lp failed, ret = -19.
[ 109.187538][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_freq_info_from_lp 34] <kworker/0:4:1794> Failed to get freq and bandwidth. (dev_id=0; ret=-19)
[ 109.201876][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_frequency_info 235] <kworker/0:4:1794> Get device freq failed. (ret=-19; dev_id=0; sub_cmd=6)
[ 109.216128][ T1794] [ascend] [drv_memory] [error] [update_ddr_max_bandwidth 52] <kworker/0:4:1794> Failed to get freq and bandwidth. (dev_id=0; ret=-19)
[ 109.229769][ T1794] [ascend] [drv_memory] [error] [calculate_ddr_bw_util_rate 164] <kworker/0:4:1794> Failed to update max bandwidth. (ret=-19; dev_id=0)
[ 109.243498][ T1794] [ascend] [drv_memory] [error] [get_ddr_bw_util_rate 256] <kworker/0:4:1794> Failed to calculate bandwidth utilization rate. (ret=-19; dev_id=0)
[ 109.258096][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_bw_util_rate 295] <kworker/0:4:1794> Failed to get bw util rate failed. (ret=-19; dev_id=0)
[ 109.272169][ T1794] [ascend] [drv_memory] [error] [memory_get_ddr_bw_util_scan 64] <kworker/0:4:1794> Failed get ddr bw util rate. (dev_id=0; ret=-19)
[ 109.285653][ T1] reboot: Restarting system
NOTICE: itrusteed system reset
NOTI▒
====================================
HI, BSBC!
====================================
key point log : 00000044 0006f27f; 00000000 00000000
select area: c11cb55b
hboot start ea000002.
DC
L6
ci
is
cr
nr
vs
41
as
as
as
co
FT
1s
cs
eb
[0.965] [BOOT_TRACE]HBOOT1_b
current[3], last[99]
DC mode
reset reason:1 pad info:10180
Master entry
HccsPmuInit: boardid 214, pmu addr[0x1d]:0x3; ldo38: 0x3
current[4], last[99]
[1.078] [BOOT_TRACE] HCCS Start
HCCS init start
HCCS init ok
Cpu reset ok
l2buf init ok
current[6], last[99]
Dfx init l2 xloader done
check dataLen 0xffffffff is invalid
check dataLen 0xffffffff is invalid
flash cfg is invalid, use default cfg
DC SavePgInfoToSram start!
cpuAg = 0xffff
AI core freq is 550MHz
: BoardId is 214, PG Info bitmap: 0xff 0x00 0xff 0x00 0x7f 0x03 0x00 0x00
aic:0x0 aiv:0x0 l3d:0x0 cpu:0x0 cluster:0x0
Get PG Info ok
current[7], last[99]
AICORE PG 0xff
Clear Aic isolation bits 0xff
AI Vector PG 0x7f
Clear Aiv isolation bits 0x7f
Aisystem disreset ok
current[8], last[99]
Hboot1_a point:[14] 01 02 03 04 06 07 16 05 19 09 11 12 13 15 00 00 00 00 00 00
sys info:1,0x1,0x10180
board id:214
Atf reboot point(0)
efuse0:0x0 efuse1:0x1800 aic:0x0 aiv:0x0 l3d:0x0 cluster:0x0
AB Report val:0x80
memory repiar status: 0x1fff, 0xf3ffff
compatibility file not exist
Boot ddr image start(1157)
current[10], last[99]
ddr init state(0x0)
LPR52 config ok
LPR52 atcm clean(ddr 0x110c0014)...
ok
1st A, Master area boot
80
non-sec boot!
image vef success!
compatible file not exit, flag = 0x0
LP R52 ATCM(0xea00001e)
Dreset LPR5BOoT_
RuCr] td1 ],il sta99]
spmt rd Muste[0a0ea b0o4c:0x93]
spmi wr:[0x09:0x084c:0x93]
spmi rd succ:[0x09:0x084c:0x93]
Upgrade_flag 0x110c0014
boardId 0xd6
Swap 0x2
ddrSelfRefreshErrFlag = 0x1.
2 修复方案
2.1 源码编译和生效参见,需要编译和生效HBOOT1_b.bin
https://support.huawei.com/enterprise/zh/doc/EDOC1100445968/6eb62f81?idPath=23710424|251366513|254884019|261408772|263024819
2.2 修改
修改LowPowerR52AtcmInitForDdr函数,去除热复位的判断,默认为冷启动
void LowPowerR52AtcmInitForDdr(void)
{
#ifndef BIOS_GTEST
UINT32 val;
UINT32 addr;
UINT32 offset;
register UINT32 value1 asm("r0");
register UINT32 value2 asm("r1");
value1 = 0; // 四字节0
value2 = 0; // 四字节0
val = readl(SC_POR_REG5);
PRINT_INFO("LPR52 atcm clean(all 0x%x)...\n", val);
for (offset = 0; offset < ATCM_MAX_SIZE; offset += DATA_LEN_8BYTES) {
addr = LP_R52_ATCM_BASE_ADDR + offset;
__asm__ volatile ("strd %0, %1, [%2]"::"r" (value1), "r" (value2), "r"(addr));
}
val |= LPR52_ATCM_CLEAN_MASK;
writel(val, SC_POR_REG5);
PRINT_INFO("ok\n");
#endif
}
2.3 修改完成后重新编译生效HBOOT1_b.bin即可