Linux-RISC-V Archive on lore.kernel.org
 help / color / Atom feed
* Add and use a generic version of devmem_is_allowed()
@ 2020-07-09 21:19 Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 1/5] lib: Add " Palmer Dabbelt
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	brendanhiggins, elver, glider, mchehab+samsung, linux-riscv,
	alex.shi, will, dan.j.williams, linux-arch, uwe, alex,
	takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

As part of adding STRICT_DEVMEM support to the RISC-V port, Zong provided an
implementation of devmem_is_allowed() that's exactly the same as the version in
a handful of other ports.  Rather than duplicate code, I've put a generic
version of this in lib/ and used it for the RISC-V port.

I've put those first two patches on riscv/for-next, which I'm targeting for 5.9
(though this is the first version, so they're unreviewed).  The other three
obviously depend on the first one going on, but I'm not putting them in the
RISC-V tree as I don't want to step on anyone's toes.  If you want me to take
yours along with the others then please say something, as otherwise I'll
probably forget.

I've put the whole thing at
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git -b
generic-devmem .

Changes since v1 [<20200709200552.1910298-1-palmer@dabbelt.com]:

* Don't have GENERIC_LIB_DEVMEM_IS_ALLOWED select ARCH_HAS_DEVMEM_IS_ALLOWED,
  instead just adapt the users.
* Remove ARCH_HAS_DEVMEM_IS_ALLOWED from the arch Kconfigs, as I forgot to do
  so the first time.



_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 1/5] lib: Add a generic version of devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
@ 2020-07-09 21:19 ` Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 2/5] RISC-V: Use the new generic devmem_is_allowed() Palmer Dabbelt
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	Palmer Dabbelt, brendanhiggins, elver, glider, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

From: Palmer Dabbelt <palmerdabbelt@google.com>

As part of adding support for STRICT_DEVMEM to the RISC-V port, Zong
provided a devmem_is_allowed() implementation that's exactly the same as
all the others I checked.  Instead I'm adding a generic version, which
will soon be used.

Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
---
 include/asm-generic/io.h |  4 ++++
 lib/Kconfig              |  3 +++
 lib/Kconfig.debug        |  2 +-
 lib/Makefile             |  2 ++
 lib/devmem_is_allowed.c  | 27 +++++++++++++++++++++++++++
 5 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 lib/devmem_is_allowed.c

diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
index 8b1e020e9a03..69e3db65fba0 100644
--- a/include/asm-generic/io.h
+++ b/include/asm-generic/io.h
@@ -1122,6 +1122,10 @@ static inline void memcpy_toio(volatile void __iomem *addr, const void *buffer,
 }
 #endif
 
+#ifndef CONFIG_GENERIC_DEVMEM_IS_ALLOWED
+extern int devmem_is_allowed(unsigned long pfn);
+#endif
+
 #endif /* __KERNEL__ */
 
 #endif /* __ASM_GENERIC_IO_H */
diff --git a/lib/Kconfig b/lib/Kconfig
index df3f3da95990..610c16ecbb7c 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -676,3 +676,6 @@ config GENERIC_LIB_CMPDI2
 
 config GENERIC_LIB_UCMPDI2
 	bool
+
+config GENERIC_LIB_DEVMEM_IS_ALLOWED
+	bool
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 9ad9210d70a1..e095bd631ba1 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1577,7 +1577,7 @@ config ARCH_HAS_DEVMEM_IS_ALLOWED
 config STRICT_DEVMEM
 	bool "Filter access to /dev/mem"
 	depends on MMU && DEVMEM
-	depends on ARCH_HAS_DEVMEM_IS_ALLOWED
+	depends on ARCH_HAS_DEVMEM_IS_ALLOWED || GENERIC_LIB_DEVMEM_IS_ALLOWED
 	default y if PPC || X86 || ARM64
 	help
 	  If this option is disabled, you allow userspace (root) access to all
diff --git a/lib/Makefile b/lib/Makefile
index b1c42c10073b..554ef14f9be5 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -318,3 +318,5 @@ obj-$(CONFIG_OBJAGG) += objagg.o
 # KUnit tests
 obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o
 obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o
+
+obj-$(CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED) += devmem_is_allowed.o
diff --git a/lib/devmem_is_allowed.c b/lib/devmem_is_allowed.c
new file mode 100644
index 000000000000..c0d67c541849
--- /dev/null
+++ b/lib/devmem_is_allowed.c
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * A generic version of devmem_is_allowed.
+ *
+ * Based on arch/arm64/mm/mmap.c
+ *
+ * Copyright (C) 2020 Google, Inc.
+ * Copyright (C) 2012 ARM Ltd.
+ */
+
+#include <linux/mm.h>
+#include <linux/ioport.h>
+
+/*
+ * devmem_is_allowed() checks to see if /dev/mem access to a certain address
+ * is valid. The argument is a physical page number.  We mimic x86 here by
+ * disallowing access to system RAM as well as device-exclusive MMIO regions.
+ * This effectively disable read()/write() on /dev/mem.
+ */
+int devmem_is_allowed(unsigned long pfn)
+{
+	if (iomem_is_exclusive(pfn << PAGE_SHIFT))
+		return 0;
+	if (!page_is_ram(pfn))
+		return 1;
+	return 0;
+}
-- 
2.27.0.383.g050319c2ae-goog


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 2/5] RISC-V: Use the new generic devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 1/5] lib: Add " Palmer Dabbelt
@ 2020-07-09 21:19 ` Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 3/5] arm: Use the " Palmer Dabbelt
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	Palmer Dabbelt, brendanhiggins, elver, glider, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

From: Palmer Dabbelt <palmerdabbelt@google.com>

This allows us to enable STRICT_DEVMEM.

Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 089293e4ad46..8ff368a65a07 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -37,6 +37,7 @@ config RISCV
 	select GENERIC_IOREMAP
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_SHOW
+	select GENERIC_LIB_DEVMEM_IS_ALLOWED
 	select GENERIC_PCI_IOMAP
 	select GENERIC_PTDUMP if MMU
 	select GENERIC_SCHED_CLOCK
-- 
2.27.0.383.g050319c2ae-goog


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 3/5] arm: Use the generic devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 1/5] lib: Add " Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 2/5] RISC-V: Use the new generic devmem_is_allowed() Palmer Dabbelt
@ 2020-07-09 21:19 ` Palmer Dabbelt
  2020-07-09 21:19 ` [PATCH v2 4/5] arm64: " Palmer Dabbelt
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	Palmer Dabbelt, brendanhiggins, elver, glider, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

From: Palmer Dabbelt <palmerdabbelt@google.com>

This is exactly the same as the arm64 version, which I recently copied
into lib/ for use by the RISC-V port.

[I haven't even build tested this.  The lib/ patch is on riscv/for-next,
which I'm targeting for 5.9, so this won't work alone.  See the cover
letter for more details.]

Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
---
 arch/arm/Kconfig          |  2 +-
 arch/arm/include/asm/io.h |  1 -
 arch/arm/mm/mmap.c        | 22 ----------------------
 3 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 2ac74904a3ce..da0f88f6c196 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -5,7 +5,6 @@ config ARM
 	select ARCH_32BIT_OFF_T
 	select ARCH_HAS_BINFMT_FLAT
 	select ARCH_HAS_DEBUG_VIRTUAL if MMU
-	select ARCH_HAS_DEVMEM_IS_ALLOWED
 	select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE
 	select ARCH_HAS_ELF_RANDOMIZE
 	select ARCH_HAS_FORTIFY_SOURCE
@@ -54,6 +53,7 @@ config ARM
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
 	select GENERIC_IRQ_SHOW_LEVEL
+	select GENERIC_LIB_DEVMEM_IS_ALLOWED
 	select GENERIC_PCI_IOMAP
 	select GENERIC_SCHED_CLOCK
 	select GENERIC_SMP_IDLE_THREAD
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index ab2b654084fa..fc748122f1e0 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -441,7 +441,6 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);
 #define ARCH_HAS_VALID_PHYS_ADDR_RANGE
 extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
 extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
-extern int devmem_is_allowed(unsigned long pfn);
 #endif
 
 /*
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index b8d912ac9e61..a0f8a0ca0788 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -165,25 +165,3 @@ int valid_mmap_phys_addr_range(unsigned long pfn, size_t size)
 {
 	return (pfn + (size >> PAGE_SHIFT)) <= (1 + (PHYS_MASK >> PAGE_SHIFT));
 }
-
-#ifdef CONFIG_STRICT_DEVMEM
-
-#include <linux/ioport.h>
-
-/*
- * devmem_is_allowed() checks to see if /dev/mem access to a certain
- * address is valid. The argument is a physical page number.
- * We mimic x86 here by disallowing access to system RAM as well as
- * device-exclusive MMIO regions. This effectively disable read()/write()
- * on /dev/mem.
- */
-int devmem_is_allowed(unsigned long pfn)
-{
-	if (iomem_is_exclusive(pfn << PAGE_SHIFT))
-		return 0;
-	if (!page_is_ram(pfn))
-		return 1;
-	return 0;
-}
-
-#endif
-- 
2.27.0.383.g050319c2ae-goog


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 4/5] arm64: Use the generic devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
                   ` (2 preceding siblings ...)
  2020-07-09 21:19 ` [PATCH v2 3/5] arm: Use the " Palmer Dabbelt
@ 2020-07-09 21:19 ` Palmer Dabbelt
  2020-07-14 18:14   ` Catalin Marinas
  2020-07-09 21:19 ` [PATCH v2 5/5] unicore32: " Palmer Dabbelt
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	Palmer Dabbelt, brendanhiggins, elver, glider, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

From: Palmer Dabbelt <palmerdabbelt@google.com>

I recently copied this into lib/ for use by the RISC-V port.

[I haven't even build tested this.  The lib/ patch is on riscv/for-next,
which I'm targeting for 5.9, so this won't work alone.  See the cover
letter for more details.]

Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
---
 arch/arm64/Kconfig          |  2 +-
 arch/arm64/include/asm/io.h |  2 --
 arch/arm64/mm/mmap.c        | 21 ---------------------
 3 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 66dc41fd49f2..0682672cb244 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -13,7 +13,6 @@ config ARM64
 	select ARCH_BINFMT_ELF_STATE
 	select ARCH_HAS_DEBUG_VIRTUAL
 	select ARCH_HAS_DEBUG_VM_PGTABLE
-	select ARCH_HAS_DEVMEM_IS_ALLOWED
 	select ARCH_HAS_DMA_PREP_COHERENT
 	select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI
 	select ARCH_HAS_FAST_MULTIPLIER
@@ -110,6 +109,7 @@ config ARM64
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
 	select GENERIC_IRQ_SHOW_LEVEL
+	select GENERIC_LIB_DEVMEM_IS_ALLOWED
 	select GENERIC_PCI_IOMAP
 	select GENERIC_PTDUMP
 	select GENERIC_SCHED_CLOCK
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index ff50dd731852..c53eba1a7fd2 100644
--- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h
@@ -200,6 +200,4 @@ extern void __iomem *ioremap_cache(phys_addr_t phys_addr, size_t size);
 extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
 extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
 
-extern int devmem_is_allowed(unsigned long pfn);
-
 #endif	/* __ASM_IO_H */
diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c
index 3028bacbc4e9..07937b49cb88 100644
--- a/arch/arm64/mm/mmap.c
+++ b/arch/arm64/mm/mmap.c
@@ -47,24 +47,3 @@ int valid_mmap_phys_addr_range(unsigned long pfn, size_t size)
 {
 	return !(((pfn << PAGE_SHIFT) + size) & ~PHYS_MASK);
 }
-
-#ifdef CONFIG_STRICT_DEVMEM
-
-#include <linux/ioport.h>
-
-/*
- * devmem_is_allowed() checks to see if /dev/mem access to a certain address
- * is valid. The argument is a physical page number.  We mimic x86 here by
- * disallowing access to system RAM as well as device-exclusive MMIO regions.
- * This effectively disable read()/write() on /dev/mem.
- */
-int devmem_is_allowed(unsigned long pfn)
-{
-	if (iomem_is_exclusive(pfn << PAGE_SHIFT))
-		return 0;
-	if (!page_is_ram(pfn))
-		return 1;
-	return 0;
-}
-
-#endif
-- 
2.27.0.383.g050319c2ae-goog


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 5/5] unicore32: Use the generic devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
                   ` (3 preceding siblings ...)
  2020-07-09 21:19 ` [PATCH v2 4/5] arm64: " Palmer Dabbelt
@ 2020-07-09 21:19 ` Palmer Dabbelt
  2020-07-12  6:09 ` Add and use a generic version of devmem_is_allowed() Mike Rapoport
  2020-07-29  0:00 ` Luis Chamberlain
  6 siblings, 0 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 21:19 UTC (permalink / raw)
  To: zong.li, linux-riscv, rppt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	Palmer Dabbelt, brendanhiggins, elver, glider, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, james.morse, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, mcgrof,
	Palmer Dabbelt, mhiramat, akpm, davem

From: Palmer Dabbelt <palmerdabbelt@google.com>

Aside from being inlineable, this is exactly the same as the arm64
version, which I recently copied into lib/ for use by the RISC-V port.

[I haven't even build tested this.  The lib/ patch is on riscv/for-next,
which I'm targeting for 5.9, so this won't work alone.  See the cover
letter for more details.]

Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
---
 arch/unicore32/Kconfig          |  2 +-
 arch/unicore32/include/asm/io.h | 23 -----------------------
 2 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig
index 11ba1839d198..7610571044f4 100644
--- a/arch/unicore32/Kconfig
+++ b/arch/unicore32/Kconfig
@@ -2,7 +2,6 @@
 config UNICORE32
 	def_bool y
 	select ARCH_32BIT_OFF_T
-	select ARCH_HAS_DEVMEM_IS_ALLOWED
 	select ARCH_HAS_KEEPINITRD
 	select ARCH_MIGHT_HAVE_PC_PARPORT
 	select ARCH_MIGHT_HAVE_PC_SERIO
@@ -12,6 +11,7 @@ config UNICORE32
 	select HAVE_KERNEL_LZO
 	select HAVE_KERNEL_LZMA
 	select HAVE_PCI
+	select GENERIC_LIB_DEVMEM_IS_ALLOWED
 	select VIRT_TO_BUS
 	select ARCH_HAVE_CUSTOM_GPIO_H
 	select GENERIC_FIND_FIRST_BIT
diff --git a/arch/unicore32/include/asm/io.h b/arch/unicore32/include/asm/io.h
index bd4e7c332f85..4560d2531655 100644
--- a/arch/unicore32/include/asm/io.h
+++ b/arch/unicore32/include/asm/io.h
@@ -42,28 +42,5 @@ extern void __uc32_iounmap(volatile void __iomem *addr);
 #define PIO_MASK		(unsigned int)(IO_SPACE_LIMIT)
 #define PIO_RESERVED		(PIO_OFFSET + PIO_MASK + 1)
 
-#ifdef CONFIG_STRICT_DEVMEM
-
-#include <linux/ioport.h>
-#include <linux/mm.h>
-
-/*
- * devmem_is_allowed() checks to see if /dev/mem access to a certain
- * address is valid. The argument is a physical page number.
- * We mimic x86 here by disallowing access to system RAM as well as
- * device-exclusive MMIO regions. This effectively disable read()/write()
- * on /dev/mem.
- */
-static inline int devmem_is_allowed(unsigned long pfn)
-{
-	if (iomem_is_exclusive(pfn << PAGE_SHIFT))
-		return 0;
-	if (!page_is_ram(pfn))
-		return 1;
-	return 0;
-}
-
-#endif /* CONFIG_STRICT_DEVMEM */
-
 #endif	/* __KERNEL__ */
 #endif	/* __UNICORE_IO_H__ */
-- 
2.27.0.383.g050319c2ae-goog


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Add and use a generic version of devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
                   ` (4 preceding siblings ...)
  2020-07-09 21:19 ` [PATCH v2 5/5] unicore32: " Palmer Dabbelt
@ 2020-07-12  6:09 ` Mike Rapoport
  2020-07-29  0:00 ` Luis Chamberlain
  6 siblings, 0 replies; 10+ messages in thread
From: Mike Rapoport @ 2020-07-12  6:09 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: mark.rutland, steve, davidgow, catalin.marinas, linus.walleij,
	brendanhiggins, elver, glider, zong.li, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, ardb,
	bgolaszewski, clabbe, kernel-team, pmladek, zaslonko, aou,
	keescook, Arnd Bergmann, rostedt, broonie, matti.vaittinen,
	gregory.0xf0, Paul Walmsley, tglx, andriy.shevchenko, gxt,
	linux-arm-kernel, Greg KH, rdunlap, Nick Desaulniers,
	linux-kernel, changbin.du, mcgrof, james.morse, mhiramat, akpm,
	davem

On Thu, Jul 09, 2020 at 02:19:20PM -0700, Palmer Dabbelt wrote:
> As part of adding STRICT_DEVMEM support to the RISC-V port, Zong provided an
> implementation of devmem_is_allowed() that's exactly the same as the version in
> a handful of other ports.  Rather than duplicate code, I've put a generic
> version of this in lib/ and used it for the RISC-V port.
> 
> I've put those first two patches on riscv/for-next, which I'm targeting for 5.9
> (though this is the first version, so they're unreviewed).  The other three
> obviously depend on the first one going on, but I'm not putting them in the
> RISC-V tree as I don't want to step on anyone's toes.  If you want me to take
> yours along with the others then please say something, as otherwise I'll
> probably forget.

For the series

Acked-by: Mike Rapoport <rppt@linux.ibm.com>

> I've put the whole thing at
> ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git -b
> generic-devmem .
> 
> Changes since v1 [<20200709200552.1910298-1-palmer@dabbelt.com]:
> 
> * Don't have GENERIC_LIB_DEVMEM_IS_ALLOWED select ARCH_HAS_DEVMEM_IS_ALLOWED,
>   instead just adapt the users.
> * Remove ARCH_HAS_DEVMEM_IS_ALLOWED from the arch Kconfigs, as I forgot to do
>   so the first time.
> 
> 

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 4/5] arm64: Use the generic devmem_is_allowed()
  2020-07-09 21:19 ` [PATCH v2 4/5] arm64: " Palmer Dabbelt
@ 2020-07-14 18:14   ` Catalin Marinas
  0 siblings, 0 replies; 10+ messages in thread
From: Catalin Marinas @ 2020-07-14 18:14 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: mark.rutland, steve, davidgow, ardb, matti.vaittinen,
	linus.walleij, Palmer Dabbelt, brendanhiggins, elver, glider,
	zong.li, mchehab+samsung, linux-riscv, alex.shi, will,
	dan.j.williams, linux-arch, uwe, alex, takahiro.akashi, paulmck,
	masahiroy, linux, krzk, rppt, bgolaszewski, clabbe, kernel-team,
	pmladek, zaslonko, aou, keescook, Arnd Bergmann, rostedt,
	broonie, gregory.0xf0, Paul Walmsley, tglx, andriy.shevchenko,
	gxt, linux-arm-kernel, Greg KH, rdunlap, Nick Desaulniers,
	linux-kernel, changbin.du, mcgrof, james.morse, mhiramat, akpm,
	davem

On Thu, Jul 09, 2020 at 02:19:24PM -0700, Palmer Dabbelt wrote:
> From: Palmer Dabbelt <palmerdabbelt@google.com>
> 
> I recently copied this into lib/ for use by the RISC-V port.
> 
> [I haven't even build tested this.  The lib/ patch is on riscv/for-next,
> which I'm targeting for 5.9, so this won't work alone.  See the cover
> letter for more details.]
> 
> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Add and use a generic version of devmem_is_allowed()
  2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
                   ` (5 preceding siblings ...)
  2020-07-12  6:09 ` Add and use a generic version of devmem_is_allowed() Mike Rapoport
@ 2020-07-29  0:00 ` Luis Chamberlain
  6 siblings, 0 replies; 10+ messages in thread
From: Luis Chamberlain @ 2020-07-29  0:00 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: mark.rutland, steve, davidgow, ardb, catalin.marinas,
	linus.walleij, brendanhiggins, elver, glider, zong.li,
	mchehab+samsung, linux-riscv, alex.shi, will, dan.j.williams,
	linux-arch, uwe, alex, takahiro.akashi, paulmck, masahiroy,
	linux, krzk, rppt, bgolaszewski, clabbe, kernel-team, pmladek,
	zaslonko, aou, keescook, Arnd Bergmann, rostedt, broonie,
	matti.vaittinen, gregory.0xf0, Paul Walmsley, tglx,
	andriy.shevchenko, gxt, linux-arm-kernel, Greg KH, rdunlap,
	Nick Desaulniers, linux-kernel, changbin.du, james.morse,
	mhiramat, akpm, davem

On Thu, Jul 09, 2020 at 02:19:20PM -0700, Palmer Dabbelt wrote:
> As part of adding STRICT_DEVMEM support to the RISC-V port, Zong provided an
> implementation of devmem_is_allowed() that's exactly the same as the version in
> a handful of other ports.  Rather than duplicate code, I've put a generic
> version of this in lib/ and used it for the RISC-V port.
> 
> I've put those first two patches on riscv/for-next, which I'm targeting for 5.9
> (though this is the first version, so they're unreviewed).  The other three
> obviously depend on the first one going on, but I'm not putting them in the
> RISC-V tree as I don't want to step on anyone's toes.  If you want me to take
> yours along with the others then please say something, as otherwise I'll
> probably forget.
> 
> I've put the whole thing at
> ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git -b
> generic-devmem .

Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>

  Luis

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Add and use a generic version of devmem_is_allowed()
@ 2020-07-09 20:05 Palmer Dabbelt
  0 siblings, 0 replies; 10+ messages in thread
From: Palmer Dabbelt @ 2020-07-09 20:05 UTC (permalink / raw)
  To: linux-riscv, zong.li
  Cc: mark.rutland, steve, davidgow, ardb, catalin.marinas,
	linus.walleij, elver, glider, willy, mchehab+samsung,
	linux-riscv, alex.shi, will, dan.j.williams, linux-arch, uwe,
	alex, takahiro.akashi, paulmck, masahiroy, linux, krzk, rppt,
	bgolaszewski, james.morse, kernel-team, pmladek, zaslonko, aou,
	keescook, Arnd Bergmann, rostedt, broonie, matti.vaittinen,
	gregory.0xf0, Paul Walmsley, tglx, andriy.shevchenko, gxt,
	linux-arm-kernel, rdunlap, Nick Desaulniers, linux-kernel,
	mcgrof, Palmer Dabbelt, mhiramat, akpm, davem

As part of adding STRICT_DEVMEM support to the RISC-V port, Zong provided an
implementation of devmem_is_allowed() that's exactly the same as the version in
a handful of other ports.  Rather than duplicate code, I've put a generic
version of this in lib/ and used it for the RISC-V port.

I've put those first two patches on riscv/for-next, which I'm targeting for 5.9
(though this is the first version, so they're unreviewed).  The other three
obviously depend on the first one going on, but I'm not putting them in the
RISC-V tree as I don't want to step on anyone's toes.  If you want me to take
yours along with the others then please say something, as otherwise I'll
probably forget.

I've put the whole thing at
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/palmer/linux.git -b
generic-devmem .



_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, back to index

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-09 21:19 Add and use a generic version of devmem_is_allowed() Palmer Dabbelt
2020-07-09 21:19 ` [PATCH v2 1/5] lib: Add " Palmer Dabbelt
2020-07-09 21:19 ` [PATCH v2 2/5] RISC-V: Use the new generic devmem_is_allowed() Palmer Dabbelt
2020-07-09 21:19 ` [PATCH v2 3/5] arm: Use the " Palmer Dabbelt
2020-07-09 21:19 ` [PATCH v2 4/5] arm64: " Palmer Dabbelt
2020-07-14 18:14   ` Catalin Marinas
2020-07-09 21:19 ` [PATCH v2 5/5] unicore32: " Palmer Dabbelt
2020-07-12  6:09 ` Add and use a generic version of devmem_is_allowed() Mike Rapoport
2020-07-29  0:00 ` Luis Chamberlain
  -- strict thread matches above, loose matches on Subject: below --
2020-07-09 20:05 Palmer Dabbelt

Linux-RISC-V Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-riscv/0 linux-riscv/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-riscv linux-riscv/ https://lore.kernel.org/linux-riscv \
		linux-riscv@lists.infradead.org
	public-inbox-index linux-riscv

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-riscv


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git