mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
iommu/arm-smmu-v3: Encapsulate ctx_desc_cfg init in alloc_cd_tables
This is slighlty cleaner: arm_smmu_ctx_desc_cfg is initialized in a single function instead of having pieces set ahead-of time by its caller. Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Michael Shavit <mshavit@google.com> Tested-by: Nicolin Chen <nicolinc@nvidia.com> Link: https://lore.kernel.org/r/20230915211705.v8.3.I875254464d044a8ce8b3a2ad6beb655a4a006456@changeid Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
1f85888340
commit
e3aad74c51
|
|
@ -1132,7 +1132,8 @@ int arm_smmu_write_ctx_desc(struct arm_smmu_domain *smmu_domain, int ssid,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int arm_smmu_alloc_cd_tables(struct arm_smmu_domain *smmu_domain)
|
||||
static int arm_smmu_alloc_cd_tables(struct arm_smmu_domain *smmu_domain,
|
||||
struct arm_smmu_master *master)
|
||||
{
|
||||
int ret;
|
||||
size_t l1size;
|
||||
|
|
@ -1140,6 +1141,7 @@ static int arm_smmu_alloc_cd_tables(struct arm_smmu_domain *smmu_domain)
|
|||
struct arm_smmu_device *smmu = smmu_domain->smmu;
|
||||
struct arm_smmu_ctx_desc_cfg *cdcfg = &smmu_domain->cd_table;
|
||||
|
||||
cdcfg->s1cdmax = master->ssid_bits;
|
||||
max_contexts = 1 << cdcfg->s1cdmax;
|
||||
|
||||
if (!(smmu->features & ARM_SMMU_FEAT_2_LVL_CDTAB) ||
|
||||
|
|
@ -2092,7 +2094,6 @@ static int arm_smmu_domain_finalise_s1(struct arm_smmu_domain *smmu_domain,
|
|||
int ret;
|
||||
u32 asid;
|
||||
struct arm_smmu_device *smmu = smmu_domain->smmu;
|
||||
struct arm_smmu_ctx_desc_cfg *cd_table = &smmu_domain->cd_table;
|
||||
struct arm_smmu_ctx_desc *cd = &smmu_domain->cd;
|
||||
typeof(&pgtbl_cfg->arm_lpae_s1_cfg.tcr) tcr = &pgtbl_cfg->arm_lpae_s1_cfg.tcr;
|
||||
|
||||
|
|
@ -2105,11 +2106,9 @@ static int arm_smmu_domain_finalise_s1(struct arm_smmu_domain *smmu_domain,
|
|||
if (ret)
|
||||
goto out_unlock;
|
||||
|
||||
cd_table->s1cdmax = master->ssid_bits;
|
||||
|
||||
smmu_domain->stall_enabled = master->stall_enabled;
|
||||
|
||||
ret = arm_smmu_alloc_cd_tables(smmu_domain);
|
||||
ret = arm_smmu_alloc_cd_tables(smmu_domain, master);
|
||||
if (ret)
|
||||
goto out_free_asid;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user