> -----Original Message----- > From: Auger Eric [mailto:eric.auger@xxxxxxxxxx] > Sent: 01 April 2021 12:49 > To: yuzenghui <yuzenghui@xxxxxxxxxx> > Cc: eric.auger.pro@xxxxxxxxx; iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx; > linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; > kvmarm@xxxxxxxxxxxxxxxxxxxxx; will@xxxxxxxxxx; maz@xxxxxxxxxx; > robin.murphy@xxxxxxx; joro@xxxxxxxxxx; alex.williamson@xxxxxxxxxx; > tn@xxxxxxxxxxxx; zhukeqian <zhukeqian1@xxxxxxxxxx>; > jacob.jun.pan@xxxxxxxxxxxxxxx; yi.l.liu@xxxxxxxxx; wangxingang > <wangxingang5@xxxxxxxxxx>; jiangkunkun <jiangkunkun@xxxxxxxxxx>; > jean-philippe@xxxxxxxxxx; zhangfei.gao@xxxxxxxxxx; zhangfei.gao@xxxxxxxxx; > vivek.gautam@xxxxxxx; Shameerali Kolothum Thodi > <shameerali.kolothum.thodi@xxxxxxxxxx>; nicoleotsuka@xxxxxxxxx; > lushenming <lushenming@xxxxxxxxxx>; vsethi@xxxxxxxxxx; Wanghaibin (D) > <wanghaibin.wang@xxxxxxxxxx> > Subject: Re: [PATCH v14 13/13] iommu/smmuv3: Accept configs with more than > one context descriptor > > Hi Zenghui, > > On 3/30/21 11:23 AM, Zenghui Yu wrote: > > Hi Eric, > > > > On 2021/2/24 4:56, Eric Auger wrote: > >> In preparation for vSVA, let's accept userspace provided configs > >> with more than one CD. We check the max CD against the host iommu > >> capability and also the format (linear versus 2 level). > >> > >> Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> > >> Signed-off-by: Shameer Kolothum > <shameerali.kolothum.thodi@xxxxxxxxxx> > >> --- > >> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 13 ++++++++----- > >> 1 file changed, 8 insertions(+), 5 deletions(-) > >> > >> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > >> b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > >> index 332d31c0680f..ab74a0289893 100644 > >> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > >> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > >> @@ -3038,14 +3038,17 @@ static int > arm_smmu_attach_pasid_table(struct > >> iommu_domain *domain, > >> if (smmu_domain->s1_cfg.set) > >> goto out; > >> - /* > >> - * we currently support a single CD so s1fmt and s1dss > >> - * fields are also ignored > >> - */ > >> - if (cfg->pasid_bits) > >> + list_for_each_entry(master, &smmu_domain->devices, > >> domain_head) { > >> + if (cfg->pasid_bits > master->ssid_bits) > >> + goto out; > >> + } > >> + if (cfg->vendor_data.smmuv3.s1fmt == > >> STRTAB_STE_0_S1FMT_64K_L2 && > >> + !(smmu->features & > ARM_SMMU_FEAT_2_LVL_CDTAB)) > >> goto out; > >> smmu_domain->s1_cfg.cdcfg.cdtab_dma = cfg->base_ptr; > >> + smmu_domain->s1_cfg.s1cdmax = cfg->pasid_bits; > >> + smmu_domain->s1_cfg.s1fmt = > cfg->vendor_data.smmuv3.s1fmt; > > > > And what about the SIDSS field? > > > I added this patch upon Shameer's request, to be more vSVA friendly. > Hower this series does not really target multiple CD support. At the > moment the driver only supports STRTAB_STE_1_S1DSS_SSID0 (0x2) I think. > At this moment maybe I can only check the s1dss field is 0x2. Or simply > removes this patch? > > Thoughts? Right. This was useful for vSVA tests. But yes, to properly support multiple CDs we need to pass the S1DSS from Qemu. And that requires further changes. So I think it's better to remove this patch and reject S1CDMAX != 0 cases. Thanks, Shameer > > Eric _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm