From 86b4d3af601384f977909a5a3959d3cde75e8616 Mon Sep 17 00:00:00 2001 From: Qingqing Zhou Date: Wed, 15 Jun 2022 15:42:43 +0800 Subject: [PATCH] iommu: Fix compilation issues on sdxbaagha Current codes may don't consider the 32-bit possibility, some compilation errors happen when try to enable smmu on sdxbaagha: 1. arm-smmu-qcom.c: "error: shift count is negative" reports at "FIELD_GET(QTB_OVR_ECATS_OUTFLD0_PA, val)". 2. qcom-iommu-debug-user.c: "error: incompatible pointer types passing" reports at "if (kstrtox_from_user(ubuf, count, 0, &iova))". 3. qcom-io-pgtable-arm.c: "error: implicit declaration of function 'FIELD_GET'" reports at "FIELD_GET(TOP_IGNORED_MASK, table_pte)". 4. qcom-iommu-debug-user.c: "error: implicit declaration of function 'FIELD_GET'" reports at "FIELD_GET(ARM_SMMU_SMR_ID, fwspec->ids[0])". 5. qcom-iommu-debug.c: "error: implicit declaration of function 'FIELD_GET'" reports at "FIELD_GET(ARM_SMMU_SMR_ID, (fwspec->ids[0]))". Change-Id: I38b96e411eaf37d87e48b4c9fe860a94643bc5b7 Signed-off-by: Qingqing Zhou --- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 3 ++- drivers/iommu/qcom-io-pgtable-arm.c | 1 + drivers/iommu/qcom-iommu-debug-user.c | 8 ++++++++ drivers/iommu/qcom-iommu-debug.c | 3 ++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c index 2b25c59fc943..68d0ec6d188a 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -502,7 +503,7 @@ static const struct arm_smmu_impl qcom_smmu_impl = { #define QTB_OVR_ECATS_STATUS_DONE BIT(0) #define QTB_OVR_ECATS_OUTFLD0 0x458 -#define QTB_OVR_ECATS_OUTFLD0_PA GENMASK(63, 12) +#define QTB_OVR_ECATS_OUTFLD0_PA GENMASK_ULL(63, 12) #define QTB_OVR_ECATS_OUTFLD0_FAULT_TYPE GENMASK(5, 4) #define QTB_OVR_ECATS_OUTFLD0_FAULT BIT(0) diff --git a/drivers/iommu/qcom-io-pgtable-arm.c b/drivers/iommu/qcom-io-pgtable-arm.c index a9144d756d6a..916a2b0e715d 100644 --- a/drivers/iommu/qcom-io-pgtable-arm.c +++ b/drivers/iommu/qcom-io-pgtable-arm.c @@ -12,6 +12,7 @@ #define pr_fmt(fmt) "arm-lpae io-pgtable: " fmt #include +#include #include #include #include diff --git a/drivers/iommu/qcom-iommu-debug-user.c b/drivers/iommu/qcom-iommu-debug-user.c index c4dff03d350b..9a06d6276d3c 100644 --- a/drivers/iommu/qcom-iommu-debug-user.c +++ b/drivers/iommu/qcom-iommu-debug-user.c @@ -1,9 +1,11 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. * */ +#include #include #include #include @@ -11,9 +13,15 @@ #include #include "qcom-iommu-debug.h" +#ifdef CONFIG_64BIT #define kstrtoux kstrtou64 #define kstrtox_from_user kstrtoull_from_user #define kstrtosize_t kstrtoul +#else +#define kstrtoux kstrtou32 +#define kstrtox_from_user kstrtouint_from_user +#define kstrtosize_t kstrtouint +#endif static void *test_virt_addr; static DEFINE_MUTEX(test_virt_addr_lock); diff --git a/drivers/iommu/qcom-iommu-debug.c b/drivers/iommu/qcom-iommu-debug.c index 134068ce8e9d..feb51650662b 100644 --- a/drivers/iommu/qcom-iommu-debug.c +++ b/drivers/iommu/qcom-iommu-debug.c @@ -1,11 +1,12 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. - * + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #define pr_fmt(fmt) "iommu-debug: %s: " fmt, __func__ +#include #include #include #include