[PATCH v3 01/13] iommu/arm: change some structure member types in arm_smmu_device

Zhen Lei thunder.leizhen at huawei.com
Wed Jul 9 23:52:54 PDT 2014


Some structure members, such as s1_output_size, it's impossible large than 4G.
Change unsigned long to u32 can save a few memory on ARM64.

Signed-off-by: Zhen Lei <thunder.leizhen at huawei.com>
---
 drivers/iommu/arm-smmu.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 1599354..d0f0021 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -352,8 +352,8 @@ struct arm_smmu_device {
 	struct device_node		*parent_of_node;

 	void __iomem			*base;
-	unsigned long			size;
-	unsigned long			pagesize;
+	u32				size;
+	u32				pagesize;

 #define ARM_SMMU_FEAT_COHERENT_WALK	(1 << 0)
 #define ARM_SMMU_FEAT_STREAM_MATCH	(1 << 1)
@@ -374,9 +374,9 @@ struct arm_smmu_device {
 	u32				num_mapping_groups;
 	DECLARE_BITMAP(smr_map, ARM_SMMU_MAX_SMRS);

-	unsigned long			input_size;
-	unsigned long			s1_output_size;
-	unsigned long			s2_output_size;
+	u32				input_size;
+	u32				s1_output_size;
+	u32				s2_output_size;

 	u32				num_global_irqs;
 	u32				num_context_irqs;
@@ -1676,7 +1676,7 @@ static void arm_smmu_device_reset(struct arm_smmu_device *smmu)
 	writel(reg, ARM_SMMU_GR0_NS(smmu) + ARM_SMMU_GR0_sCR0);
 }

-static int arm_smmu_id_size_to_bits(int size)
+static u32 arm_smmu_id_size_to_bits(u32 size)
 {
 	switch (size) {
 	case 0:
@@ -1697,7 +1697,7 @@ static int arm_smmu_id_size_to_bits(int size)

 static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
 {
-	unsigned long size;
+	u32 size;
 	void __iomem *gr0_base = ARM_SMMU_GR0(smmu);
 	u32 id;

@@ -1782,8 +1782,8 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
 	size = 1 << (((id >> ID1_NUMPAGENDXB_SHIFT) & ID1_NUMPAGENDXB_MASK) + 1);
 	size *= (smmu->pagesize << 1);
 	if (smmu->size != size)
-		dev_warn(smmu->dev, "SMMU address space size (0x%lx) differs "
-			"from mapped region size (0x%lx)!\n", size, smmu->size);
+		dev_warn(smmu->dev, "SMMU address space size (0x%x) differs "
+			"from mapped region size (0x%x)!\n", size, smmu->size);

 	smmu->num_s2_context_banks = (id >> ID1_NUMS2CB_SHIFT) &
 				      ID1_NUMS2CB_MASK;
@@ -1804,21 +1804,21 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
 	 * allocation (PTRS_PER_PGD).
 	 */
 #ifdef CONFIG_64BIT
-	smmu->s1_output_size = min((unsigned long)VA_BITS, size);
+	smmu->s1_output_size = min((u32)VA_BITS, size);
 #else
-	smmu->s1_output_size = min(32UL, size);
+	smmu->s1_output_size = min(32U, size);
 #endif

 	/* The stage-2 output mask is also applied for bypass */
 	size = arm_smmu_id_size_to_bits((id >> ID2_OAS_SHIFT) & ID2_OAS_MASK);
-	smmu->s2_output_size = min((unsigned long)PHYS_MASK_SHIFT, size);
+	smmu->s2_output_size = min((u32)PHYS_MASK_SHIFT, size);

 	if (smmu->version == 1) {
 		smmu->input_size = 32;
 	} else {
 #ifdef CONFIG_64BIT
 		size = (id >> ID2_UBS_SHIFT) & ID2_UBS_MASK;
-		size = min(VA_BITS, arm_smmu_id_size_to_bits(size));
+		size = min((u32)VA_BITS, arm_smmu_id_size_to_bits(size));
 #else
 		size = 32;
 #endif
@@ -1834,7 +1834,7 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
 	}

 	dev_notice(smmu->dev,
-		   "\t%lu-bit VA, %lu-bit IPA, %lu-bit PA\n",
+		   "\t%u-bit VA, %u-bit IPA, %u-bit PA\n",
 		   smmu->input_size, smmu->s1_output_size, smmu->s2_output_size);
 	return 0;
 }
--
1.8.0





More information about the linux-arm-kernel mailing list