AR# 52031

Zynq-7000 SoC、APU - データ キャッシュ メンテナンス処理を中止した後に DSB なしで ISB を実行するとデッドロック状態になることがある

説明

特定の状況下で、データ キャッシュ メンテナンス処理を中止した後に、DSB なしで ISB を実行すると、プロセッサがデッドロック状態になることがあります。

ソリューション

この問題は、次の条件下で発生します。

  1. 一部の書き込みがプロセッサにより処理され、完了するまでに時間がかかる。一般的な状況としては、STR や STM などの書き込み処理が L1 データ キャッシュでミスになる場合です。
  2. 書き込み処理と条件 3 に記述されているデータ キャッシュ メンテナンス処理の間にメモリ バリア (DMB または DSB) が挿入されない。
  3. データ キャッシュ メンテナンス処理が実行されるが、MMU 設定により中止される。
  4. 条件 3 のデータ キャッシュ メンテナンス処理と条件 5 の ISB の間にメモリ バリア (DMB または DSB) が挿入されない。中止されたキャッシュ メンテナンス処理に続くアボート例外ハンドラーなど、すべてのタイプのコードをここで実行できます。
  5. ISB 命令がプロセッサにより実行される。
  6. 条件 5 の ISB と条件 7 の読み込みまたは書き込み処理の間にメモリ バリア (DMB または DSB) が挿入されない。
  7. 読み込みまたは書き込み処理が実行される。


上記の状況により、内部データ側ドレイン要求信号がアサートされたままになり、ISB はデータ側が空になるのを待ちますが、最後の読み込みまたは書き込み処理が ISB が完了するのを待つため、データ側が空になることはありません。

影響:深刻な問題ではありません。この問題によりデッドロック状態が発生する可能性がありますが、回避策で防ぐことができます。
回避策:この問題を回避するには、アボート例外ハンドラーの最初に DSB を追加するのが簡単な方法です。
対象となる構成: CPU を使用するシステム。
対象となるデバイス リビジョン:すべて。修正予定はありません。(Xilinx Answer 47916) - 「Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点」を参照してください。


改訂履歴
2013/05/16 - 初版

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47916 Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点 N/A N/A
AR# 52031
日付 05/25/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス