lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 18 Nov 2020 12:21:50 +0100 From: Eric Auger <eric.auger@...hat.com> To: eric.auger.pro@...il.com, eric.auger@...hat.com, iommu@...ts.linux-foundation.org, linux-kernel@...r.kernel.org, kvm@...r.kernel.org, kvmarm@...ts.cs.columbia.edu, will@...nel.org, joro@...tes.org, maz@...nel.org, robin.murphy@....com, alex.williamson@...hat.com Cc: jean-philippe@...aro.org, zhangfei.gao@...aro.org, zhangfei.gao@...il.com, vivek.gautam@....com, shameerali.kolothum.thodi@...wei.com, jacob.jun.pan@...ux.intel.com, yi.l.liu@...el.com, tn@...ihalf.com, nicoleotsuka@...il.com, yuzenghui@...wei.com Subject: [PATCH v13 14/15] iommu/smmuv3: Accept configs with more than one context descriptor 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@...hat.com> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@...wei.com> --- 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 977c22d08612..ed64699a4a0d 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2905,14 +2905,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; smmu_domain->s1_cfg.set = true; smmu_domain->abort = false; break; -- 2.21.3
Powered by blists - more mailing lists