All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] DT: consolidate bootmem support
@ 2018-01-05 23:14 Rob Herring
       [not found] ` <20180105231424.19247-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree, linux-kernel; +Cc: Frank Rowand

This series adds support for bootmem to the DT core code and removes the 
remaining arch specific early_init_dt_alloc_memory_arch implementations.

Compile tested only on arm64, mips, x86, and xtensa.

Rob

Rob Herring (7):
  of/fdt: use memblock_virt_alloc for early alloc
  cris: remove arch specific early DT functions
  metag: remove arch specific early DT functions
  mips: remove arch specific early_init_dt_alloc_memory_arch
  nios2: remove arch specific early_init_dt_alloc_memory_arch
  x86: remove arch specific early_init_dt_alloc_memory_arch
  xtensa: remove arch specific early DT functions

 arch/cris/kernel/Makefile     | 19 -------------------
 arch/cris/kernel/devicetree.c | 15 ---------------
 arch/metag/kernel/devtree.c   | 14 --------------
 arch/mips/kernel/prom.c       |  5 -----
 arch/nios2/kernel/prom.c      |  5 -----
 arch/x86/kernel/devicetree.c  |  6 ------
 arch/xtensa/kernel/setup.c    | 12 ------------
 drivers/of/fdt.c              | 16 ++++------------
 drivers/of/unittest.c         | 11 ++++++++---
 include/linux/of_fdt.h        |  1 -
 10 files changed, 12 insertions(+), 92 deletions(-)
 delete mode 100644 arch/cris/kernel/devicetree.c

-- 
2.14.1

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

* [PATCH 1/7] of/fdt: use memblock_virt_alloc for early alloc
  2018-01-05 23:14 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
@ 2018-01-05 23:14     ` Rob Herring
  2018-01-05 23:14 ` [PATCH 2/7] cris: remove arch specific early DT functions Rob Herring
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
  Cc: Frank Rowand

memblock_virt_alloc() works for both memblock and bootmem, so use it and
make early_init_dt_alloc_memory_arch a static function. The arches using
bootmem define early_init_dt_alloc_memory_arch as either:

__alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS))

or:

alloc_bootmem_align(size, align)

Both of these evaluate to the same thing as does memblock_virt_alloc for
bootmem. So we can disable the arch specific functions by making
early_init_dt_alloc_memory_arch static and they can be removed in
subsequent commits.

Cc: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Signed-off-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 drivers/of/fdt.c       | 16 ++++------------
 drivers/of/unittest.c  | 11 ++++++++---
 include/linux/of_fdt.h |  1 -
 3 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 4675e5ac4d11..444e65aa0d29 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -14,6 +14,7 @@
 #include <linux/crc32.h>
 #include <linux/kernel.h>
 #include <linux/initrd.h>
+#include <linux/bootmem.h>
 #include <linux/memblock.h>
 #include <linux/mutex.h>
 #include <linux/of.h>
@@ -1183,14 +1184,6 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
 	return memblock_reserve(base, size);
 }
 
-/*
- * called from unflatten_device_tree() to bootstrap devicetree itself
- * Architectures can override this definition if memblock isn't used
- */
-void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return __va(memblock_alloc(size, align));
-}
 #else
 void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
 {
@@ -1209,13 +1202,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
 		  &base, &size, nomap ? " (nomap)" : "");
 	return -ENOSYS;
 }
+#endif
 
-void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
+static void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
 {
-	WARN_ON(1);
-	return NULL;
+	return memblock_virt_alloc(size, align);
 }
-#endif
 
 bool __init early_init_dt_verify(void *params)
 {
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 0f8052f1355c..7a9abaae874d 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -5,6 +5,7 @@
 
 #define pr_fmt(fmt) "### dt-test ### " fmt
 
+#include <linux/bootmem.h>
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/errno.h>
@@ -2053,6 +2054,11 @@ static struct overlay_info overlays[] = {
 
 static struct device_node *overlay_base_root;
 
+static void * __init dt_alloc_memory(u64 size, u64 align)
+{
+	return memblock_virt_alloc(size, align);
+}
+
 /*
  * Create base device tree for the overlay unittest.
  *
@@ -2092,8 +2098,7 @@ void __init unittest_unflatten_overlay_base(void)
 		return;
 	}
 
-	info->data = early_init_dt_alloc_memory_arch(size,
-					     roundup_pow_of_two(FDT_V17_SIZE));
+	info->data = dt_alloc_memory(size, roundup_pow_of_two(FDT_V17_SIZE));
 	if (!info->data) {
 		pr_err("alloc for dtb 'overlay_base' failed");
 		return;
@@ -2102,7 +2107,7 @@ void __init unittest_unflatten_overlay_base(void)
 	memcpy(info->data, info->dtb_begin, size);
 
 	__unflatten_device_tree(info->data, NULL, &info->np_overlay,
-				early_init_dt_alloc_memory_arch, true);
+				dt_alloc_memory, true);
 	overlay_base_root = info->np_overlay;
 }
 
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index 444e6e283828..02c05028d0ba 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -83,7 +83,6 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size);
 extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
 extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
 					     bool no_map);
-extern void * early_init_dt_alloc_memory_arch(u64 size, u64 align);
 extern u64 dt_mem_next_cell(int s, const __be32 **cellp);
 
 /* Early flat tree scan hooks */
-- 
2.14.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 1/7] of/fdt: use memblock_virt_alloc for early alloc
@ 2018-01-05 23:14     ` Rob Herring
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree, linux-kernel; +Cc: Frank Rowand

memblock_virt_alloc() works for both memblock and bootmem, so use it and
make early_init_dt_alloc_memory_arch a static function. The arches using
bootmem define early_init_dt_alloc_memory_arch as either:

__alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS))

or:

alloc_bootmem_align(size, align)

Both of these evaluate to the same thing as does memblock_virt_alloc for
bootmem. So we can disable the arch specific functions by making
early_init_dt_alloc_memory_arch static and they can be removed in
subsequent commits.

Cc: Frank Rowand <frowand.list@gmail.com>
Signed-off-by: Rob Herring <robh@kernel.org>
---
 drivers/of/fdt.c       | 16 ++++------------
 drivers/of/unittest.c  | 11 ++++++++---
 include/linux/of_fdt.h |  1 -
 3 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 4675e5ac4d11..444e65aa0d29 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -14,6 +14,7 @@
 #include <linux/crc32.h>
 #include <linux/kernel.h>
 #include <linux/initrd.h>
+#include <linux/bootmem.h>
 #include <linux/memblock.h>
 #include <linux/mutex.h>
 #include <linux/of.h>
@@ -1183,14 +1184,6 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
 	return memblock_reserve(base, size);
 }
 
-/*
- * called from unflatten_device_tree() to bootstrap devicetree itself
- * Architectures can override this definition if memblock isn't used
- */
-void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return __va(memblock_alloc(size, align));
-}
 #else
 void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
 {
@@ -1209,13 +1202,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
 		  &base, &size, nomap ? " (nomap)" : "");
 	return -ENOSYS;
 }
+#endif
 
-void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
+static void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
 {
-	WARN_ON(1);
-	return NULL;
+	return memblock_virt_alloc(size, align);
 }
-#endif
 
 bool __init early_init_dt_verify(void *params)
 {
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 0f8052f1355c..7a9abaae874d 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -5,6 +5,7 @@
 
 #define pr_fmt(fmt) "### dt-test ### " fmt
 
+#include <linux/bootmem.h>
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/errno.h>
@@ -2053,6 +2054,11 @@ static struct overlay_info overlays[] = {
 
 static struct device_node *overlay_base_root;
 
+static void * __init dt_alloc_memory(u64 size, u64 align)
+{
+	return memblock_virt_alloc(size, align);
+}
+
 /*
  * Create base device tree for the overlay unittest.
  *
@@ -2092,8 +2098,7 @@ void __init unittest_unflatten_overlay_base(void)
 		return;
 	}
 
-	info->data = early_init_dt_alloc_memory_arch(size,
-					     roundup_pow_of_two(FDT_V17_SIZE));
+	info->data = dt_alloc_memory(size, roundup_pow_of_two(FDT_V17_SIZE));
 	if (!info->data) {
 		pr_err("alloc for dtb 'overlay_base' failed");
 		return;
@@ -2102,7 +2107,7 @@ void __init unittest_unflatten_overlay_base(void)
 	memcpy(info->data, info->dtb_begin, size);
 
 	__unflatten_device_tree(info->data, NULL, &info->np_overlay,
-				early_init_dt_alloc_memory_arch, true);
+				dt_alloc_memory, true);
 	overlay_base_root = info->np_overlay;
 }
 
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index 444e6e283828..02c05028d0ba 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -83,7 +83,6 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size);
 extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
 extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
 					     bool no_map);
-extern void * early_init_dt_alloc_memory_arch(u64 size, u64 align);
 extern u64 dt_mem_next_cell(int s, const __be32 **cellp);
 
 /* Early flat tree scan hooks */
-- 
2.14.1

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

* [PATCH 2/7] cris: remove arch specific early DT functions
  2018-01-05 23:14 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
       [not found] ` <20180105231424.19247-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
@ 2018-01-05 23:14 ` Rob Herring
  2018-01-05 23:14 ` [PATCH 3/7] metag: " Rob Herring
  2018-01-05 23:14 ` [PATCH 4/7] mips: remove arch specific early_init_dt_alloc_memory_arch Rob Herring
  3 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree, linux-kernel
  Cc: Frank Rowand, Mikael Starvik, Jesper Nilsson, linux-cris-kernel

Now that the DT core code handles bootmem arches, we can remove the cris
specific early_init_dt_alloc_memory_arch function. As the default
early_init_dt_add_memory_arch just does a WARN, we can just remove the
entire devicetree.c file.

Cc: Mikael Starvik <starvik@axis.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: linux-cris-kernel@axis.com
Signed-off-by: Rob Herring <robh@kernel.org>
---
This is dependent on patch 1. Please ack and I'll take or apply after 
4.16-rc1.

 arch/cris/kernel/Makefile     | 19 -------------------
 arch/cris/kernel/devicetree.c | 15 ---------------
 2 files changed, 34 deletions(-)
 delete mode 100644 arch/cris/kernel/devicetree.c

diff --git a/arch/cris/kernel/Makefile b/arch/cris/kernel/Makefile
index af075a5fb9aa..e69de29bb2d1 100644
--- a/arch/cris/kernel/Makefile
+++ b/arch/cris/kernel/Makefile
@@ -1,19 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# $Id: Makefile,v 1.12 2004/10/19 13:07:43 starvik Exp $
-#
-# Makefile for the linux kernel.
-#
-
-CPPFLAGS_vmlinux.lds := -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE)
-extra-y	:= vmlinux.lds
-
-obj-y   := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o
-obj-y += devicetree.o
-obj-y += stacktrace.o
-
-obj-$(CONFIG_MODULES)    += crisksyms.o
-obj-$(CONFIG_MODULES)	 += module.o
-obj-$(CONFIG_SYSTEM_PROFILER)   += profile.o
-
-clean:
-
diff --git a/arch/cris/kernel/devicetree.c b/arch/cris/kernel/devicetree.c
deleted file mode 100644
index 36e1c658229f..000000000000
--- a/arch/cris/kernel/devicetree.c
+++ /dev/null
@@ -1,15 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <linux/init.h>
-#include <linux/bootmem.h>
-#include <linux/printk.h>
-
-void __init early_init_dt_add_memory_arch(u64 base, u64 size)
-{
-	pr_err("%s(%llx, %llx)\n",
-	       __func__, base, size);
-}
-
-void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return alloc_bootmem_align(size, align);
-}
-- 
2.14.1

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

* [PATCH 3/7] metag: remove arch specific early DT functions
  2018-01-05 23:14 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
       [not found] ` <20180105231424.19247-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
  2018-01-05 23:14 ` [PATCH 2/7] cris: remove arch specific early DT functions Rob Herring
@ 2018-01-05 23:14 ` Rob Herring
  2018-01-05 23:14 ` [PATCH 4/7] mips: remove arch specific early_init_dt_alloc_memory_arch Rob Herring
  3 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree, linux-kernel; +Cc: Frank Rowand, James Hogan, linux-metag

Now that the DT core code handles bootmem arches, we can remove the metag
specific early_init_dt_alloc_memory_arch function. As the default
early_init_dt_add_memory_arch just does a WARN, we can remove it too.

Cc: James Hogan <jhogan@kernel.org>
Cc: linux-metag@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
This is dependent on patch 1. Please ack and I'll take or apply after   
4.16-rc1.

 arch/metag/kernel/devtree.c | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/arch/metag/kernel/devtree.c b/arch/metag/kernel/devtree.c
index 18dd7aea9fdc..6af749a64438 100644
--- a/arch/metag/kernel/devtree.c
+++ b/arch/metag/kernel/devtree.c
@@ -14,26 +14,12 @@
 #include <linux/init.h>
 #include <linux/export.h>
 #include <linux/types.h>
-#include <linux/bootmem.h>
-#include <linux/memblock.h>
-#include <linux/of.h>
 #include <linux/of_fdt.h>
 
 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/mach/arch.h>
 
-void __init early_init_dt_add_memory_arch(u64 base, u64 size)
-{
-	pr_err("%s(%llx, %llx)\n",
-	       __func__, base, size);
-}
-
-void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return alloc_bootmem_align(size, align);
-}
-
 static const void * __init arch_get_next_mach(const char *const **match)
 {
 	static const struct machine_desc *mdesc = __arch_info_begin;
-- 
2.14.1


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

* [PATCH 4/7] mips: remove arch specific early_init_dt_alloc_memory_arch
  2018-01-05 23:14 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
                   ` (2 preceding siblings ...)
  2018-01-05 23:14 ` [PATCH 3/7] metag: " Rob Herring
@ 2018-01-05 23:14 ` Rob Herring
  3 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:14 UTC (permalink / raw)
  To: devicetree, linux-kernel; +Cc: Frank Rowand, Ralf Baechle, linux-mips

Now that the DT core code handles bootmem arches, we can remove the MIPS
specific early_init_dt_alloc_memory_arch function.

Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
This is dependent on patch 1. Please ack and I'll take or apply after   
4.16-rc1.

 arch/mips/kernel/prom.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c
index 0dbcd152a1a9..89950b7bf536 100644
--- a/arch/mips/kernel/prom.c
+++ b/arch/mips/kernel/prom.c
@@ -44,11 +44,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
 	return add_memory_region(base, size, BOOT_MEM_RAM);
 }
 
-void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));
-}
-
 int __init early_init_dt_reserve_memory_arch(phys_addr_t base,
 					phys_addr_t size, bool nomap)
 {
-- 
2.14.1

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

* [PATCH 3/7] metag: remove arch specific early DT functions
  2018-01-05 23:20 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
@ 2018-01-05 23:20 ` Rob Herring
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2018-01-05 23:20 UTC (permalink / raw)
  To: devicetree, linux-kernel; +Cc: Frank Rowand, James Hogan, linux-metag

Now that the DT core code handles bootmem arches, we can remove the metag
specific early_init_dt_alloc_memory_arch function. As the default
early_init_dt_add_memory_arch just does a WARN, we can remove it too.

Cc: James Hogan <jhogan@kernel.org>
Cc: linux-metag@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
This is dependent on patch 1. Please ack and I'll take or apply after
4.16-rc1.

 arch/metag/kernel/devtree.c | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/arch/metag/kernel/devtree.c b/arch/metag/kernel/devtree.c
index 18dd7aea9fdc..6af749a64438 100644
--- a/arch/metag/kernel/devtree.c
+++ b/arch/metag/kernel/devtree.c
@@ -14,26 +14,12 @@
 #include <linux/init.h>
 #include <linux/export.h>
 #include <linux/types.h>
-#include <linux/bootmem.h>
-#include <linux/memblock.h>
-#include <linux/of.h>
 #include <linux/of_fdt.h>

 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/mach/arch.h>

-void __init early_init_dt_add_memory_arch(u64 base, u64 size)
-{
-	pr_err("%s(%llx, %llx)\n",
-	       __func__, base, size);
-}
-
-void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
-{
-	return alloc_bootmem_align(size, align);
-}
-
 static const void * __init arch_get_next_mach(const char *const **match)
 {
 	static const struct machine_desc *mdesc = __arch_info_begin;
--
2.14.1

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

end of thread, other threads:[~2018-01-05 23:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-05 23:14 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
     [not found] ` <20180105231424.19247-1-robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2018-01-05 23:14   ` [PATCH 1/7] of/fdt: use memblock_virt_alloc for early alloc Rob Herring
2018-01-05 23:14     ` Rob Herring
2018-01-05 23:14 ` [PATCH 2/7] cris: remove arch specific early DT functions Rob Herring
2018-01-05 23:14 ` [PATCH 3/7] metag: " Rob Herring
2018-01-05 23:14 ` [PATCH 4/7] mips: remove arch specific early_init_dt_alloc_memory_arch Rob Herring
  -- strict thread matches above, loose matches on Subject: below --
2018-01-05 23:20 [PATCH 0/7] DT: consolidate bootmem support Rob Herring
2018-01-05 23:20 ` [PATCH 3/7] metag: remove arch specific early DT functions Rob Herring

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.