On Wed, 23 Oct 2019 10:55:23 -0700 Jacob Pan <jacob.jun....@linux.intel.com> wrote:
> > > Do you have to check this everytime? every dmar_readq is going to > > > trap to the other side ... > > > > Yes. We don't need to check it every time. Check once and save the > > result during boot is enough. > > > > How about below incremental change? > > > Below is good but I was thinking to include vccap in struct > intel_iommu{} where cap and ecaps reside. i.e. > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 14b87ae2916a..e2cf25c9c956 100644 > --- a/include/linux/intel-iommu.h > +++ b/include/linux/intel-iommu.h > @@ -528,6 +528,7 @@ struct intel_iommu { > u64 reg_size; /* size of hw register set */ > u64 cap; > u64 ecap; > + u64 vccap; > > Also, we can use a static branch here. > On a second thought, we cannot use static(branch) here in that we cannot assume there is only one vIOMMU all the time. Have to cache the vccap per iommu. > > diff --git a/drivers/iommu/intel-pasid.c > > b/drivers/iommu/intel-pasid.c index ff7e877b7a4d..c15d9d7e1e73 > > 100644 --- a/drivers/iommu/intel-pasid.c > > +++ b/drivers/iommu/intel-pasid.c > > @@ -29,22 +29,29 @@ u32 intel_pasid_max_id = PASID_MAX; > > [Jacob Pan] _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu