diff mbox

[1/2] parisc: use the asm-generic version for writeX()

Message ID a7b59f43-cea5-0ead-f528-61899570e353@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sinan Kaya April 16, 2018, 11:15 p.m. UTC
On 4/16/2018 7:09 PM, John David Anglin wrote:
> On 2018-04-16 6:01 PM, Sinan Kaya wrote:
>> parisc architecture seems to be mapping writeX() and writeX_relaxed() APIs
>> to __raw_writeX() API.
>>
>> __raw_writeX() API doesn't provide any kind of ordering guarantees.
>> commit 755bd04aaf4b ("io: define stronger ordering for the default writeX()
>> implementation") changed asm-generic implementation to use a more
>> conservative approach towards the writeX() API.
>>
>> Drop the arch specific version and rely on the asm-generic version for
>> parisc since parisc version doesn't seem to do anything special with these
>> macros.
>   HOSTLD  scripts/mod/modpost
> In file included from ./arch/parisc/include/asm/hardirq.h:13:0,
>                  from ./include/linux/hardirq.h:9,
>                  from arch/parisc/kernel/asm-offsets.c:34:
> ./include/linux/irq.h: In function 'irq_reg_writel':
> ./include/linux/irq.h:1114:3: error: implicit declaration of function 'writel' [-Werror=implicit-function-declaration]
>    writel(val, gc->reg_base + reg_offset);
>    ^~~~~~
> ./include/linux/irq.h: In function 'irq_reg_readl':
> ./include/linux/irq.h:1123:10: error: implicit declaration of function 'readl' [-Werror=implicit-function-declaration]
>    return readl(gc->reg_base + reg_offset);
>           ^~~~~
> cc1: some warnings being treated as errors
> make[1]: *** [Kbuild:58: arch/parisc/kernel/asm-offsets.s] Error 1
> 
> Dave
> 

Thanks for testing. Can you add this on top and see if it helps?

Comments

John David Anglin April 16, 2018, 11:37 p.m. UTC | #1
On 2018-04-16 7:15 PM, Sinan Kaya wrote:
> Thanks for testing. Can you add this on top and see if it helps?
>
> --- a/arch/parisc/include/asm/io.h
> +++ b/arch/parisc/include/asm/io.h
> @@ -259,6 +259,7 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
>    * value for either 32 or 64 bit mode */
>   #define F_EXTEND(x) ((unsigned long)((x) | (0xffffffff00000000ULL)))
>   
> +#include <asm-generic/io.h>
>   #include <asm-generic/iomap.h>
Still lots of problems.

Dave
Sinan Kaya April 16, 2018, 11:44 p.m. UTC | #2
On 4/16/2018 7:37 PM, John David Anglin wrote:
>>   +#include <asm-generic/io.h>
>>   #include <asm-generic/iomap.h>
> Still lots of problems.
> 
> Dave
> 
> -- 
> John David Anglin  dave.anglin@bell.net
> 
> 
> io.log
> 
> 
>   CC      arch/parisc/kernel/asm-offsets.s
> In file included from ./arch/parisc/include/asm/io.h:262:0,
>                  from ./include/linux/io.h:25,
>                  from ./include/linux/irq.h:25,
>                  from ./arch/parisc/include/asm/hardirq.h:13,
>                  from ./include/linux/hardirq.h:9,
>                  from arch/parisc/kernel/asm-offsets.c:34:
> ./include/asm-generic/io.h:37:21: error: redefinition of '__raw_readb'
>  #define __raw_readb __raw_readb
>                      ^

This one is easy to fix:

https://elixir.bootlin.com/linux/latest/source/arch/parisc/include/asm/io.h#L146

Remove 146..179.
Sinan Kaya April 16, 2018, 11:48 p.m. UTC | #3
On 4/16/2018 7:44 PM, Sinan Kaya wrote:
>> John David Anglin  dave.anglin@bell.net
>>
>>
>> io.log
>>
>>
>>   CC      arch/parisc/kernel/asm-offsets.s
>> In file included from ./arch/parisc/include/asm/io.h:262:0,
>>                  from ./include/linux/io.h:25,
>>                  from ./include/linux/irq.h:25,
>>                  from ./arch/parisc/include/asm/hardirq.h:13,
>>                  from ./include/linux/hardirq.h:9,
>>                  from arch/parisc/kernel/asm-offsets.c:34:
>> ./include/asm-generic/io.h:37:21: error: redefinition of '__raw_readb'
>>  #define __raw_readb __raw_readb
>>                      ^
> This one is easy to fix:
> 
> https://elixir.bootlin.com/linux/latest/source/arch/parisc/include/asm/io.h#L146
> 
> Remove 146..179.

I'll try to get a hold of a cross compiler and re-test. The above is a hack.
I need to do a better job on this.

Thanks for the help. I'll post V2 when it is ready.
Sinan Kaya April 17, 2018, 4:11 a.m. UTC | #4
On 4/16/2018 7:48 PM, Sinan Kaya wrote:
> On 4/16/2018 7:44 PM, Sinan Kaya wrote:
>>> John David Anglin  dave.anglin@bell.net
>>>
>>>
>>> io.log
>>>
>>>
>>>   CC      arch/parisc/kernel/asm-offsets.s
>>> In file included from ./arch/parisc/include/asm/io.h:262:0,
>>>                  from ./include/linux/io.h:25,
>>>                  from ./include/linux/irq.h:25,
>>>                  from ./arch/parisc/include/asm/hardirq.h:13,
>>>                  from ./include/linux/hardirq.h:9,
>>>                  from arch/parisc/kernel/asm-offsets.c:34:
>>> ./include/asm-generic/io.h:37:21: error: redefinition of '__raw_readb'
>>>  #define __raw_readb __raw_readb
>>>                      ^
>> This one is easy to fix:
>>
>> https://elixir.bootlin.com/linux/latest/source/arch/parisc/include/asm/io.h#L146
>>
>> Remove 146..179.
> 
> I'll try to get a hold of a cross compiler and re-test. The above is a hack.
> I need to do a better job on this.
> 
> Thanks for the help. I'll post V2 when it is ready.
> 

Converting this to asm-generic turned out to be a much bigger task. I placed
compiler barriers instead to existing version and posted as follows:

[PATCH v2 1/2] parisc: define stronger ordering for the default writeX()
[PATCH v2 2/2] parisc: define stronger ordering for the default readX()
diff mbox

Patch

--- a/arch/parisc/include/asm/io.h
+++ b/arch/parisc/include/asm/io.h
@@ -259,6 +259,7 @@  extern void outsl (unsigned long port, const void *src, unsigned long count);
  * value for either 32 or 64 bit mode */
 #define F_EXTEND(x) ((unsigned long)((x) | (0xffffffff00000000ULL)))
 
+#include <asm-generic/io.h>
 #include <asm-generic/iomap.h>