Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOMMU and IOPMP intergreation method #7

Open
romanheros opened this issue Jun 17, 2024 · 2 comments
Open

IOMMU and IOPMP intergreation method #7

romanheros opened this issue Jun 17, 2024 · 2 comments

Comments

@romanheros
Copy link

romanheros commented Jun 17, 2024

Throughout the IOPMP specification, it doesn't have description about its relationship with IOMMU. I want to know how to intergrate them togather. I think at least we should point out the order between them to check DMA address. As IOMMU will translate IOVA to HPA, it is also need explicitly point out what is IOPMP check, the IOVA or HPA?

@tyshyu
Copy link
Contributor

tyshyu commented Jun 17, 2024

The following comment is my thoughts. Please correct me if something is wrong or other use cases are not applicable for it.

Hypervisor (HS-mode software) or software which has lower privilege than hypervisor manages IOMMU.
Secure monitor (M-mode software) manages IOPMP and only the secure monitor is trusted in the system.
The IOPMP could check every SPA (supervisor physical address) access from the IOMMU, including page table walk and in-memory queue interface access. The term "SPA" would be equivalent to HPA if HPA represents host physical address.

@paul-andes
Copy link
Collaborator

In an SoC having both IOMMU and IOPMP, the IOPMP is expected to protect the data belonging to the secure monitor (running in the M-mode of the secure core) and isolate between the hypervisor and trusted execution environment(s) for more complicated cases. Thus, the transactions issued from IOMMU, regardless of the page walker or data access, should be confined within some specific areas defined by a secure monitor. The IOPMP can be either source-enforcement or destination-enforcement. In the software's view, the IOMMU is operated by OSes and/or the Hypervisor, while the IOPMP is the tool of the secure monitor.

We will add some descriptions to the specification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants