Unverified Commit ac62b5ff authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!5229 iommu/arm-smmu-v3: Disable ECMDQ before reset

parents b3ecc8a5 1bfd4e0b
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -4608,6 +4608,20 @@ static int arm_smmu_ecmdq_reset(struct arm_smmu_device *smmu)
			q->llq.prod = 0;
			q->llq.cons = 0;
		}

		reg = readl(q->prod_reg);
		if (reg & ECMDQ_PROD_EN) {
			/* disable ecmdq */
			writel(reg & ~ECMDQ_PROD_EN, q->prod_reg);
			ret = readl_relaxed_poll_timeout(q->cons_reg, reg,
				!(reg & ECMDQ_CONS_ENACK), 1, ARM_SMMU_POLL_TIMEOUT_US);
			if (ret) {
				dev_warn(smmu->dev, "ecmdq[%d] disable failed\n", i);
				smmu->ecmdq_enabled = 0;
				return ret;
			}
		}

		writeq_relaxed(q->q_base, ecmdq->base + ARM_SMMU_ECMDQ_BASE);
		writel_relaxed(q->llq.prod, ecmdq->base + ARM_SMMU_ECMDQ_PROD);
		writel_relaxed(q->llq.cons, ecmdq->base + ARM_SMMU_ECMDQ_CONS);