Hi Jacob, On 5/14/19 12:16 AM, Jacob Pan wrote: > On Mon, 13 May 2019 18:09:48 +0100 > Jean-Philippe Brucker <jean-philippe.bruc...@arm.com> wrote: > >> On 13/05/2019 17:50, Auger Eric wrote: >>>> struct iommu_inv_pasid_info { >>>> #define IOMMU_INV_PASID_FLAGS_PASID (1 << 0) >>>> #define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1) >>>> __u32 flags; >>>> __u32 archid; >>>> __u64 pasid; >>>> }; >>> I agree it does the job now. However it looks a bit strange to do a >>> PASID based invalidation in my case - SMMUv3 nested stage - where I >>> don't have any PASID involved. >>> >>> Couldn't we call it context based invalidation then? A context can >>> be tagged by a PASID or/and an ARCHID. >> >> I think calling it "context" would be confusing as well (I shouldn't >> have used it earlier), since VT-d uses that name for device table >> entries (=STE on Arm SMMU). Maybe "addr_space"? >> > I am still struggling to understand what ARCHID is after scanning > through SMMUv3.1 spec. It seems to be a constant for a given SMMU. Why > do you need to pass it down every time? Could you point to me the > document or explain a little more on ARCHID use cases. > We have three fileds called pasid under this struct > iommu_cache_invalidate_info{} > Gets confusing :) archid is a generic term. That's why you did not find it in the spec ;-)
On ARM SMMU the archid is called the ASID (Address Space ID, up to 16 bits. The ASID is stored in the Context Descriptor Entry (your PASID entry) and thus characterizes a given stage 1 translation "context"/"adress space". At the moment the ASID is allocated per iommu domain. With aux domains we should have one ASID per aux domain, Jean-Philippe said. ASID tags IOTLB S1 entries. As the ASID is part of the "context descriptor" which is owned by the guest, the API must pass it somehow. 4.4.1.2 CMD_TLBI_NH_ASID(VMID, ASID) invalidation command allows to invalidate all IOTLB S1 entries for a given VMID/ASID and this is the functionality which is currently missing in the API. This is not an address based invalidation or a "pure" PASID based invalidation. At the moment we don't support PASIDs on ARM and I need this capability. Thanks Eric >> Thanks, >> Jean >> >>> >>> Domain invalidation would invalidate all the contexts belonging to >>> that domain. >>> >>> Thanks >>> >>> Eric > > [Jacob Pan] >