On Sun, Mar 7, 2021 at 12:26 PM Marek Behún <marek.be...@nic.cz> wrote: > > In arch/arm/mach-mvebu/dram.c we always include axp's xor.h for common > XOR definitions, regardless whether we compile for axp or a38x. > > But the declaration of this function has a different signature in axp's > xor.h from the one used in a38x' implementation - one parameter is u64 > instead of u32. This can result in wrong argument's being passed to that > function on a38x with no one the wiser. > > I discovered this when building U-Boot for Turris Omnia with LTO. The > compiler complains about the different signatures being thrown into the > same linking process: > > axp/xor.h:67:5: warning: type of ‘mv_xor_mem_init’ does not match > original declaration [-Wlto-type-mismatch] > 67 | int mv_xor_mem_init(u32 chan, u32 start_ptr, u32 block_size, > | ^ > a38x/xor.c:165:5: note: type mismatch in parameter 3 > 165 | int mv_xor_mem_init(u32 chan, u32 start_ptr, unsigned long long > | ^ > a38x/xor.c:165:5: note: type ‘long long unsigned int’ should match > type ‘u32’ > > Fix this by changing the type of the block_size argument in the axp's > implementation and header file to the one used in a38x (and upstream > mv-ddr-marvell). > > Signed-off-by: Marek Behún <marek.be...@nic.cz> > Reviewed-by: Stefan Roese <s...@denx.de> > --- > drivers/ddr/marvell/axp/xor.c | 4 ++-- > drivers/ddr/marvell/axp/xor.h | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) >
Reviewed-by: Bin Meng <bmeng...@gmail.com>