Re: [PATCH v4 2/4] mips: add <asm-generic/io.h> including

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 08, 2023 at 09:07:08PM +0800, Baoquan He wrote:
> With the adding, some default ioremap_xx methods defined in
> asm-generic/io.h can be used. E.g the default ioremap_uc() returning
> NULL.
> 
> Signed-off-by: Baoquan He <bhe@xxxxxxxxxx>
> Reviewed-by: Arnd Bergmann <arnd@xxxxxxxx>
> Cc: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> Cc: Helge Deller <deller@xxxxxx>
> Cc: Serge Semin <fancer.lancer@xxxxxxxxx>
> Cc: Florian Fainelli <f.fainelli@xxxxxxxxx>
> Cc: Huacai Chen <chenhuacai@xxxxxxxxxx>
> Cc: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx>
> Cc: linux-mips@xxxxxxxxxxxxxxx
> ---
>  arch/mips/include/asm/io.h | 78 ++++++++++++++++++++++++++++++++++----
>  1 file changed, 70 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h
> index cec8347f0b85..6756baadba6c 100644
> --- a/arch/mips/include/asm/io.h
> +++ b/arch/mips/include/asm/io.h
> @@ -126,6 +126,7 @@ static inline phys_addr_t virt_to_phys(const volatile void *x)
>   *     almost all conceivable cases a device driver should not be using
>   *     this function
>   */
> +#define phys_to_virt phys_to_virt
>  static inline void * phys_to_virt(unsigned long address)
>  {
>  	return __va(address);
> @@ -359,6 +360,27 @@ __BUILD_MEMORY_PFX(__raw_, q, u64, 0)
>  __BUILD_MEMORY_PFX(__mem_, q, u64, 0)
>  #endif
>  
> +#define readb readb
> +#define readw readw
> +#define readl readl
> +#define writeb writeb
> +#define writew writew
> +#define writel writel
> +
> +#ifdef CONFIG_64BIT
> +#define readq readq
> +#define writeq writeq
> +#define __raw_readq __raw_readq
> +#define __raw_writeq __raw_writeq
> +#endif
> +
> +#define __raw_readb __raw_readb
> +#define __raw_readw __raw_readw
> +#define __raw_readl __raw_readl
> +#define __raw_writeb __raw_writeb
> +#define __raw_writew __raw_writew
> +#define __raw_writel __raw_writel
> +
>  #define __BUILD_IOPORT_PFX(bus, bwlq, type)				\
>  	__BUILD_IOPORT_SINGLE(bus, bwlq, type, 1, 0,)			\
>  	__BUILD_IOPORT_SINGLE(bus, bwlq, type, 1, 0, _p)
> @@ -374,6 +396,27 @@ BUILDIO_IOPORT(l, u32)
>  BUILDIO_IOPORT(q, u64)
>  #endif
>  
> +#define inb inb
> +#define inw inw
> +#define inl inl
> +#define inb_p inb_p
> +#define inw_p inw_p
> +#define inl_p inl_p
> +
> +#define outb outb
> +#define outw outw
> +#define outl outl
> +#define outb_p outb_p
> +#define outw_p outw_p
> +#define outl_p outl_p
> +
> +#ifdef CONFIG_64BIT
> +#define inq inq
> +#define outq outq
> +#define inq_p inq_p
> +#define outq_p outq_p
> +#endif
> +
>  #define __BUILDIO(bwlq, type)						\
>  									\
>  __BUILD_MEMORY_SINGLE(____raw_, bwlq, type, 1, 0, 0)
> @@ -412,14 +455,6 @@ __BUILDIO(q, u64)
>  #define writeq_be(val, addr)						\
>  	__raw_writeq(cpu_to_be64((val)), (__force unsigned *)(addr))
>  
> -/*
> - * Some code tests for these symbols
> - */
> -#ifdef CONFIG_64BIT
> -#define readq				readq
> -#define writeq				writeq
> -#endif
> -
>  #define __BUILD_MEMORY_STRING(bwlq, type)				\
>  									\
>  static inline void writes##bwlq(volatile void __iomem *mem,		\
> @@ -480,14 +515,39 @@ BUILDSTRING(l, u32)
>  BUILDSTRING(q, u64)
>  #endif
>  
> +#define insb insb
> +#define insw insw
> +#define insl insl
> +#define outsb outsb
> +#define outsw outsw
> +#define outsl outsl
> +
> +#define readsb readsb
> +#define readsw readsw
> +#define readsl readsl
> +#define writesb writesb
> +#define writesw writesw
> +#define writesl writesl
> +
> +#ifdef CONFIG_64BIT
> +#define insq insq
> +#define readsq readsq
> +#define readsq readsq
> +#define writesq writesq
> +#endif
> +
> +
> +#define memset_io memset_io
>  static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
>  {
>  	memset((void __force *) addr, val, count);
>  }
> +#define memcpy_fromio memcpy_fromio
>  static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
>  {
>  	memcpy(dst, (void __force *) src, count);
>  }
> +#define memcpy_toio memcpy_toio
>  static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int count)
>  {
>  	memcpy((void __force *) dst, src, count);
> @@ -556,4 +616,6 @@ extern void (*_dma_cache_inv)(unsigned long start, unsigned long size);
>  
>  void __ioread64_copy(void *to, const void __iomem *from, size_t count);
>  
> +#include <asm-generic/io.h>

this #include blows up builds with:

  GEN     Makefile
  Checking missing-syscalls for N32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  Checking missing-syscalls for O32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CC      init/version.o
In file included from /local/tbogendoerfer/korg/linux/include/linux/spinlock.h:311:0,
                 from /local/tbogendoerfer/korg/linux/include/linux/vmalloc.h:5,
                 from /local/tbogendoerfer/korg/linux/include/asm-generic/io.h:994,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/io.h:618,
                 from /local/tbogendoerfer/korg/linux/include/linux/io.h:13,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/mips-cps.h:11,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:16,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp.h:21,
                 from /local/tbogendoerfer/korg/linux/include/linux/smp.h:113,
                 from /local/tbogendoerfer/korg/linux/include/linux/lockdep.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/rcupdate.h:29,
                 from /local/tbogendoerfer/korg/linux/include/linux/rculist.h:11,
                 from /local/tbogendoerfer/korg/linux/include/linux/pid.h:5,
                 from /local/tbogendoerfer/korg/linux/include/linux/sched.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/utsname.h:6,
                 from /local/tbogendoerfer/korg/linux/init/version.c:17:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_trylock’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:3: error: implicit declaration of function ‘spin_acquire’ [-Werror=implicit-function-declaration]
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
   ^~~~~~~~~~~~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:21: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
                     ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_lock_irqsave’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:110:20: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
  spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
                    ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:111:2: error: implicit declaration of function ‘LOCK_CONTENDED’ [-Werror=implicit-function-declaration]
  LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
  ^~~~~~~~~~~~~~
  GEN     Makefile
  Checking missing-syscalls for N32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  Checking missing-syscalls for O32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CC      init/version.o
In file included from /local/tbogendoerfer/korg/linux/include/linux/spinlock.h:311:0,
                 from /local/tbogendoerfer/korg/linux/include/linux/vmalloc.h:5,
                 from /local/tbogendoerfer/korg/linux/include/asm-generic/io.h:994,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/io.h:618,
                 from /local/tbogendoerfer/korg/linux/include/linux/io.h:13,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/mips-cps.h:11,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:16,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp.h:21,
                 from /local/tbogendoerfer/korg/linux/include/linux/smp.h:113,
                 from /local/tbogendoerfer/korg/linux/include/linux/lockdep.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/rcupdate.h:29,
                 from /local/tbogendoerfer/korg/linux/include/linux/rculist.h:11,
                 from /local/tbogendoerfer/korg/linux/include/linux/pid.h:5,
                 from /local/tbogendoerfer/korg/linux/include/linux/sched.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/utsname.h:6,
                 from /local/tbogendoerfer/korg/linux/init/version.c:17:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_trylock’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:3: error: implicit declaration of function ‘spin_acquire’ [-Werror=implicit-function-declaration]
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
   ^~~~~~~~~~~~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:21: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
                     ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_lock_irqsave’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:110:20: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
  spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
                    ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:111:2: error: implicit declaration of function ‘LOCK_CONTENDED’ [-Werror=implicit-function-declaration]
  LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
  ^~~~~~~~~~~~~~
  GEN     Makefile
  Checking missing-syscalls for N32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  Checking missing-syscalls for O32
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CALL    /local/tbogendoerfer/korg/linux/scripts/checksyscalls.sh
  CC      init/version.o
In file included from /local/tbogendoerfer/korg/linux/include/linux/spinlock.h:311:0,
                 from /local/tbogendoerfer/korg/linux/include/linux/vmalloc.h:5,
                 from /local/tbogendoerfer/korg/linux/include/asm-generic/io.h:994,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/io.h:618,
                 from /local/tbogendoerfer/korg/linux/include/linux/io.h:13,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/mips-cps.h:11,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp-ops.h:16,
                 from /local/tbogendoerfer/korg/linux/arch/mips/include/asm/smp.h:21,
                 from /local/tbogendoerfer/korg/linux/include/linux/smp.h:113,
                 from /local/tbogendoerfer/korg/linux/include/linux/lockdep.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/rcupdate.h:29,
                 from /local/tbogendoerfer/korg/linux/include/linux/rculist.h:11,
                 from /local/tbogendoerfer/korg/linux/include/linux/pid.h:5,
                 from /local/tbogendoerfer/korg/linux/include/linux/sched.h:14,
                 from /local/tbogendoerfer/korg/linux/include/linux/utsname.h:6,
                 from /local/tbogendoerfer/korg/linux/init/version.c:17:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_trylock’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:3: error: implicit declaration of function ‘spin_acquire’ [-Werror=implicit-function-declaration]
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
   ^~~~~~~~~~~~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:90:21: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
   spin_acquire(&lock->dep_map, 0, 1, _RET_IP_);
                     ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h: In function ‘__raw_spin_lock_irqsave’:
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:110:20: error: ‘raw_spinlock_t {aka struct raw_spinlock}’ has no member named ‘dep_map’
  spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
                    ^~
/local/tbogendoerfer/korg/linux/include/linux/spinlock_api_smp.h:111:2: error: implicit declaration of function ‘LOCK_CONTENDED’ [-Werror=implicit-function-declaration]
  LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
  ^~~~~~~~~~~~~~
[...]

I've cut the compiler output. Removing the asm-generic doesn't show this
problem, but so far I fail to see the reason...

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux