[bug report] iommu: rockchip: Add support for iommu v2

Robin Murphy robin.murphy at arm.com
Fri Jun 18 03:26:40 PDT 2021


On 2021-06-18 10:15, Dan Carpenter wrote:
> Hello Benjamin Gaignard,
> 
> The patch c55356c534aa: "iommu: rockchip: Add support for iommu v2"
> from Jun 4, 2021, leads to the following static checker warning:
> 
> 	drivers/iommu/rockchip-iommu.c:552 rk_dte_addr_phys_v2()
> 	warn: potential shift truncation.  '0xff00000000 (0,4294967296-1095216660480) << 28'
> 
> drivers/iommu/rockchip-iommu.c
>     544  }
>     545
>     546  #define DT_HI_MASK GENMASK_ULL(39, 32)
>                             ^^^^^^^^^^^^^^^^^^^
> 
>     547  #define DT_SHIFT   28
>     548
>     549  static inline phys_addr_t rk_dte_addr_phys_v2(u32 addr)
>     550  {
>     551          return (phys_addr_t)(addr & RK_DTE_PT_ADDRESS_MASK) |
>     552                 ((addr & DT_HI_MASK) << DT_SHIFT);
>                           ^^^^^^^^^^^^^^^^^
> Is addr supposed to be a u64?

Hmm, the cast is in the wrong place to be useful, but the shifting and 
masking to unpack the high address bits also looks backwards anyway. I 
think the whole expression should probably be something more like:

	(((phys_addr_t)addr << DT_SHIFT) & DT_HI_MASK) |
	(addr & RK_DTE_PT_ADDRESS_MASK);

Robin.

> 
>     553  }
> 
> regards,
> dan carpenter
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 



More information about the Linux-rockchip mailing list