Messages in this thread | | | Date | Mon, 22 Aug 2022 16:24:54 -0700 | From | Jacob Pan <> | Subject | Re: [PATCH 2/2] iommu: Use the user PGD for SVA if PTI is enabled |
| |
Hi Dave,
On Mon, 22 Aug 2022 15:31:20 -0700, Dave Hansen <dave.hansen@intel.com> wrote:
> On 8/22/22 13:12, Jacob Pan wrote: > > @@ -394,7 +395,9 @@ static struct iommu_sva *intel_svm_bind_mm(struct > > intel_iommu *iommu, sflags = (flags & SVM_FLAG_SUPERVISOR_MODE) ? > > PASID_FLAG_SUPERVISOR_MODE : 0; > > sflags |= cpu_feature_enabled(X86_FEATURE_LA57) ? > > PASID_FLAG_FL5LP : 0; > > - ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, > > mm->pasid, + > > + pgd = static_cpu_has(X86_FEATURE_PTI) ? > > kernel_to_user_pgdp(mm->pgd) : mm->pgd; > > + ret = intel_pasid_setup_first_level(iommu, dev, pgd, mm->pasid, > > FLPT_DEFAULT_DID, sflags); > > > > This X86_FEATURE_PTI should really be done within a helper. > > I'd probably do this with a *new* helper since all of the existing > kernel_to_user_pgdp() users seem to be within a PTI #ifdef. > > Maybe something like: > > pgd_t *mm_user_pgd(struct mm_struct *mm) > { > #ifdef CONFIG_PAGE_TABLE_ISOLATION > if (cpu_feature_enabled(X86_FEATURE_PTI)) > return kernel_to_user_pgdp(mm->pgd); > #endif > return mm->pgd; > } > Sounds good. I thought about a helper also, thinking there are so many other cpu_has(X86_FEATURE_PTI) checks already :)
> That #ifdef could even go away if your kernel_to_user_pgdp() stub from > patch 1/2 was available. I'm not sure it's worth it though. I will remove 1/2 and keep the uniform style of the existing helpers.
Thanks for the suggestion,
Jacob
| |