On Wed, Aug 14, 2024 at 03:59:55PM +0200, Marc Gonzalez wrote: > On qcom msm8998, writing to the last context bank of lpass_q6_smmu > (base address 0x05100000) produces a system freeze & reboot. > > Specifically, here: > > qsmmu->bypass_cbndx = smmu->num_context_banks - 1; > arm_smmu_cb_write(smmu, qsmmu->bypass_cbndx, ARM_SMMU_CB_SCTLR, 0); > > and here: > > arm_smmu_write_context_bank(smmu, i); > arm_smmu_cb_write(smmu, i, ARM_SMMU_CB_FSR, ARM_SMMU_CB_FSR_FAULT); > > It is likely that FW reserves the last context bank for its own use, > thus a simple work-around would be: DON'T USE IT in Linux. > > Signed-off-by: Marc Gonzalez <mgonzalez@xxxxxxxxxx> > --- > Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml > index 280b4e49f2191..f9b23aef351b0 100644 > --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml > @@ -204,6 +204,12 @@ properties: > access to SMMU configuration registers. In this case non-secure aliases of > secure registers have to be used during SMMU configuration. > > + qcom,last-ctx-bank-reserved: > + type: boolean > + description: > + FW reserves the last context bank of this SMMU for its own use. > + If Linux tries to use it, Linux gets nuked. How is this Qualcomm specific? Presumably any implementation could do this if there's no way to properly partition things. Robin? Also, this property isn't very flexible. What happens when it is not the last bank or more than 1 bank reserved? This should probably be a mask instead. Rob