UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 52031

Zynq-7000 SoC, APU - 数据缓存维护操作中止,随后为 ISB,之间没有任何 DSB,这可能会导致锁死

描述

在某些情况下,如果在这些事件之间没有发生 DSB,一项会中止并在 ISB 之后的数据高速缓存维护操作可能会导致处理器死锁。

解决方案

这个问题需要出现以下情况:

  1. 处理器正在处理的有些写入操作需要很长时间才能完成。典型的情况是在写入操作(STR、STM 等)在 L1 数据高速缓存中漏掉的时候。
  2. 没有在写入操作和条件 3 中提到的数据高速缓存维护操作之间插入内存屏障(DMB 或 DSB)。
  3. 执行数据高速缓存维护操作,可能会因为其 MMU 设置而中止。
  4. 没有在条件 3 中的数据高速缓存维护操作和条件 5 中的数据高速缓存维护操作之间插入内存屏障(DMB 或 DSB)。任何其它类型的代码都可以在这里执行,从中止的高速缓存维护操作之后的中止异常处理程序开始。
  5. 处理器正在执行一个 ISB 指令。
  6. 没有在条件 5 中的 ISB 和条件 7 中的读取或写入操作之间插入内存屏障(DMB 或 DSB)。
  7. 可执行一个读取或写入操作。


在上述条件下,一个内部 “数据侧漏请求”信号可能仍然会保持粘性,导致 ISB 等待数据侧为空,这永远不会发生,因为最后一次读取或写入操作会等待 ISB 完成。

影响:很小。这个问题可能会导致死锁,但它可以通过一种解决方法来避免。
解决方法::该错误的简单解决方法就是在中止异常处理程序开始时添加一个 DSB。
受影响的配置: 使用 CPU 的系统。
受影响的器件修订版本:全部. 无计划修复. 参考 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片版本差异。


修订历史:
05/16/2013 - 初始版本

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 SoC 器件:芯片修订差异 N/A N/A
AR# 52031
日期 05/25/2018
状态 Active
Type 设计咨询
器件
  • XA Zynq-7000
  • Zynq-7000
的页面