FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (13. IOMMUのPTEアクセス)

前回:msyksphinz.hatenablog.com

github.com

RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。

何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。


IOMMU による PTE アクセス(A)とダーティ(D)の更新

capabilities.AMO_HWAD が1の場合、IOMMUはPTEのAビットとDビットをアトミックに更新する。 セカンドステージのPTEにおけるAビットとDビットの更新が有効な場合 (DC.tc.GADE=1)、および/またはファーストステージのPTEにおけるAビットとDビットの更新が有効な場合(DC.tc.SADE=1)、以下の規則が適用される:

IOMMUによるAおよび/またはDビットの更新は、有効性、許可チェック、およびアトミック性について、Privileged仕様で指定された規則に従わなければならない。

PTE更新は、IOMMUによって提供された変換済みアドレスを使用するメモリアクセスがグローバルに可視になる前に、グローバルに可視になっていなければならない。 具体的には、ATS変換完了でデバイスに変換済みアドレスが提供される場合、PTE更新は、変換済みアドレスを使用するデバイスからのメモリアクセスがグローバルに可視になる前に、グローバルに可視になっていなければならない。

IOMMUによってAビットとDビットがクリアされることはない。 スーパーバイザ・ソフトウェアがアクセス済みおよび/またはダーティ・ビットを使用しない場合、例えばメモリ・ページをセカンダリ・ストレージにスワップしない場合や、ページがI/Oスペースのマッピングに使用される場合は、PTEでこれらを1に設定して性能を向上させるべきである。

仮想アドレス変換プロセスによる障害

RISC-V Privileged仕様[4]で指定されている2段階のアドレス変換中に検出された障害は、IOVA変換プロセスを停止させ、検出された障害を報告させる。