Hi Geert, On Fri, Sep 14, 2018 at 01:35:22PM +0200, Geert Uytterhoeven wrote: > Hi Angelo, > > Thanks for your patch! > > On Fri, Sep 14, 2018 at 9:12 AM Angelo Dureghello <angelo@xxxxxxxx> wrote: > > This patch fixes the compilation warning reported > > during x86_64 allmodconfig build. > > Please quote the warning, so people know what it is about: > > drivers/dma/mcf-edma.c: In function 'mcf_edma_filter_fn': > drivers/dma/mcf-edma.c:296:33: warning: cast from pointer to > integer of different size [-Wpointer-to-int-cast] > return (mcf_chan->slave_id == (u32)param); > Ok done. > > Reported-By: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > > Signed-off-by: Angelo Dureghello <angelo@xxxxxxxx> > > --- > > Changes for v2: > > - added Reported-By > > --- > > drivers/dma/mcf-edma.c | 3 ++- > > include/linux/platform_data/dma-mcf-edma.h | 2 +- > > 2 files changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/dma/mcf-edma.c b/drivers/dma/mcf-edma.c > > index 4d30d5302649..e08e2409a102 100644 > > --- a/drivers/dma/mcf-edma.c > > +++ b/drivers/dma/mcf-edma.c > > @@ -292,8 +292,9 @@ bool mcf_edma_filter_fn(struct dma_chan *chan, void *param) > > { > > if (chan->device->dev->driver == &mcf_edma_driver.driver) { > > struct fsl_edma_chan *mcf_chan = to_fsl_edma_chan(chan); > > + unsigned int req = *(unsigned int *)param; > > This looks a bit hackish to me. > > > > - return (mcf_chan->slave_id == (u32)param); > > The recommended way to cast from pointers to integers is to > use uintptr_t, which always has the same size as a pointer, i.e.: > slave_id is acually an u32. So, if i understsand, when compiled on x86_64 using uintptr_t, the cast should trigger the same issue. I preferred, as i.e. ti/omap dma driver is doing, to simply use a pointer to an int (int[]) as passed type in param, so i can then indirectly access the integer. I tested proper functionality in ColdFire and that there are no warnings anymore in both ColdFire and x86_64 allmodconfig so the patch, hopefully, should be legal. > return (mcf_chan->slave_id == (uintptr_t)param); > > > + return (mcf_chan->slave_id == req); > > } > > > > return false; > > diff --git a/include/linux/platform_data/dma-mcf-edma.h b/include/linux/platform_data/dma-mcf-edma.h > > index d718ccfa3421..97cb79bda646 100644 > > --- a/include/linux/platform_data/dma-mcf-edma.h > > +++ b/include/linux/platform_data/dma-mcf-edma.h > > @@ -21,7 +21,7 @@ struct dma_slave_map; > > > > bool mcf_edma_filter_fn(struct dma_chan *chan, void *param); > > > > -#define MCF_EDMA_FILTER_PARAM(ch) ((void *)ch) > > +#define MCF_EDMA_FILTER_PARAM(ch) ((int[]) { (ch) }) > > > > /** > > * struct mcf_edma_platform_data - platform specific data for eDMA engine > > Gr{oetje,eeting}s, > > Geert > Regards, Angelo > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds