| From: Baoquan He <bhe@redhat.com> |
| Subject: openrisc: mm: remove unneeded early ioremap code |
| Date: Thu, 6 Jul 2023 23:45:04 +0800 |
| |
| Under arch/openrisc, there isn't any place where ioremap() is called. It |
| means that there isn't early ioremap handling needed in openrisc, So the |
| early ioremap handling code in ioremap() of arch/openrisc/mm/ioremap.c is |
| unnecessary and can be removed. |
| |
| And also remove the special handling in iounmap() since no page is got |
| from fixmap pool along with early ioremap code removing in ioremap(). |
| |
| Link: https://lore.kernel.org/linux-mm/YwxfxKrTUtAuejKQ@oscomms1/ |
| Link: https://lkml.kernel.org/r/20230706154520.11257-4-bhe@redhat.com |
| Signed-off-by: Baoquan He <bhe@redhat.com> |
| Acked-by: Stafford Horne <shorne@gmail.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org> |
| Cc: Jonas Bonn <jonas@southpole.se> |
| Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> |
| Cc: Stafford Horne <shorne@gmail.com> |
| Cc: Alexander Gordeev <agordeev@linux.ibm.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Brian Cain <bcain@quicinc.com> |
| Cc: Catalin Marinas <catalin.marinas@arm.com> |
| Cc: Christian Borntraeger <borntraeger@linux.ibm.com> |
| Cc: Christophe Leroy <christophe.leroy@csgroup.eu> |
| Cc: Chris Zankel <chris@zankel.net> |
| Cc: David Laight <David.Laight@ACULAB.COM> |
| Cc: Geert Uytterhoeven <geert@linux-m68k.org> |
| Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com> |
| Cc: Heiko Carstens <hca@linux.ibm.com> |
| Cc: Helge Deller <deller@gmx.de> |
| Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> |
| Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> |
| Cc: Kefeng Wang <wangkefeng.wang@huawei.com> |
| Cc: Matthew Wilcox <willy@infradead.org> |
| Cc: Max Filippov <jcmvbkbc@gmail.com> |
| Cc: Michael Ellerman <mpe@ellerman.id.au> |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| Cc: Nicholas Piggin <npiggin@gmail.com> |
| Cc: Niklas Schnelle <schnelle@linux.ibm.com> |
| Cc: Rich Felker <dalias@libc.org> |
| Cc: Sven Schnelle <svens@linux.ibm.com> |
| Cc: Vasily Gorbik <gor@linux.ibm.com> |
| Cc: Vineet Gupta <vgupta@kernel.org> |
| Cc: Will Deacon <will@kernel.org> |
| Cc: Yoshinori Sato <ysato@users.sourceforge.jp> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| arch/openrisc/mm/ioremap.c | 43 ++++------------------------------- |
| 1 file changed, 5 insertions(+), 38 deletions(-) |
| |
| --- a/arch/openrisc/mm/ioremap.c~openrisc-mm-remove-unneeded-early-ioremap-code |
| +++ a/arch/openrisc/mm/ioremap.c |
| @@ -22,8 +22,6 @@ |
| |
| extern int mem_init_done; |
| |
| -static unsigned int fixmaps_used __initdata; |
| - |
| /* |
| * Remap an arbitrary physical address space into the kernel virtual |
| * address space. Needed when the kernel wants to access high addresses |
| @@ -52,24 +50,14 @@ void __iomem *__ref ioremap(phys_addr_t |
| p = addr & PAGE_MASK; |
| size = PAGE_ALIGN(last_addr + 1) - p; |
| |
| - if (likely(mem_init_done)) { |
| - area = get_vm_area(size, VM_IOREMAP); |
| - if (!area) |
| - return NULL; |
| - v = (unsigned long)area->addr; |
| - } else { |
| - if ((fixmaps_used + (size >> PAGE_SHIFT)) > FIX_N_IOREMAPS) |
| - return NULL; |
| - v = fix_to_virt(FIX_IOREMAP_BEGIN + fixmaps_used); |
| - fixmaps_used += (size >> PAGE_SHIFT); |
| - } |
| + area = get_vm_area(size, VM_IOREMAP); |
| + if (!area) |
| + return NULL; |
| + v = (unsigned long)area->addr; |
| |
| if (ioremap_page_range(v, v + size, p, |
| __pgprot(pgprot_val(PAGE_KERNEL) | _PAGE_CI))) { |
| - if (likely(mem_init_done)) |
| - vfree(area->addr); |
| - else |
| - fixmaps_used -= (size >> PAGE_SHIFT); |
| + vfree(area->addr); |
| return NULL; |
| } |
| |
| @@ -79,27 +67,6 @@ EXPORT_SYMBOL(ioremap); |
| |
| void iounmap(volatile void __iomem *addr) |
| { |
| - /* If the page is from the fixmap pool then we just clear out |
| - * the fixmap mapping. |
| - */ |
| - if (unlikely((unsigned long)addr > FIXADDR_START)) { |
| - /* This is a bit broken... we don't really know |
| - * how big the area is so it's difficult to know |
| - * how many fixed pages to invalidate... |
| - * just flush tlb and hope for the best... |
| - * consider this a FIXME |
| - * |
| - * Really we should be clearing out one or more page |
| - * table entries for these virtual addresses so that |
| - * future references cause a page fault... for now, we |
| - * rely on two things: |
| - * i) this code never gets called on known boards |
| - * ii) invalid accesses to the freed areas aren't made |
| - */ |
| - flush_tlb_all(); |
| - return; |
| - } |
| - |
| return vfree((void *)(PAGE_MASK & (unsigned long)addr)); |
| } |
| EXPORT_SYMBOL(iounmap); |
| _ |