Subject: Re: [PATCH 4/6] powerpc/kernel: Clean up some sparse warnings

From: Arnd Bergmann <[email-masked]>
Date: Mon, 04 Jul 2016 09:50:23 +0200

On Monday, July 4, 2016 5:09:40 PM CEST Daniel Axtens wrote:
> diff --git a/arch/powerpc/kernel/io.c b/arch/powerpc/kernel/io.c
> index 2a2b4aeab80f..3f70b7dccee8 100644
> --- a/arch/powerpc/kernel/io.c
> +++ b/arch/powerpc/kernel/io.c
> @@ -37,7 +37,7 @@ void _insb(const volatile u8 __iomem *port, void *buf, long count)
>  		return;
>  	asm volatile("sync");
>  	do {
> -		tmp = *port;
> +		tmp = *(u8 __force *)port;
>  		eieio();
>  		*tbuf++ = tmp;
>  	} while (--count != 0);

Here the "volatile" is actually meaningful, you should keep it and
just add "__force" in addition.

> @@ -47,13 +47,13 @@ EXPORT_SYMBOL(_insb);
>  
>  void _outsb(volatile u8 __iomem *port, const void *buf, long count)
>  {
> -	const u8 *tbuf = buf;
> +	const u8 __force *tbuf = buf;
>  
>  	if (unlikely(count <= 0))
>  		return;
>  	asm volatile("sync");
>  	do {
> -		*port = *tbuf++;
> +		*(volatile u8 __force *)port = *tbuf++;
>  	} while (--count != 0);
>  	asm volatile("sync");
>  }

like you correctly do here.

> @@ -68,7 +68,7 @@ void _insw_ns(const volatile u16 __iomem *port, void *buf, long count)
>  		return;
>  	asm volatile("sync");
>  	do {
> -		tmp = *port;
> +		tmp = *(u16 __force *)port;
>  		eieio();
>  		*tbuf++ = tmp;
>  	} while (--count != 0);

+volatile

> @@ -99,7 +99,7 @@ void _insl_ns(const volatile u32 __iomem *port, void *buf, long count)
>  		return;
>  	asm volatile("sync");
>  	do {
> -		tmp = *port;
> +		tmp = *(u32 __force *)port;
>  		eieio();
>  		*tbuf++ = tmp;
>  	} while (--count != 0);

+volatile

	Arnd