2020-01-31 11:50:54

by Radhey Shyam Pandey

[permalink] [raw]
Subject: [PATCH v3 -next 3/4] net: emaclite: Fix arm64 compilation warnings

From: Michal Simek <[email protected]>

Recast pointers with ulong instead of u32 for arm64.
This patch fixes these compilation warnings:

drivers/net/ethernet/xilinx/xilinx_emaclite.c:
In function ‘xemaclite_send_data’:
drivers/net/ethernet/xilinx/xilinx_emaclite.c:335:35:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
addr = (void __iomem __force *)((u32 __force)addr ^
^
drivers/net/ethernet/xilinx/xilinx_emaclite.c:335:10:
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
addr = (void __iomem __force *)((u32 __force)addr ^
^
drivers/net/ethernet/xilinx/xilinx_emaclite.c:
In function ‘xemaclite_recv_data’:
drivers/net/ethernet/xilinx/xilinx_emaclite.c:397:36:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
addr = (void __iomem __force *)((u32 __force)addr ^
^
drivers/net/ethernet/xilinx/xilinx_emaclite.c:397:11:
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
addr = (void __iomem __force *)((u32 __force)addr ^
^
drivers/net/ethernet/xilinx/xilinx_emaclite.c:
In function ‘xemaclite_rx_handler’:
drivers/net/ethernet/xilinx/xilinx_emaclite.c:97:42:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT)
^
drivers/net/ethernet/xilinx/xilinx_emaclite.c:612:10:
note: in expansion of macro ‘BUFFER_ALIGN’
align = BUFFER_ALIGN(skb->data);
^~~~~~~~~~~~
In file included from ./include/linux/dma-mapping.h:7,
from ./include/linux/skbuff.h:31,
from ./include/linux/if_ether.h:19,
from ./include/uapi/linux/ethtool.h:19,
from ./include/linux/ethtool.h:18,
from ./include/linux/netdevice.h:37,
from drivers/net/ethernet/xilinx/xilinx_emaclite.c:12:
drivers/net/ethernet/xilinx/xilinx_emaclite.c:
In function ‘xemaclite_of_probe’:
drivers/net/ethernet/xilinx/xilinx_emaclite.c:1191:4:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
(unsigned int __force)lp->base_addr, ndev->irq);
^
./include/linux/device.h:1780:33: note: in definition of macro ‘dev_info’
_dev_info(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~

Signed-off-by: Michal Simek <[email protected]>
Signed-off-by: Radhey Shyam Pandey <[email protected]>
---
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
index 7f98728..96e9d21 100644
--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
@@ -94,7 +94,7 @@
#define ALIGNMENT 4

/* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. */
-#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT)
+#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT)

#ifdef __BIG_ENDIAN
#define xemaclite_readl ioread32be
@@ -332,7 +332,7 @@ static int xemaclite_send_data(struct net_local *drvdata, u8 *data,
* if it is configured in HW
*/

- addr = (void __iomem __force *)((u32 __force)addr ^
+ addr = (void __iomem __force *)((ulong __force)addr ^
XEL_BUFFER_OFFSET);
reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET);

@@ -394,7 +394,7 @@ static u16 xemaclite_recv_data(struct net_local *drvdata, u8 *data, int maxlen)
* will correct on subsequent calls
*/
if (drvdata->rx_ping_pong != 0)
- addr = (void __iomem __force *)((u32 __force)addr ^
+ addr = (void __iomem __force *)((ulong __force)addr ^
XEL_BUFFER_OFFSET);
else
return 0; /* No data was available */
@@ -1186,9 +1186,9 @@ static int xemaclite_of_probe(struct platform_device *ofdev)
}

dev_info(dev,
- "Xilinx EmacLite at 0x%08X mapped to 0x%08X, irq=%d\n",
+ "Xilinx EmacLite at 0x%08X mapped to 0x%08lX, irq=%d\n",
(unsigned int __force)ndev->mem_start,
- (unsigned int __force)lp->base_addr, ndev->irq);
+ (unsigned long __force)lp->base_addr, ndev->irq);
return 0;

error:
--
2.7.4


2020-01-31 13:39:18

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH v3 -next 3/4] net: emaclite: Fix arm64 compilation warnings

On Fri, Jan 31, 2020 at 05:17:49PM +0530, Radhey Shyam Pandey wrote:
>
> /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. */
> -#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT)
> +#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT)

Hi Radhey

linux/kernel.h has a few interesting macros, like

#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))

These are more likely to be correct across all architectures than
anything you role yourself.

Andrew

2020-02-10 14:27:46

by Radhey Shyam Pandey

[permalink] [raw]
Subject: RE: [PATCH v3 -next 3/4] net: emaclite: Fix arm64 compilation warnings

> -----Original Message-----
> From: Andrew Lunn <[email protected]>
> Sent: Friday, January 31, 2020 7:08 PM
> To: Radhey Shyam Pandey <[email protected]>
> Cc: [email protected]; [email protected]; linux-
> [email protected]; Anirudha Sarangi <[email protected]>; Michal Simek
> <[email protected]>; [email protected];
> [email protected]; John Linn <[email protected]>; linux-arm-
> [email protected]
> Subject: Re: [PATCH v3 -next 3/4] net: emaclite: Fix arm64 compilation warnings
>
> On Fri, Jan 31, 2020 at 05:17:49PM +0530, Radhey Shyam Pandey wrote:
> >
> > /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment.
> */
> > -#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT)
> > +#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT)
>
> Hi Radhey
>
> linux/kernel.h has a few interesting macros, like
>
> #define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
>
> These are more likely to be correct across all architectures than
> anything you role yourself.
>
Thanks for the review. I agree using a kernel macro is preferred. However,
as a second thought it seems we can get rid of this custom BUFFER_ALIGN
macro and simply calling skb_reserve(skb, NET_IP_ALIGN) will make the
protocol header to be aligned on at least a 4-byte boundary.

> Andrew