mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
iommu/omap: Fix -Woverflow warnings when compiling on 64-bit architectures
Although the OMAP IOMMU driver supports only ARMv7 (32-bit) platforms,
it can be compile tested for other architectures, including 64-bit ones.
In such case the warning appears:
In file included from drivers/iommu/omap-iommu.c:33:0:
drivers/iommu/omap-iommu.c: In function 'omap_iommu_iova_to_phys':
>> drivers/iommu/omap-iopgtable.h:44:21: warning: large integer implicitly truncated to unsigned type [-Woverflow]
#define IOPTE_MASK (~(IOPTE_SIZE - 1))
^
>> drivers/iommu/omap-iommu.c:1641:41: note: in expansion of macro 'IOPTE_MASK'
ret = omap_iommu_translate(*pte, da, IOPTE_MASK);
^~~~~~~~~~
Fix this by using architecture-depending types in omap_iommu_translate():
1. Pointer should be cast to unsigned long,
2. Virtual addresses should be cast to dma_addr_t.
On 32-bit this will be the same as original code (using u32). On 64-bit
it should produce meaningful result, although it does not really matter.
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
committed by
Joerg Roedel
parent
6135a891dc
commit
d84edddc44
@@ -63,7 +63,8 @@
|
|||||||
*
|
*
|
||||||
* va to pa translation
|
* va to pa translation
|
||||||
*/
|
*/
|
||||||
static inline phys_addr_t omap_iommu_translate(u32 d, u32 va, u32 mask)
|
static inline phys_addr_t omap_iommu_translate(unsigned long d, dma_addr_t va,
|
||||||
|
dma_addr_t mask)
|
||||||
{
|
{
|
||||||
return (d & mask) | (va & (~mask));
|
return (d & mask) | (va & (~mask));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user