Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e38074b9 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "iommu/arm-smmu: Ignore some debug registers for QSMMUV2"

parents 8df771b5 400baa00
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -1195,7 +1195,18 @@ static void arm_smmu_testbus_dump(struct arm_smmu_device *smmu, u16 sid)
	}
}

static void __arm_smmu_tlb_sync_timeout(struct arm_smmu_device *smmu)
static void __arm_smmu_tlb_sync_timeout_SMMUV2(struct arm_smmu_device *smmu)
{

	static DEFINE_RATELIMIT_STATE(_rs,
				      DEFAULT_RATELIMIT_INTERVAL,
				      DEFAULT_RATELIMIT_BURST);
	if (__ratelimit(&_rs))
		dev_err(smmu->dev,
			"TLB sync timed out -- SMMUV2 may be deadlocked\n");
}

static void __arm_smmu_tlb_sync_timeout_SMMUV500(struct arm_smmu_device *smmu)
{
	u32 sync_inv_ack, tbu_pwr_status, sync_inv_progress;
	u32 tbu_inv_pending = 0, tbu_sync_pending = 0;
@@ -1241,7 +1252,7 @@ static void __arm_smmu_tlb_sync_timeout(struct arm_smmu_device *smmu)
		unsigned long tbu_id, tbus_t = tbu_ids;

		dev_err(smmu->dev,
			"TLB sync timed out -- SMMU may be deadlocked\n"
			"TLB sync timed out -- SMMUV500 may be deadlocked\n"
			"TBU ACK 0x%x TBU PWR 0x%x TCU sync_inv 0x%x\n",
			sync_inv_ack, tbu_pwr_status, sync_inv_progress);
		dev_err(smmu->dev,
@@ -1274,8 +1285,6 @@ static void __arm_smmu_tlb_sync_timeout(struct arm_smmu_device *smmu)
		/*dump TCU testbus*/
		arm_smmu_testbus_dump(smmu, U16_MAX);
	}

	BUG_ON(IS_ENABLED(CONFIG_IOMMU_TLBSYNC_DEBUG));
}

/* Wait for any pending TLB invalidations to complete */
@@ -1295,7 +1304,12 @@ static int __arm_smmu_tlb_sync(struct arm_smmu_device *smmu,
			inc *= 2;
	}
	trace_tlbsync_timeout(smmu->dev, 0);
	__arm_smmu_tlb_sync_timeout(smmu);
	if (smmu->model == QCOM_SMMUV500)
		__arm_smmu_tlb_sync_timeout_SMMUV500(smmu);
	else if (smmu->model == QCOM_SMMUV2)
		__arm_smmu_tlb_sync_timeout_SMMUV2(smmu);

	BUG_ON(IS_ENABLED(CONFIG_IOMMU_TLBSYNC_DEBUG));
	return -EINVAL;
}