SoC 互连、错误监控与 QoS

SoC 互连、错误监控与 QoS

1. 两类互连驱动

本目录互连代码主要做:

  1. cache coherency/port管理;
  2. timeout、target abort、decode error和master定位。

它们通常不提供drivers/interconnect中的带宽投票API。

2. ARM CCI

arm-cci.c支持ARM CCI-400/500/550 coherent interconnect:

  • 解析CPU/ACE/ACE-Lite port;
  • 保存port控制寄存器;
  • CPU PM/低级电源转换时enable/disable snoop和DVM;
  • 提供CCI PMU相关基础。

CCI端口在CPU缓存仍活动时错误关闭会破坏一致性,所以低级操作与CPU suspend顺序严格绑定。

RK3588采用Cortex-A55/A76与DSU体系,DTS未声明CCI compatible,本驱动不匹配。

3. OMAP L3

omap_l3_smx.comap_l3_noc.c处理中断:

1
2
3
4
5
L3 error IRQ
-> read error source/register
-> decode target/master/opcode
-> clear latch
-> report fatal/custom error

错误可能来自访问断电模块、非法地址、timeout或权限。Handler必须先保存寄存器再清状态,否则会丢失诊断。

4. Broadcom GISB

brcmstb_gisb.c管理GISB arbiter timeout/target abort:

  • 读取错误地址和master;
  • 根据SoC master mask打印来源;
  • 清错误;
  • 可在external abort hook中辅助诊断。

它是错误观测器,不会自动修复造成timeout的外设。

5. Baikal-T1 AXI/APB

bt1-axi.cbt1-apb.c读取error handler block,记录总线错误地址/类型,并通过sysfs暴露错误计数和部分timeout参数。

修改timeout过小会制造误报,过大则让CPU长时间等待故障slave。

6. DA8xx Master Priority

da8xx-mstpri.c允许调整多个master优先级。这是静态仲裁配置,不是动态interconnect带宽框架。

优先级提高某master会牺牲其它master延迟,需结合DDR和实时业务整体评估。

7. TI SYSC

ti-sysc.c是OMAP interconnect target module通用driver:

  • 识别SYSC/SYSS/REV寄存器布局;
  • clock/reset/idle/wakeup;
  • legacy hwmod兼容;
  • runtime PM;
  • populate child。

其代码很大是因为需要支持多代TI寄存器quirk,不是通用SoC syscon driver。

8. QCOM SSC、Tegra ACONNECT、Sun50i DE2

这些driver主要打开特定功能域:

  • SSC block bus连接Sensor Core内部外设;
  • ACONNECT连接Tegra Audio Processing Engine;
  • DE2 bus申请SRAM并使显示engine可访问。

它们都是平台电源/访问前置条件,children仍由其它功能driver管理。

9. 错误处理原则

总线错误日志至少应包含:

  • fault address;
  • read/write及opcode;
  • master/initiator;
  • target/slave;
  • security/privilege;
  • timeout或decode;
  • power/clock状态。

只打印“bus error”而不保存首个fault寄存器,后续中断风暴会覆盖根因。

10. RK3588边界

RK3588的NoC QoS、PM domain、DDR/devfreq和system monitor位于Rockchip专用目录及firmware/DT配置,不由上述驱动实现。即使协议同样称AXI/APB,也不能复用Baikal、OMAP或Broadcom寄存器驱动。

文章互动

阅读 --

留言

0 条留言

正在加载留言…