|
@@ -2103,12 +2103,16 @@ static int arm_smmu_device_probe(struct platform_device *pdev)
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- if (smmu->version == ARM_SMMU_V2 &&
|
|
|
- smmu->num_context_banks != smmu->num_context_irqs) {
|
|
|
- dev_err(dev,
|
|
|
- "found only %d context interrupt(s) but %d required\n",
|
|
|
- smmu->num_context_irqs, smmu->num_context_banks);
|
|
|
- return -ENODEV;
|
|
|
+ if (smmu->version == ARM_SMMU_V2) {
|
|
|
+ if (smmu->num_context_banks > smmu->num_context_irqs) {
|
|
|
+ dev_err(dev,
|
|
|
+ "found only %d context irq(s) but %d required\n",
|
|
|
+ smmu->num_context_irqs, smmu->num_context_banks);
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Ignore superfluous interrupts */
|
|
|
+ smmu->num_context_irqs = smmu->num_context_banks;
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < smmu->num_global_irqs; ++i) {
|