> 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.

Reply via email to