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:38 UTC|newest]
Thread overview: 99+ 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-15 9:08 ` Baoquan He
2023-05-16 6:15 ` Mike Rapoport
2023-05-16 6:15 ` Mike Rapoport
2023-05-16 12:54 ` Baoquan He
2023-05-16 12:54 ` Baoquan He
2023-05-16 7:07 ` Geert Uytterhoeven
2023-05-16 7:07 ` Geert Uytterhoeven
2023-05-17 6:27 ` Christoph Hellwig
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-15 9:08 ` Baoquan He
2023-05-16 6:49 ` Mike Rapoport
2023-05-16 6:49 ` Mike Rapoport
2023-05-17 6:31 ` Christoph Hellwig
2023-05-17 6:31 ` Christoph Hellwig
2023-05-18 3:43 ` Baoquan He
2023-05-18 3:43 ` Baoquan He
2023-05-30 9:25 ` Baoquan He
2023-05-30 9:25 ` Baoquan He
2023-06-01 11:14 ` Christoph Hellwig
2023-06-01 11:14 ` Christoph Hellwig
2023-05-15 9:08 ` [PATCH v5 RESEND 08/17] ia64: " Baoquan He
2023-05-15 9:08 ` Baoquan He
2023-05-16 6:49 ` Mike Rapoport
2023-05-16 6:49 ` Mike Rapoport
2023-05-17 6:33 ` Christoph Hellwig
2023-05-17 6:33 ` Christoph Hellwig
2023-05-18 3:44 ` Baoquan He
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-06-01 11:13 ` Christoph Hellwig
2023-06-02 10:42 ` Baoquan He
2023-06-02 15:05 ` Christoph Hellwig
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-15 9:08 ` Baoquan He
2023-05-16 7:00 ` Mike Rapoport
2023-05-16 7:00 ` Mike Rapoport
2023-05-17 6:42 ` Christoph Hellwig
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-15 9:08 ` Baoquan He
2023-05-16 7:02 ` Mike Rapoport
2023-05-16 7:02 ` Mike Rapoport
2023-05-17 6:42 ` Christoph Hellwig
2023-05-17 6:42 ` Christoph Hellwig
2023-05-18 1:58 ` Kefeng Wang
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 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.