Re: [PATCH] net: mdio-octeon: Fix pointer/integer casts

From: Andrew Lunn
Date: Tue Nov 12 2019 - 08:23:20 EST


On Mon, Nov 11, 2019 at 09:46:58PM -0800, David Miller wrote:
> From: Olof Johansson <olof@xxxxxxxxx>
> Date: Sun, 10 Nov 2019 16:42:11 -0800
>
> > -static inline void oct_mdio_writeq(u64 val, u64 addr)
> > +static inline void oct_mdio_writeq(u64 val, void __iomem *addr)
> > {
> > - cvmx_write_csr(addr, val);
> > + cvmx_write_csr((u64)addr, val);
> > }
>
> I hate stuff like this, I think you really need to fix this from the bottom
> up or similar. MMIO and such addresses are __iomem pointers, period.

Yes, i agree, but did not want to push the work to Olof. The point of
COMPILE_TEST is to find issues like this, code which should be
architecture independent, but is not. The cast just papers over the
cracks.

At a minimum, could we fix the stub cvmx_write_csr() used for
everything !MIPS. That should hopefully fix everything !MIPS, but
cause MIPS to start issuing warning. The MIPS folks can then cleanup
their code, which is really what is broken here.

Andrew