From: Baoquan He <bhe@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
linux-mm@kvack.org, arnd@arndb.de, christophe.leroy@csgroup.eu,
agordeev@linux.ibm.com, wangkefeng.wang@huawei.com,
schnelle@linux.ibm.com, David.Laight@aculab.com,
shorne@gmail.com, willy@infradead.org, deller@gmx.de
Subject: Re: [PATCH v5 RESEND 14/17] mm/ioremap: Consider IOREMAP space in generic ioremap
Date: Tue, 30 May 2023 17:37:23 +0800 [thread overview]
Message-ID: <ZHXD082+VntWgbNo@MiWiFi-R3L-srv> (raw)
In-Reply-To: <ZGR3yWIdjfJTupgY@infradead.org>
On 05/16/23 at 11:44pm, Christoph Hellwig wrote:
> On Tue, May 16, 2023 at 11:41:26PM -0700, Christoph Hellwig wrote:
> > I think this would be cleaner if we'd just always use
> > __get_vm_area_caller and at the top of the file add a:
> >
> > #ifndef IOREMAP_START
> > #define IOREMAP_START VMALLOC_START
> > #define IOREMAP_END VMALLOC_END
> > #endif
> >
> > Together with a little comment that ioremap often, but not always
> > uses the generic vmalloc area.
>
> .. and with that we can also simply is_ioremap_addr by moving it
> to ioremap.c and making it always operate on the IOREMAP constants.
In the current code, is_ioremap_addr() is being used in kernel/iomem.c.
However, mm/ioremap.c is only built in when CONFIG_GENERIC_IOREMAP is
enabled. This will impact those architectures which haven't taken
GENERIC_IOREMAP way.
[~]$ git grep is_ioremap_addr
arch/powerpc/include/asm/pgtable.h:#define is_ioremap_addr is_ioremap_addr
arch/powerpc/include/asm/pgtable.h:static inline bool is_ioremap_addr(const void *x)
include/linux/mm.h:static inline bool is_ioremap_addr(const void *x)
include/linux/mm.h:static inline bool is_ioremap_addr(const void *x)
kernel/iomem.c: if (is_ioremap_addr(addr))
mm/ioremap.c: if (is_ioremap_addr(vaddr))
[bhe@MiWiFi-R3L-srv linux-arm64]$ git grep ioremap mm/Makefile
mm/Makefile:obj-$(CONFIG_GENERIC_EARLY_IOREMAP) += early_ioremap.o
mm/Makefile:obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o
If we want to consolidate code, we can move is_ioremap_addr() to
include/linux/mm.h libe below. Not sure if it's fine. With it,
both kernel/iomem.c and mm/ioremap.c can use is_ioremap_addr().
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 27ce77080c79..0fbb94f0f025 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1041,9 +1041,25 @@ unsigned long vmalloc_to_pfn(const void *addr);
* On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there
* is no special casing required.
*/
-
-#ifndef is_ioremap_addr
-#define is_ioremap_addr(x) is_vmalloc_addr(x)
+#if defined(CONFIG_HAS_IOMEM) || defined(CONFIG_GENERIC_IOREMAP)
+/*
+ * Ioremap often, but not always uses the generic vmalloc area. E.g on
+ * Power ARCH, it could have different ioremap space.
+ */
+#ifndef IOREMAP_START
+#define IOREMAP_START VMALLOC_START
+#define IOREMAP_END VMALLOC_END
+#endif
+static inline bool is_ioremap_addr(const void *x)
+{
+ unsigned long addr = (unsigned long)kasan_reset_tag(x);
+ return addr >= IOREMAP_START && addr < IOREMAP_END;
+}
+#else
+static inline bool is_ioremap_addr(const void *x)
+{
+ return false;
+}
#endif
#ifdef CONFIG_MMU
next prev parent reply other threads:[~2023-05-30 9:37 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-15 9:08 [PATCH v5 RESEND 00/17] mm: ioremap: Convert architectures to take GENERIC_IOREMAP way Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 01/17] asm-generic/iomap.h: remove ARCH_HAS_IOREMAP_xx macros Baoquan He
2023-05-16 6:15 ` Mike Rapoport
2023-05-16 12:54 ` Baoquan He
2023-05-16 7:07 ` Geert Uytterhoeven
2023-05-17 6:27 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 02/17] hexagon: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-16 6:17 ` Mike Rapoport
2023-05-17 6:27 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 03/17] openrisc: mm: remove unneeded early ioremap code Baoquan He
2023-05-16 6:17 ` Mike Rapoport
2023-05-16 13:03 ` Baoquan He
2023-05-17 6:28 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 04/17] mm/ioremap: Define generic_ioremap_prot() and generic_iounmap() Baoquan He
2023-05-16 6:17 ` Mike Rapoport
2023-05-17 6:29 ` Christoph Hellwig
2023-05-18 3:38 ` Baoquan He
2023-05-18 1:56 ` Kefeng Wang
2023-05-15 9:08 ` [PATCH v5 RESEND 05/17] mm: ioremap: allow ARCH to have its own ioremap method definition Baoquan He
2023-05-16 6:48 ` Mike Rapoport
2023-05-17 6:30 ` Christoph Hellwig
2023-05-18 1:56 ` Kefeng Wang
2023-05-15 9:08 ` [PATCH v5 RESEND 06/17] mm/ioremap: add slab availability checking in ioremap_prot Baoquan He
2023-05-16 6:48 ` Mike Rapoport
2023-05-17 6:30 ` Christoph Hellwig
2023-05-18 3:43 ` Baoquan He
2023-05-18 1:57 ` Kefeng Wang
2023-05-15 9:08 ` [PATCH v5 RESEND 07/17] arc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-16 6:49 ` Mike Rapoport
2023-05-17 6:31 ` Christoph Hellwig
2023-05-18 3:43 ` Baoquan He
2023-05-30 9:25 ` Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 08/17] ia64: " Baoquan He
2023-05-16 6:49 ` Mike Rapoport
2023-05-17 6:33 ` Christoph Hellwig
2023-05-18 3:44 ` Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 09/17] openrisc: " Baoquan He
2023-05-16 6:49 ` Mike Rapoport
2023-05-16 13:05 ` Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 10/17] s390: " Baoquan He
2023-05-16 6:50 ` Mike Rapoport
2023-05-17 6:36 ` Christoph Hellwig
2023-05-17 7:58 ` Niklas Schnelle
2023-05-17 8:08 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 11/17] sh: " Baoquan He
2023-05-17 6:37 ` Christoph Hellwig
2023-05-18 3:45 ` Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 12/17] xtensa: " Baoquan He
2023-05-16 6:51 ` Mike Rapoport
2023-05-17 6:38 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 13/17] parisc: " Baoquan He
2023-05-16 6:52 ` Mike Rapoport
2023-05-16 13:07 ` Baoquan He
2023-05-17 6:38 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 14/17] mm/ioremap: Consider IOREMAP space in generic ioremap Baoquan He
2023-05-16 6:53 ` Mike Rapoport
2023-05-17 6:41 ` Christoph Hellwig
2023-05-17 6:44 ` Christoph Hellwig
2023-05-20 3:31 ` Baoquan He
2023-05-20 5:04 ` Christoph Hellwig
2023-05-30 9:37 ` Baoquan He [this message]
2023-05-20 3:28 ` Baoquan He
2023-05-15 9:08 ` [PATCH v5 RESEND 15/17] powerpc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-16 7:00 ` Mike Rapoport
2023-05-17 6:42 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 16/17] arm64 : mm: add wrapper function ioremap_prot() Baoquan He
2023-05-16 7:02 ` Mike Rapoport
2023-05-17 6:42 ` Christoph Hellwig
2023-05-18 1:58 ` Kefeng Wang
2023-05-15 9:08 ` [PATCH v5 RESEND 17/17] mm: ioremap: remove unneeded ioremap_allowed and iounmap_allowed Baoquan He
2023-05-16 7:02 ` Mike Rapoport
2023-05-17 6:43 ` Christoph Hellwig
2023-05-18 1:58 ` Kefeng Wang
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=ZHXD082+VntWgbNo@MiWiFi-R3L-srv \
--to=bhe@redhat.com \
--cc=David.Laight@aculab.com \
--cc=agordeev@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=christophe.leroy@csgroup.eu \
--cc=deller@gmx.de \
--cc=hch@infradead.org \
--cc=linux-arch@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox