>From hardware implementation perspective, a guest tegra241-cmdqv hardware is different than the host hardware: - Host HW is backed by a VINTF (HYP_OWN=1) - Guest HW is backed by a VINTF (HYP_OWN=0) The kernel driver has an implementation requirement of the HYP_OWN bit in the VM. So, VMM must follow that to allow the same copy of Linux to work. Add this requirement to the uAPI, which is currently missing.
Showing the changes to include/uapi (1 of 1 file). Show all
Unified · Split
| @@ -1052,6 +1052,11 @@ struct iommu_fault_alloc { · 1051 unmodified lines | ||
| 1052 | 1052 | enum iommu_viommu_type { |
| 1053 | 1053 | IOMMU_VIOMMU_TYPE_DEFAULT = 0, |
| 1054 | 1054 | IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1, |
| 1055 | + /* | |
| 1056 | + * TEGRA241_CMDQV requirements (otherwise, VCMDQs will not work) | |
| 1057 | + * - Kernel will allocate a VINTF (HYP_OWN=0) to back this VIOMMU. So, | |
| 1058 | + * VMM must wire the HYP_OWN bit to 0 in guest VINTF_CONFIG register | |
| 1059 | + */ | |
| 1055 | 1060 | IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV = 2, |
| 1056 | 1061 | }; |
| 1057 | 1062 | |