aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoj Kumar <manoj.kumar3@arm.com>2019-08-13 11:43:11 +0100
committerDeepak Pandey <Deepak.Pandey@arm.com>2019-08-28 11:11:59 +0530
commit5691250385b540d405f386a0d318894e7b8c4ad0 (patch)
tree9d8ff410a73a1d640eda009dbab72e4ccda759dc
parentd16a38b0ae9ed4445820e1e700260f0e054399a7 (diff)
iommu/arm-smmu-v3: workaround for ATC_INV_SIZE_ALL in N1SDPN1SDP-2019.09.13
ATC_INV_SIZE_ALL request should automatically translate to ATS address which is not happening in SMMUv3 version gone into N1SDP platform. This workaround manually sets the ATS address field to proper value for ATC_INV_SIZE_ALL command. Change-Id: If89465be94720a62be85e1e6612f17e93fa9b8a5 Signed-off-by: Manoj Kumar <manoj.kumar3@arm.com>
-rw-r--r--drivers/iommu/arm-smmu-v3.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
index 0fee8f7957ec..7896133231af 100644
--- a/drivers/iommu/arm-smmu-v3.c
+++ b/drivers/iommu/arm-smmu-v3.c
@@ -443,6 +443,7 @@ struct arm_smmu_cmdq_ent {
} tlbi;
#define CMDQ_OP_ATC_INV 0x40
+ #define ATC_INV_ADDR_ALL 0x7FFFFFFFFFFFF000UL
#define ATC_INV_SIZE_ALL 52
struct {
u32 sid;
@@ -1461,6 +1462,7 @@ arm_smmu_atc_inv_to_cmd(int ssid, unsigned long iova, size_t size,
};
if (!size) {
+ cmd->atc.addr = ATC_INV_ADDR_ALL;
cmd->atc.size = ATC_INV_SIZE_ALL;
return;
}