Re: [PATCH v4 12/16] parisc: mm: Convert to GENERIC_IOREMAP

From: Christophe Leroy
Date: Fri Feb 17 2023 - 09:36:00 EST




Le 17/02/2023 à 15:33, Christophe Leroy a écrit :
>
>
> Le 17/02/2023 à 15:21, Baoquan He a écrit :
>> On 02/17/23 at 01:46pm, Christophe Leroy wrote:
>>>
>>>
>>> Le 17/02/2023 à 14:31, Baoquan He a écrit :
>>>> On 02/16/23 at 04:18pm, Arnd Bergmann wrote:
>>>>> On Thu, Feb 16, 2023, at 16:02, Baoquan He wrote:
>>>>>> On 02/16/23 at 01:50pm, Matthew Wilcox wrote:
>>>>>> It's not if including asm-generic/iomap.h. The ARCH_HAS_IOREMAP_xx
>>>>>> is to
>>>>>> avoid redefinition there.
>>>>>>
>>>>>> include/asm-generic/iomap.h:
>>>>>> ----
>>>>>> #ifndef ARCH_HAS_IOREMAP_WC
>>>>>> #define ioremap_wc ioremap
>>>>>> #endif
>>>>>
>>>>> I'd change that to the usual '#ifndef ioremap_wc' in that case.
>>>>
>>>> Not sure if I got you. Kill all ARCH_HAS_IOREMAP_xxx in kernel? If yes,
>>>> sounds like a good idea.
>>>>
>>>
>>> At least kill that one at the first place in your series, and then the
>>> other ones in a follow-up series maybe.
>>
>> Then we can make a preparation patch to change that in iomap.h, then
>> remove all ARCH_HAS_IOREMAP_WC definition in arch. I thought to let this
>> patch as is,  then get rid of all ARCH_HAS_IOREMAP_xxx in a follow-up
>> series. While the former is also fine to me. Thanks, Christophe.
>>
>> diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
>> index 08237ae8b840..5fa1e9ca951c 100644
>> --- a/include/asm-generic/iomap.h
>> +++ b/include/asm-generic/iomap.h
>> @@ -93,7 +93,7 @@ extern void __iomem *ioport_map(unsigned long port,
>> unsigned int nr);
>>   extern void ioport_unmap(void __iomem *);
>>   #endif
>> -#ifndef ARCH_HAS_IOREMAP_WC
>> +#ifndef ioremap_wc
>>   #define ioremap_wc ioremap
>>   #endif
>>
>> [~]$ git grep ARCH_HAS_IOREMAP_WC
>> arch/loongarch/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
>> arch/mips/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
>> arch/powerpc/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
>> arch/x86/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
>> drivers/net/ethernet/sfc/io.h:#ifdef ARCH_HAS_IOREMAP_WC
>> drivers/net/ethernet/sfc/siena/io.h:#ifdef ARCH_HAS_IOREMAP_WC
>> include/asm-generic/iomap.h:#ifndef ARCH_HAS_IOREMAP_WC
>>
>>
>
> Not so many:
>
> $ git grep ARCH_HAS_IOREMAP_WC  | grep define
> arch/loongarch/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
> arch/mips/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
> arch/powerpc/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
> arch/x86/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
>
> And also make sure they define ioremap_wc :
>
> $ git grep "define ioremap_wc" `git grep -l "define ARCH_HAS_IOREMAP_WC"`
> arch/loongarch/include/asm/io.h:#define ioremap_wc(offset, size)        \
> arch/mips/include/asm/io.h:#define ioremap_wc(offset, size)
>                        \
> arch/powerpc/include/asm/io.h:#define ioremap_wc ioremap_wc
> arch/x86/include/asm/io.h:#define ioremap_wc ioremap_wc
>


By the way there are so few, you can make all at once:

$ git grep ARCH_HAS_IOREMAP_ | grep define
arch/loongarch/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
arch/m68k/include/asm/kmap.h:#define ARCH_HAS_IOREMAP_WT
arch/mips/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
arch/powerpc/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
arch/powerpc/include/asm/io.h:#define ARCH_HAS_IOREMAP_WT
arch/x86/include/asm/io.h:#define ARCH_HAS_IOREMAP_WC
arch/x86/include/asm/io.h:#define ARCH_HAS_IOREMAP_WT

Christophe