🗒️高通平台Logfs分区Uefilog乱码乱序问题
2024-11-5
| 2024-11-6
字数 507阅读时长 2 分钟
type
status
date
slug
summary
tags
category
icon
password
URL

一、问题现象

从导出的/dev/logfs中的UefiLog日志中存在乱码,且日志不全
notion image
C3F项目正常、C3F2项目异常

二、问题分析

  1. 从现象来看存在的乱码其实是‘0’,所以有可能是因为初始化的log buffer过大 大于实际的log buffer size,导致初始化的补0 打印了出来
  1. 数据乱序
    下面从以上两个怀疑点验证问题

    2.1 怀疑XBL log buffer size设置异常

    notion image
    notion image

    2.1.1 follow C3F项目

    从C3F2的代码来看,当前有问题的版本关于XBL log buffer的初始化 走在了静态分配的函数里,我check了C3F项目的代码,发现C3F走在了132行里面,故更改逻辑让代码走入132行
    https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/723596
    notion image
    验证结果:现象一致,排除

    2.1.2 增大XBL Log buffer

    https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/720217/2
    notion image
    验证结果:现象一致,排除

    2.1.2 减少XBL Log buffer

    https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/720217/3
    notion image
    验证结果:现象一致,排除

    2.2.3 改为动态分配XBL log buffer

    https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/721722
    验证结果:现象一致,排除

    2.2 怀疑SBL log buffer初始化过小

    notion image
    初始化流程不详细介绍,主要是这块,受SCL_SBL1_BOOT_LOG_BUF_SIZE控制
    C3F2:
    notion image
    C3F:
    notion image
    同时,复制正常C3F SBL阶段到ddr_training的log 保存到一个新文件,可以得到这个阶段的log正好为4KB,看起来确实是因为限制了size为4KB 导致超过4KB大小的sbl log从开头开始覆盖了。
    notion image
    更改为SIZE_8KB
    验证结果:进EDLmode 长按电源键开机也是直接进EDLmode,没有串口log输出
     
    更改为SIZE_6KB
    验证结果:正常开机,导出的UefiLog0.txt无乱序问题
    notion image
    notion image
    尽管打开还有乱码,但是log已经没有出现丢失,覆盖等现象。下方为对应的串口输出
    notion image
  2. logfs
  3. UEFI
  4. A64指令集学习[SWR0011671][Sensor][P2] 量产机型能够抓取子系统ramdump
    Loading...