Re: [PATCH] sh: Remove memset_io from sh specific code

John Paul Adrian Glaubitz <[email protected]>
Newsgroups gmane.linux.ports.sh.devel,gmane.linux.kernel
Message-ID <3ec5a6621cabddad686f727d20b725ed9658dddd.camel@physik.fu-berlin.de>
Hi Julian,

On Wed, 2024-12-04 at 17:40 +0100, Julian Vetter wrote:
> Remove memset_io from sh specific code and fall back to the new
> implementation from lib/iomem_copy.c. It uses word accesses if the
> buffer is aligned and only falls back to byte accesses for potentially
> unaligned parts of a buffer (i.e., at the beginning and end).
> 
> Signed-off-by: Julian Vetter <[email protected]>
> ---
>  arch/sh/include/asm/io.h |  2 --
>  arch/sh/kernel/io.c      | 14 --------------
>  2 files changed, 16 deletions(-)
> 
> diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h
> index cf5eab840d57..3771bfa984af 100644
> --- a/arch/sh/include/asm/io.h
> +++ b/arch/sh/include/asm/io.h
> @@ -269,12 +269,10 @@ __BUILD_IOPORT_STRING(q, u64)
>  #define IO_SPACE_LIMIT 0xffffffff
>  
>  /* We really want to try and get these to memcpy etc */
> -#define memset_io memset_io
>  #define memcpy_fromio memcpy_fromio
>  #define memcpy_toio memcpy_toio
>  void memcpy_fromio(void *, const volatile void __iomem *, unsigned long);
>  void memcpy_toio(volatile void __iomem *, const void *, unsigned long);
> -void memset_io(volatile void __iomem *, int, unsigned long);
>  
>  /* Quad-word real-mode I/O, don't ask.. */
>  unsigned long long peek_real_address_q(unsigned long long addr);
> diff --git a/arch/sh/kernel/io.c b/arch/sh/kernel/io.c
> index da22f3b32d30..16e963bab595 100644
> --- a/arch/sh/kernel/io.c
> +++ b/arch/sh/kernel/io.c
> @@ -95,17 +95,3 @@ void memcpy_toio(volatile void __iomem *to, const void *from, unsigned long coun
>  	mb();
>  }
>  EXPORT_SYMBOL(memcpy_toio);
> -
> -/*
> - * "memset" on IO memory space.
> - * This needs to be optimized.
> - */
> -void memset_io(volatile void __iomem *dst, int c, unsigned long count)
> -{
> -        while (count) {
> -                count--;
> -                writeb(c, dst);
> -                dst++;
> -        }
> -}
> -EXPORT_SYMBOL(memset_io);

Looks good to me. I looked up the generic implementation in lib/iomem_copy.c and
it looks much better than the sh-specific implementation due to the smarter
use of conditional word-long memset.

Reviewed-by: John Paul Adrian Glaubitz <[email protected]>

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.