> Subject: [PATCH 2/8] arm64: smmu: Allow arm_smmu_init_context_bank to > return an error > > From: Jan Kiszka <jan.kis...@siemens.com> > > If arm_smmu_init_context_bank detects an invalid/unsupported pa_size, > allow it to return an error and handle that properly. > > Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> > --- > hypervisor/arch/arm64/smmu.c | 18 ++++++++++-------- > 1 file changed, 10 insertions(+), 8 deletions(-) > > diff --git a/hypervisor/arch/arm64/smmu.c b/hypervisor/arch/arm64/smmu.c > index 8975e8b7..3b2d6e15 100644 > --- a/hypervisor/arch/arm64/smmu.c > +++ b/hypervisor/arch/arm64/smmu.c > @@ -349,9 +349,9 @@ static int arm_smmu_tlb_sync_global(struct > arm_smmu_device *smmu) > return ret; > } > > -static void arm_smmu_init_context_bank(struct arm_smmu_device *smmu, > - struct arm_smmu_cfg *cfg, > - struct cell *cell) > +static int arm_smmu_init_context_bank(struct arm_smmu_device *smmu, > + struct arm_smmu_cfg *cfg, > + struct cell *cell) > { > struct arm_smmu_cb *cb = &smmu->cbs[cfg->cbndx]; > struct paging_structures *pg_structs; > @@ -400,10 +400,7 @@ static void arm_smmu_init_context_bank(struct > arm_smmu_device *smmu, > reg |= (ARM_LPAE_TCR_PS_52_BIT << ARM_LPAE_TCR_PS_SHIFT); > break; > default: > - printk("Not supported\n"); > - break; > - /* TODO */ > - //goto out_free_data; > + return trace_error(-EIO); > } > > reg |= (64ULL - smmu->ipa_size) << ARM_LPAE_TCR_T0SZ_SHIFT; @@ > -417,6 +414,8 @@ static void arm_smmu_init_context_bank(struct > arm_smmu_device *smmu, > vttbr |= (u64)cell->config->id << VTTBR_VMID_SHIFT; > vttbr |= (u64)(cell_table & TTBR_MASK); > cb->ttbr[0] = vttbr; > + > + return 0; > } > > static void arm_smmu_write_context_bank(struct arm_smmu_device > *smmu, int idx) @@ -877,7 +876,10 @@ static int arm_smmu_cell_init(struct > cell *cell) > cfg->irptndx = cfg->cbndx; > cfg->vmid = cfg->cbndx + 1; > > - arm_smmu_init_context_bank(&smmu_device[i], cfg, cell); > + ret = arm_smmu_init_context_bank(&smmu_device[i], cfg, cell); > + if (ret) > + return ret; > + > arm_smmu_write_context_bank(&smmu_device[i], cfg->cbndx); > > smr = smmu_device[i].smrs;
Reviewed-by: Peng Fan <peng....@nxp.com> > -- > 2.26.2 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to jailhouse-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/DB6PR0402MB276075970479238C9A00C91488340%40DB6PR0402MB2760.eurprd04.prod.outlook.com.