On Sat, Jan 16, 2021 at 09:20:16AM +0800, Lu Baolu wrote: > Hi, > > On 2021/1/15 14:31, Leon Romanovsky wrote: > > On Fri, Jan 15, 2021 at 07:49:47AM +0800, Lu Baolu wrote: > > > Hi Leon, > > > > > > On 1/14/21 9:26 PM, Leon Romanovsky wrote: > > > > On Thu, Jan 14, 2021 at 09:30:02AM +0800, Lu Baolu wrote: > > > > > Some vendor IOMMU drivers are able to declare that it is running in a VM > > > > > context. This is very valuable for the features that only want to be > > > > > supported on bare metal. Add a capability bit so that it could be used. > > > > > > > > And how is it used? Who and how will set it? > > > > > > Use the existing iommu_capable(). I should add more descriptions about > > > who and how to use it. > > > > I want to see the code that sets this capability. > > Currently we have Intel VT-d and the virt-iommu setting this capability. > > static bool intel_iommu_capable(enum iommu_cap cap) > { > if (cap == IOMMU_CAP_CACHE_COHERENCY) > return domain_update_iommu_snooping(NULL) == 1; > if (cap == IOMMU_CAP_INTR_REMAP) > return irq_remapping_enabled == 1; > + if (cap == IOMMU_CAP_VIOMMU) > + return caching_mode_enabled(); > > return false; > } > > And, > > +static bool viommu_capable(enum iommu_cap cap) > +{ > + if (cap == IOMMU_CAP_VIOMMU) > + return true; > + > + return false; > +} These two functions are reading this cap and not setting. Where can I see code that does "cap = IOMMU_CAP_VIOMMU" and not "=="? > > Best regards, > baolu