From: Baolu Lu
Sent: Friday, June 10, 2022 3:16 PM
address */
+#define __IOMMU_DOMAIN_HOST_VA (1U << 5) /* Host CPU virtual
2nd
Do you mean general CPU VA? or Host CPU VA, I'm reading the latter as
stage?
Host CPU VA. In the near future, we will add another flag _GUEST_VA, so
that the shared page table types are distiguished.
How does the kernel knows that an user page table translates guest VA?
IMHO I don't think the kernel should care about it except managing
all the aspects related to the user page table itself...
(__IOMMU_DOMAIN_PAGING | \
+
/*
* This are the possible domain-types
*
@@ -86,15 +89,24 @@ struct iommu_domain_geometry {
#define IOMMU_DOMAIN_DMA_FQ
\__IOMMU_DOMAIN_DMA_API | \
__IOMMU_DOMAIN_DMA_FQ)
+#define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SHARED |
+ __IOMMU_DOMAIN_HOST_VA)
Doesn't shared automatically mean CPU VA? Do we need another flag?
Yes. Shared means CPU VA, but there're many types. Besides above two, we
also see the shared KVM/EPT.
Will the two sharing scenarios share any common code? If not then
having a separate flag bit is meaningless.
It might be more straightforward to be:
#define IOMMU_DOMAIN_SVA __IOMMU_DOMAIN_SVA
#define IOMMU_DOMAIN_KVM __IOMMU_DOMAIN_KVM
#define IOMMU_DOMAIN_USER __IOMMU_DOMAIN_USER