Subject: Re: linux-next: manual merge of the pci tree with the asm-generic tree

From: Thierry Reding <[email-masked]>
Date: Fri, 26 Sep 2014 09:00:23 +0200

On Fri, Sep 26, 2014 at 01:29:02PM +1000, Stephen Rothwell wrote:
> Hi Bjorn,
> 
> Today's linux-next merge of the pci tree got a conflict in
> include/asm-generic/io.h between commit 4005bfe0aa45
> ("asm-generic/io.h: Implement generic {read,write}s*()") from the
> asm-generic tree and commit 3aad9c969c09 ("asm-generic/io.h: Fix
> ioport_map() for !CONFIG_GENERIC_IOMAP") from the pci tree.
> 
> I fixed it up (the only difference is that the latter castes the result
> to void __iomem * - see below) and can carry the fix as necessary (no
> action is required).
> 
> -- 
> Cheers,
> Stephen Rothwell                    [email-masked]
> 
> diff --cc include/asm-generic/io.h
> index 3e976be3bdd4,2e2161b0c795..000000000000
> --- a/include/asm-generic/io.h
> +++ b/include/asm-generic/io.h
> @@@ -756,16 -329,11 +756,16 @@@ static inline void iounmap(void __iome
>   
>   #ifdef CONFIG_HAS_IOPORT_MAP
>   #ifndef CONFIG_GENERIC_IOMAP
>  +#ifndef ioport_map
>  +#define ioport_map ioport_map
>   static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
>   {
> - 	return PCI_IOBASE + (port & IO_SPACE_LIMIT);
> + 	return (void __iomem *)(PCI_IOBASE + (port & IO_SPACE_LIMIT));

I don't think that cast is necessary. All instances of PCI_IOBASE are
already defined to be void __iomem *.

Or at least they were until a few days ago. Commit f3dfddf7bd85 (ARM:
Define PCI_IOBASE as the base of virtual PCI IO space) introduces one
variant for ARM which isn't actually void __iomem *. I think what we
should do is standardize the type of PCI_IOBASE.

So how about we remove commit 3aad9c969c09 (asm-generic/io.h: Fix
ioport_map() for !CONFIG_GENERIC_IOMAP) and move the cast to void
__iomem * to Liviu's definition of PCI_IOBASE for ARM?

Thierry