diff options
| -rw-r--r-- | drivers/iommu/arm-smmu.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index f417e89e1e7e..7243af3b891f 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c | |||
| @@ -377,6 +377,7 @@ struct arm_smmu_cfg { | |||
| 377 | u32 cbar; | 377 | u32 cbar; |
| 378 | pgd_t *pgd; | 378 | pgd_t *pgd; |
| 379 | }; | 379 | }; |
| 380 | #define INVALID_IRPTNDX 0xff | ||
| 380 | 381 | ||
| 381 | #define ARM_SMMU_CB_ASID(cfg) ((cfg)->cbndx) | 382 | #define ARM_SMMU_CB_ASID(cfg) ((cfg)->cbndx) |
| 382 | #define ARM_SMMU_CB_VMID(cfg) ((cfg)->cbndx + 1) | 383 | #define ARM_SMMU_CB_VMID(cfg) ((cfg)->cbndx + 1) |
| @@ -840,7 +841,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain, | |||
| 840 | if (IS_ERR_VALUE(ret)) { | 841 | if (IS_ERR_VALUE(ret)) { |
| 841 | dev_err(smmu->dev, "failed to request context IRQ %d (%u)\n", | 842 | dev_err(smmu->dev, "failed to request context IRQ %d (%u)\n", |
| 842 | root_cfg->irptndx, irq); | 843 | root_cfg->irptndx, irq); |
| 843 | root_cfg->irptndx = -1; | 844 | root_cfg->irptndx = INVALID_IRPTNDX; |
| 844 | goto out_free_context; | 845 | goto out_free_context; |
| 845 | } | 846 | } |
| 846 | 847 | ||
| @@ -869,7 +870,7 @@ static void arm_smmu_destroy_domain_context(struct iommu_domain *domain) | |||
| 869 | writel_relaxed(0, cb_base + ARM_SMMU_CB_SCTLR); | 870 | writel_relaxed(0, cb_base + ARM_SMMU_CB_SCTLR); |
| 870 | arm_smmu_tlb_inv_context(root_cfg); | 871 | arm_smmu_tlb_inv_context(root_cfg); |
| 871 | 872 | ||
| 872 | if (root_cfg->irptndx != -1) { | 873 | if (root_cfg->irptndx != INVALID_IRPTNDX) { |
| 873 | irq = smmu->irqs[smmu->num_global_irqs + root_cfg->irptndx]; | 874 | irq = smmu->irqs[smmu->num_global_irqs + root_cfg->irptndx]; |
| 874 | free_irq(irq, domain); | 875 | free_irq(irq, domain); |
| 875 | } | 876 | } |
