Bug #115959

【BSP】【EVT3】【ST】【DTC】Ethernet的DTC日志日期与设备不同步

Added by 移动测试一组_CDTS 刘强 over 2 years ago. Updated about 2 years ago.

Status:CLOSEDStart date:2023-02-06
Priority:NormalDue date:
Assignee:移动测试一组_CDTS 刘强% Done:

100%

Category:SYSTEM
Target version:VC1_FSE_0094_20230425
Need_Info:-- Found Version:FlatBuild_HH_VX1_MCE_FSE.M.D.userdebug.01.00.X101.202302060240
Resolution:FIXED Degrated:--
Severity:Normal Verified Version:
Reproducibility:Every time Fixed Version:2023-05-16
Test Type:ST Root cause:设备无法进入休眠,并且没有UTC时间导致时间不一致

Description

【前提条件】
None

【测试步骤】
1. 设备正常开机,不连接Ethernet 盒子
2. 执行adb logcat | grep 'DTC'
3. 查看日志打印情况

【预期结果】
3 DTC日志打印,且日志时间与设备同步

【实际结果】
3 DTC日志打印,但日志时间与设备不一致
01-01 08:14:17.656 0 0 E DTC_ETH,link_delay_work_func: 3003, SQI=0, link=0

20230206-195708.jpg (405 KB) 移动测试一组_CDTS 刘强, 2023-02-06 19:57

20230213-141721.jpg (1.07 MB) 移动测试一组_CDTS 刘强, 2023-02-13 14:17

20230206-195708 20230213-141721

History

#1 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

低优先级

#2 Updated by CD BSP-杜磊 over 2 years ago

  • Status changed from New to ASSIGNED
  • Assignee changed from CD BSP-杜磊 to CD SYSTEM-胡兵

Hi, 胡兵,
帮忙看一下系统日志时间不一致问题呢

#3 Updated by CD SYSTEM-胡兵 over 2 years ago

  • Assignee changed from CD SYSTEM-胡兵 to 移动测试一组_CDTS 刘强

Hi all

kernel加载时,系统时间未更新属于正常情况,正常开机后会更新。

Thanks

#4 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

  • File 20230213-141721.jpg added
  • Assignee changed from 移动测试一组_CDTS 刘强 to CD SYSTEM-胡兵

联网之后还是一样的现象

#5 Updated by CD SYSTEM-胡兵 over 2 years ago

  • Assignee changed from CD SYSTEM-胡兵 to 移动测试一组_CDTS 刘强

Hi

kernel日志存储在kernel buffer中,通过proc/kmsg或dev/kmsg进行读取,默认时间戳为本次开机的计时,
logcat -b kernel通过读取上面的节点,存储对应的日志到buffer,时间戳按照EPOCH来计算,时间戳更新通过suspend的UTC进行更正。当前设备没有suspend的状态,针对如上问题,需要讨论走下列哪种方案:
1. DTC drvier自行增加UTC时间戳
2. 修改Klogd原生逻辑,增加UTC时间更正,修正所有kernel时间戳

Thanks.

#6 Updated by 移动测试一组_CDTS 刘强 over 2 years ago

  • Assignee changed from 移动测试一组_CDTS 刘强 to CD TPM-王祥林

Hi,祥林
对于以上情况修改方案麻烦帮忙确认下

谢谢

#7 Updated by CD TPM-王祥林 over 2 years ago

  • Target version set to VC1_FSE_0082_20230314

#8 Updated by CD BSP-杜磊 over 2 years ago

  • Category changed from BSP to SYSTEM

#9 Updated by CD TPM-王祥林 over 2 years ago

  • Target version changed from VC1_FSE_0082_20230314 to VC1_FSE_0086_20230328

只是日志里时间的显示问题,不影响功能,优先级放低。

#10 Updated by CD TPM-王祥林 over 2 years ago

  • Assignee changed from CD TPM-王祥林 to CD SYSTEM-胡兵
  • Target version changed from VC1_FSE_0086_20230328 to VC1_FSE_0094_20230425

建议修正所有Kernel的时间戳
2. 修改Klogd原生逻辑,增加UTC时间更正,修正所有kernel时间戳

#11 Updated by CDTS-TEST 周婷 about 2 years ago

  • Severity changed from Normal to Major

#12 Updated by CD SYSTEM-胡兵 about 2 years ago

  • Assignee changed from CD SYSTEM-胡兵 to CD SYSTEM-夏旭

#13 Updated by CD SYSTEM-夏旭 about 2 years ago

■ 我的分析
之前的时间戳更新通过suspend的UTC进行更正。当前设备没有suspend的状态,所以kernel相关日志的时间没有更新

■ 下一步计划
查看代码修改逻辑,不进入suspend也能更新时间戳

#14 Updated by CD SYSTEM-夏旭 about 2 years ago

■ 我的分析
kernel的时间是根据system/core/logd/LogKlog.cpp文件中的sniffTime函数来修正时间的
这个函数在进入suspend时,会根据log中的UTC来修正时间戳
但是设备不会进入suspend,所以时间不会更新,并且查看日志也没有UTC
echo mem > /sys/power/state
01-01 10:21:52.699 0 0 I PM : suspend entry (deep)
01-01 10:21:52.703 0 0 I PM : Syncing filesystems ... done.
01-01 10:21:59.116 0 0 E PM : Device a800000.ssusb failed to suspend: error -16
01-01 10:21:59.116 0 0 E PM : Some devices failed to suspend, or early wake event detected
01-01 10:22:09.110 0 0 I PM : suspend exit
查看log并没有UTC的时间
对比其他的设备,打印的log为
04-08 02:34:22.215 0 0 I PM : suspend entry (deep) UTC:2023-04-07 18:34:22
04-08 02:34:22.473 0 0 E PM : dpm_run_callback(): platform_pm_suspend.cfi_jt+0x0/0x4 returns -16
04-08 02:34:22.473 0 0 E PM : Device 4e00000.ssusb failed to suspend: error -16
04-08 02:34:22.473 0 0 E PM : Some devices failed to suspend, or early wake event detected
04-08 02:34:23.055 0 0 I PM : suspend exit UTC:2023-04-07 18:34:23
查看kernel日志中并没有UTC时间

■ 下一步计划
主动打印UTC,然后修正时间戳

#15 Updated by CD SYSTEM-夏旭 about 2 years ago

■ 目前进度
查看源码发现确实没有打印UCT
pr_info("suspend entry (%s)\n", mem_sleep_labels[state]);
error = enter_state(state);
if (error) {
suspend_stats.fail++;
dpm_save_failed_errno(error);
} else {
suspend_stats.success++;
}
pr_info("suspend exit\n");

对比其他设备,发现UTC和CONFIG_HW_PM_DEBUG有关系
pr_info("suspend entry (%s) UTC:%d-%02d-%02d %02d:%02d:%02d\n",
mem_sleep_labels[state], tm.tm_year + 1900, tm.tm_mon + 1,
tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
#else /* CONFIG_HW_PM_DEBUG /
pr_info("suspend entry (%s)\n", mem_sleep_labels[state]);
#endif /
CONFIG_HW_PM_DEBUG /
error = enter_state(state);
if (error) {
suspend_stats.fail++;
dpm_save_failed_errno(error);
} else {
suspend_stats.success++;
}
#ifdef CONFIG_HW_PM_DEBUG
time64_to_tm(ktime_get_real_seconds(), 0, &tm);
pr_info("suspend exit UTC:%d-%02d-%02d %02d:%02d:%02d\n",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);
#else /
CONFIG_HW_PM_DEBUG */
pr_info("suspend exit\n");

■ 下一步计划
尝试添加UTC,然后主动进入suspend,看看kernel日志的时间是否同步

#16 Updated by CD SYSTEM-夏旭 about 2 years ago

■ 当前进度
已经添加修改,等待编译验证
pr_info("suspend entry (%s) UTC:%d-%02d-%02d %02d:%02d:%02d\n",
mem_sleep_labels[state], tm.tm_year + 1900, tm.tm_mon + 1,
tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
pr_info("suspend entry (%s)\n", mem_sleep_labels[state]);

error = enter_state(state);
if (error) {
suspend_stats.fail++;
dpm_save_failed_errno(error);
} else {
suspend_stats.success++;
}

time64_to_tm(ktime_get_real_seconds(), 0, &tm);
pr_info("suspend exit UTC:%d-%02d-%02d %02d:%02d:%02d\n",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec);

pr_info("suspend exit\n");
■ 下一步计划
看是否会打UTC日志,然后主动触发suspend,kernel时间会不会更新

#17 Updated by CD SYSTEM-夏旭 about 2 years ago

■ 目前进度
添加UTC日志,主动触发suspend,查看日志添加UTC生效,但是kernel日志时间戳还是没有更新,
怀疑是没有走LogKlog.cpp文件的sniffTime函数来更新时间戳
01-02 07:45:57.732 0 0 I PM : suspend entry (deep) UTC:2023-04-13 18:31:30
01-02 07:45:57.732 0 0 I PM : Syncing filesystems ... done.
01-02 07:45:57.949 0 0 E PM : Device a800000.ssusb failed to suspend: error -16
01-02 07:45:57.949 0 0 E PM : Some devices failed to suspend, or early wake event detected
01-02 07:45:58.325 0 0 I PM : suspend exit UTC:2023-04-13 18:31:30
■ 下一步计划
调查原因

#18 Updated by CD TPM-王祥林 about 2 years ago

  • Severity changed from Major to Normal

不影响交付,先把优先级改为normal

#19 Updated by CD SYSTEM-夏旭 about 2 years ago

  • % Done changed from 0 to 20

#20 Updated by CD SYSTEM-夏旭 about 2 years ago

1,添加调试信息
+inline void debugLog(const char *format,...)
+{
+ va_list args;
+ static int fdDmesg = -1;
+ char buffer[0xff] = {0};
+ va_start(args, format);
+ vsprintf(buffer,format,args);
+ va_end(args);
+ fdDmesg = open("/dev/kmsg", O_WRONLY);
+ if(0 > fdDmesg){
+ return;
+ }
+ write(fdDmesg, buffer, strlen(buffer)+1);
+ close(fdDmesg);
+}

2.userdebug上还未复现

#21 Updated by CD SYSTEM-夏旭 about 2 years ago

现在手动更新时间发现也无效果
要从下面两个地方进行入手
1.机器上无RTC的电池,是否是硬件的问题
2.为什么彻底断电后,开机后显示的时间,是版本编译的时间,尓不是UTC时间

#22 Updated by CD SYSTEM-夏旭 about 2 years ago

初步怀疑是RTC导致的问题,

04-28 21:58:27.378 1039 1039 W JobScheduler: !!! RTC not yet good; tracking time updates for job scheduling

#23 Updated by CD SYSTEM-夏旭 about 2 years ago

1.因为硬件已经封板,故RTC的方法,不行,
2.提case给高通,看是否的相关的方法,case号:06620740

#24 Updated by CD SYSTEM-夏旭 about 2 years ago

  • % Done changed from 20 to 90

1.现在用自己的方案初步验证ok,但是有一定的瑕疵,先等一下高通看是否有更好的解决方案。如果高通不能给出好的方案,先用我们自己的方案
2.等待高通更好的解决方案

#26 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
199850 general/platform/system/logging Pre_figure_turbox-c2130c-la1.1-qssi12-dev
SYSTEM:Tlog update kernel log time
modify LogKlog.cpp
TC-RID: 1200-0800102
IssueID: TS-R-BUG-115959
Change-Id: I986c7f0933684b35bc11c538fe1f8a7a7fad9eae

#27 Updated by CD SYSTEM-夏旭 about 2 years ago

  • % Done changed from 90 to 100

1. 临时方案,已经入库
提交:
https://dev.thundercomm.com/gerrit/c/general/platform/vendor/thundercomm/apps/LogSystem/+/199919
2.继续跟进高通的case,看高通是否有更好的解决方案

#28 Updated by CD SYSTEM-夏旭 about 2 years ago

  • % Done changed from 100 to 80

#29 Updated by CD SYSTEM-夏旭 about 2 years ago

  • Status changed from ASSIGNED to NEED_INFO
  • % Done changed from 80 to 90

#30 Updated by CD SYSTEM-夏旭 about 2 years ago

  • Status changed from NEED_INFO to RESOLVED
  • Assignee changed from CD SYSTEM-夏旭 to 移动测试一组_CDTS 刘强
  • % Done changed from 90 to 100
  • Resolution changed from -- to FIXED
  • Fixed Version set to 2023-05-16
  • Root cause set to 设备无法进入休眠,并且没有UTC时间导致时间不一致

■目前进度
kernel日志时间已经更新,相关修改已经入库
■下一步计划
测试验证
可以直接使用命令adb logcat -b kernel看时间是否更新
也可以看tlog抓到的kernel的日志时间是否更新

#31 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from RESOLVED to VERIFIED

验证版本:0100
验证结果:验证通过
DTC eth log与kernel日志时间已经与上层时间同步

#32 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from VERIFIED to CLOSED

Also available in: Atom PDF