From: Baoquan He <bhe@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org, linux-mm@kvack.org, arnd@arndb.de,
christophe.leroy@csgroup.eu, hch@infradead.org,
agordeev@linux.ibm.com, wangkefeng.wang@huawei.com,
schnelle@linux.ibm.com, David.Laight@ACULAB.COM,
shorne@gmail.com, willy@infradead.org,
Baoquan He <bhe@redhat.com>, Brian Cain <bcain@quicinc.com>,
linux-hexagon@vger.kernel.org
Subject: [PATCH v5 02/17] hexagon: mm: Convert to GENERIC_IOREMAP
Date: Wed, 1 Mar 2023 11:42:32 +0800 [thread overview]
Message-ID: <20230301034247.136007-3-bhe@redhat.com> (raw)
In-Reply-To: <20230301034247.136007-1-bhe@redhat.com>
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
next prev parent reply other threads:[~2023-03-01 3:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-01 3:42 [PATCH v5 00/17] mm: ioremap: Convert architectures to take GENERIC_IOREMAP way Baoquan He
2023-03-01 3:42 ` [PATCH v5 01/17] asm-generic/iomap.h: remove ARCH_HAS_IOREMAP_xx macros Baoquan He
2023-03-01 3:42 ` Baoquan He
2023-03-01 4:38 ` Edward Cree
2023-03-01 4:38 ` Edward Cree
2023-03-01 5:11 ` Matthew Wilcox
2023-03-01 5:11 ` Matthew Wilcox
2023-03-01 9:24 ` Baoquan He
2023-03-01 9:24 ` Baoquan He
2023-03-01 3:42 ` Baoquan He [this message]
2023-03-01 3:42 ` [PATCH v5 03/17] openrisc: mm: remove unneeded early ioremap code Baoquan He
2023-03-01 3:42 ` [PATCH v5 04/17] mm/ioremap: Define generic_ioremap_prot() and generic_iounmap() Baoquan He
2023-03-01 3:42 ` [PATCH v5 05/17] mm: ioremap: allow ARCH to have its own ioremap method definition Baoquan He
2023-03-01 3:42 ` [PATCH v5 06/17] mm/ioremap: add slab availability checking in ioremap_prot Baoquan He
2023-03-01 3:42 ` [PATCH v5 07/17] arc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-03-01 3:42 ` Baoquan He
2023-03-01 3:42 ` [PATCH v5 08/17] ia64: " Baoquan He
2023-03-01 3:42 ` Baoquan He
2023-03-01 3:42 ` [PATCH v5 09/17] openrisc: " Baoquan He
2023-03-01 3:42 ` [PATCH v5 10/17] s390: " Baoquan He
2023-03-01 3:42 ` [PATCH v5 11/17] sh: " Baoquan He
2023-03-01 3:42 ` [PATCH v5 12/17] xtensa: " Baoquan He
2023-03-01 3:42 ` [PATCH v5 13/17] parisc: " Baoquan He
2023-03-01 3:42 ` [PATCH v5 14/17] mm/ioremap: Consider IOREMAP space in generic ioremap Baoquan He
2023-03-01 3:42 ` [PATCH v5 15/17] powerpc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-03-01 3:42 ` [PATCH v5 16/17] arm64 : mm: add wrapper function ioremap_prot() Baoquan He
2023-03-01 3:42 ` [PATCH v5 17/17] mm: ioremap: remove unneeded ioremap_allowed and iounmap_allowed Baoquan He
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230301034247.136007-3-bhe@redhat.com \
--to=bhe@redhat.com \
--cc=David.Laight@ACULAB.COM \
--cc=agordeev@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=bcain@quicinc.com \
--cc=christophe.leroy@csgroup.eu \
--cc=hch@infradead.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=schnelle@linux.ibm.com \
--cc=shorne@gmail.com \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.