Messages in this thread | | | Date | Thu, 19 May 2022 14:31:06 +0800 | Subject | Re: [PATCH v2 resend 4/5] arm64: mm: Convert to GENERIC_IOREMAP | From | Kefeng Wang <> |
| |
On 2022/5/19 13:34, Anshuman Khandual wrote: > > On 5/2/22 08:57, Kefeng Wang wrote: >> Add hook for arm64's special operation when ioremap() and iounmap(), >> then ioremap_wc/np/cache is converted to use ioremap_prot() >> from GENERIC_IOREMAP, update the Copyright and kill the unused >> inclusions. >> >> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> >> --- >> v2 resend: >> - use IOMEM_ERR_PTR to fix sparse warning found by lkp >> >> arch/arm64/Kconfig | 1 + >> arch/arm64/include/asm/io.h | 20 ++++++--- >> arch/arm64/kernel/acpi.c | 2 +- >> arch/arm64/mm/ioremap.c | 85 +++++-------------------------------- >> 4 files changed, 27 insertions(+), 81 deletions(-) >> >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 20ea89d9ac2f..56673209fdb9 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -123,6 +123,7 @@ config ARM64 >> select GENERIC_CPU_VULNERABILITIES >> select GENERIC_EARLY_IOREMAP >> select GENERIC_IDLE_POLL_SETUP >> + select GENERIC_IOREMAP >> select GENERIC_IRQ_IPI >> select GENERIC_IRQ_PROBE >> select GENERIC_IRQ_SHOW >> diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h >> index 7fd836bea7eb..042fa01940b8 100644 >> --- a/arch/arm64/include/asm/io.h >> +++ b/arch/arm64/include/asm/io.h >> @@ -163,13 +163,21 @@ extern void __memset_io(volatile void __iomem *, int, size_t); >> /* >> * I/O memory mapping functions. >> */ >> -extern void __iomem *__ioremap(phys_addr_t phys_addr, size_t size, pgprot_t prot); >> -extern void iounmap(volatile void __iomem *addr); >> -extern void __iomem *ioremap_cache(phys_addr_t phys_addr, size_t size); >> >> -#define ioremap(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE)) >> -#define ioremap_wc(addr, size) __ioremap((addr), (size), __pgprot(PROT_NORMAL_NC)) >> -#define ioremap_np(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRnE)) >> +void __iomem *arch_ioremap(phys_addr_t phys_addr, size_t size, unsigned long prot); >> +#define arch_ioremap arch_ioremap >> + >> +int arch_iounmap(void __iomem *addr); >> +#define arch_iounmap arch_iounmap >> + >> +#define _PAGE_IOREMAP PROT_DEVICE_nGnRE > Small nit, should we have a comment here for the above components i.e > PAGE_IOREMAP and callbacks arch_ioremap()/arch_iounmap() are required > because of enabling GENERIC_IOREMAP ?
There is a comment in include/asm-generic/io.h: /* _PAGE_IOREMAP needs to be supplied by the architecture */
so arch's callbacks could not add repeated comments.
> Otherwise LGTM. > > Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Thanks. > .
| |