* [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP [not found] <20230216123419.461016-1-bhe@redhat.com> @ 2023-02-16 12:34 ` Baoquan He 2023-02-16 12:53 ` Arnd Bergmann 0 siblings, 1 reply; 5+ messages in thread From: Baoquan He @ 2023-02-16 12:34 UTC (permalink / raw) To: linux-kernel Cc: linux-mm, akpm, christophe.leroy, hch, agordeev, wangkefeng.wang, schnelle, David.Laight, shorne, arnd, Baoquan He, Brian Cain, linux-hexagon By taking GENERIC_IOREMAP method, the generic ioremap_prot() and iounmap() are visible and available to arch. This change will simplify implementation by removing duplicated codes with generic ioremap_prot() and iounmap(), and has the equivalent functioality. For hexagon, the current ioremap() and iounmap() are the same as generic version. After taking GENERIC_IOREMAP way, the old ioremap() and iounmap() can be completely removed. Signed-off-by: Baoquan He <bhe@redhat.com> Cc: Brian Cain <bcain@quicinc.com> Cc: linux-hexagon@vger.kernel.org --- arch/hexagon/Kconfig | 1 + arch/hexagon/include/asm/io.h | 9 +++++-- arch/hexagon/mm/ioremap.c | 44 ----------------------------------- 3 files changed, 8 insertions(+), 46 deletions(-) delete mode 100644 arch/hexagon/mm/ioremap.c diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 54eadf265178..17afffde1a7f 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -25,6 +25,7 @@ config HEXAGON select NEED_SG_DMA_LENGTH select NO_IOPORT_MAP select GENERIC_IOMAP + select GENERIC_IOREMAP select GENERIC_SMP_IDLE_THREAD select STACKTRACE_SUPPORT select GENERIC_CLOCKEVENTS_BROADCAST diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h index 46a099de85b7..dcd9cbbf5934 100644 --- a/arch/hexagon/include/asm/io.h +++ b/arch/hexagon/include/asm/io.h @@ -170,8 +170,13 @@ static inline void writel(u32 data, volatile void __iomem *addr) #define writew_relaxed __raw_writew #define writel_relaxed __raw_writel -void __iomem *ioremap(unsigned long phys_addr, unsigned long size); -#define ioremap_uc(X, Y) ioremap((X), (Y)) +/* + * I/O memory mapping functions. + */ +#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ + (__HEXAGON_C_DEV << 6)) + +#define ioremap_uc(addr, size) ioremap((addr), (size)) #define __raw_writel writel diff --git a/arch/hexagon/mm/ioremap.c b/arch/hexagon/mm/ioremap.c deleted file mode 100644 index 255c5b1ee1a7..000000000000 --- a/arch/hexagon/mm/ioremap.c +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * I/O remap functions for Hexagon - * - * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. - */ - -#include <linux/io.h> -#include <linux/vmalloc.h> -#include <linux/mm.h> - -void __iomem *ioremap(unsigned long phys_addr, unsigned long size) -{ - unsigned long last_addr, addr; - unsigned long offset = phys_addr & ~PAGE_MASK; - struct vm_struct *area; - - pgprot_t prot = __pgprot(_PAGE_PRESENT|_PAGE_READ|_PAGE_WRITE - |(__HEXAGON_C_DEV << 6)); - - last_addr = phys_addr + size - 1; - - /* Wrapping not allowed */ - if (!size || (last_addr < phys_addr)) - return NULL; - - /* Rounds up to next page size, including whole-page offset */ - size = PAGE_ALIGN(offset + size); - - area = get_vm_area(size, VM_IOREMAP); - addr = (unsigned long)area->addr; - - if (ioremap_page_range(addr, addr+size, phys_addr, prot)) { - vunmap((void *)addr); - return NULL; - } - - return (void __iomem *) (offset + addr); -} - -void iounmap(const volatile void __iomem *addr) -{ - vunmap((void *) ((unsigned long) addr & PAGE_MASK)); -} -- 2.34.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP 2023-02-16 12:34 ` [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP Baoquan He @ 2023-02-16 12:53 ` Arnd Bergmann 2023-02-16 14:47 ` Baoquan He 0 siblings, 1 reply; 5+ messages in thread From: Arnd Bergmann @ 2023-02-16 12:53 UTC (permalink / raw) To: Baoquan He, linux-kernel Cc: linux-mm, Andrew Morton, Christophe Leroy, Christoph Hellwig, Alexander Gordeev, Kefeng Wang, Niklas Schnelle, David Laight, Stafford Horne, Brian Cain, linux-hexagon On Thu, Feb 16, 2023, at 13:34, Baoquan He wrote: > diff --git a/arch/hexagon/include/asm/io.h > b/arch/hexagon/include/asm/io.h > index 46a099de85b7..dcd9cbbf5934 100644 > --- a/arch/hexagon/include/asm/io.h > +++ b/arch/hexagon/include/asm/io.h > @@ -170,8 +170,13 @@ static inline void writel(u32 data, volatile void > __iomem *addr) > #define writew_relaxed __raw_writew > #define writel_relaxed __raw_writel > > -void __iomem *ioremap(unsigned long phys_addr, unsigned long size); > -#define ioremap_uc(X, Y) ioremap((X), (Y)) > +/* > + * I/O memory mapping functions. > + */ > +#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ > + (__HEXAGON_C_DEV << 6)) > + > +#define ioremap_uc(addr, size) ioremap((addr), (size)) I think we probably want to kill off ioremap_uc() here, and use the generic version that just returns NULL. I see that there are only two callers of {devm_,}ioremap_uc() left in the tree, so maybe we can even take that final step and remove it from the interface. Maybe we can revisit [1] as part of this series. Arnd [1] https://lore.kernel.org/all/20191111192258.2234502-1-arnd@arndb.de/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP 2023-02-16 12:53 ` Arnd Bergmann @ 2023-02-16 14:47 ` Baoquan He 2023-02-16 14:51 ` Arnd Bergmann 0 siblings, 1 reply; 5+ messages in thread From: Baoquan He @ 2023-02-16 14:47 UTC (permalink / raw) To: Arnd Bergmann Cc: linux-kernel, linux-mm, Andrew Morton, Christophe Leroy, Christoph Hellwig, Alexander Gordeev, Kefeng Wang, Niklas Schnelle, David Laight, Stafford Horne, Brian Cain, linux-hexagon On 02/16/23 at 01:53pm, Arnd Bergmann wrote: > On Thu, Feb 16, 2023, at 13:34, Baoquan He wrote: > > diff --git a/arch/hexagon/include/asm/io.h > > b/arch/hexagon/include/asm/io.h > > index 46a099de85b7..dcd9cbbf5934 100644 > > --- a/arch/hexagon/include/asm/io.h > > +++ b/arch/hexagon/include/asm/io.h > > @@ -170,8 +170,13 @@ static inline void writel(u32 data, volatile void > > __iomem *addr) > > #define writew_relaxed __raw_writew > > #define writel_relaxed __raw_writel > > > > -void __iomem *ioremap(unsigned long phys_addr, unsigned long size); > > -#define ioremap_uc(X, Y) ioremap((X), (Y)) > > +/* > > + * I/O memory mapping functions. > > + */ > > +#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ > > + (__HEXAGON_C_DEV << 6)) > > + Thanks for reviewing. > > +#define ioremap_uc(addr, size) ioremap((addr), (size)) > > I think we probably want to kill off ioremap_uc() here, and use > the generic version that just returns NULL. -#define ioremap_uc(X, Y) ioremap((X), (Y)) +#define ioremap_uc(addr, size) ioremap((addr), (size)) Here, in fact the ioremap_uc() definition is not related. I just improve the old definition passingly. And similar for other ioremap_uc() adaptation. > > I see that there are only two callers of {devm_,}ioremap_uc() left in the > tree, so maybe we can even take that final step and remove it from > the interface. Maybe we can revisit [1] as part of this series. I see now. Christoph Hellwig ever mentioned in v2 reviewing, I didn't get why. Thanks for the details. https://lore.kernel.org/all/YwHX98KBEnZw9t6e@infradead.org/T/#u I am not sure if it's OK to do the change in this patchset, maybe another patch? Thanks Baoquan ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP 2023-02-16 14:47 ` Baoquan He @ 2023-02-16 14:51 ` Arnd Bergmann 2023-02-17 12:11 ` Baoquan He 0 siblings, 1 reply; 5+ messages in thread From: Arnd Bergmann @ 2023-02-16 14:51 UTC (permalink / raw) To: Baoquan He Cc: linux-kernel, linux-mm, Andrew Morton, Christophe Leroy, Christoph Hellwig, Alexander Gordeev, Kefeng Wang, Niklas Schnelle, David Laight, Stafford Horne, Brian Cain, linux-hexagon On Thu, Feb 16, 2023, at 15:47, Baoquan He wrote: > On 02/16/23 at 01:53pm, Arnd Bergmann wrote: >> On Thu, Feb 16, 2023, at 13:34, Baoquan He wrote: >> I see that there are only two callers of {devm_,}ioremap_uc() left in the >> tree, so maybe we can even take that final step and remove it from >> the interface. Maybe we can revisit [1] as part of this series. > > I see now. Christoph Hellwig ever mentioned in v2 reviewing, I > didn't get why. Thanks for the details. > https://lore.kernel.org/all/YwHX98KBEnZw9t6e@infradead.org/T/#u > > I am not sure if it's OK to do the change in this patchset, maybe > another patch? Yes, a separate patch would be ideal. If you do the same change in more than one architecture (other than ia64 and x86), you can combine those into one patch. Arnd ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP 2023-02-16 14:51 ` Arnd Bergmann @ 2023-02-17 12:11 ` Baoquan He 0 siblings, 0 replies; 5+ messages in thread From: Baoquan He @ 2023-02-17 12:11 UTC (permalink / raw) To: Arnd Bergmann Cc: linux-kernel, linux-mm, Andrew Morton, Christophe Leroy, Christoph Hellwig, Alexander Gordeev, Kefeng Wang, Niklas Schnelle, David Laight, Stafford Horne, Brian Cain, linux-hexagon On 02/16/23 at 03:51pm, Arnd Bergmann wrote: > On Thu, Feb 16, 2023, at 15:47, Baoquan He wrote: > > On 02/16/23 at 01:53pm, Arnd Bergmann wrote: > >> On Thu, Feb 16, 2023, at 13:34, Baoquan He wrote: > >> I see that there are only two callers of {devm_,}ioremap_uc() left in the > >> tree, so maybe we can even take that final step and remove it from > >> the interface. Maybe we can revisit [1] as part of this series. > > > > I see now. Christoph Hellwig ever mentioned in v2 reviewing, I > > didn't get why. Thanks for the details. > > https://lore.kernel.org/all/YwHX98KBEnZw9t6e@infradead.org/T/#u > > > > I am not sure if it's OK to do the change in this patchset, maybe > > another patch? > > Yes, a separate patch would be ideal. If you do the same change in > more than one architecture (other than ia64 and x86), you can combine > those into one patch. I am making a patch to achieve this. There's trouble in mips since it hasn't had <asm-generic/io.h> in <asm/io.h>, and adding that will cuase build error. I will post the patch for reviewing. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-02-17 12:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20230216123419.461016-1-bhe@redhat.com>
2023-02-16 12:34 ` [PATCH v4 01/16] hexagon: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-02-16 12:53 ` Arnd Bergmann
2023-02-16 14:47 ` Baoquan He
2023-02-16 14:51 ` Arnd Bergmann
2023-02-17 12:11 ` Baoquan He
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).