Thread (59 messages) flat view 59 messages, 9 authors, 2013-10-07

Re: [PATCH 18/28] of: create default early_init_dt_add_memory_arch

From: Grant Likely <hidden>
Date: 2013-09-22 13:29:03
Also in: linux-arm-kernel, lkml

On Wed, 18 Sep 2013 10:09:40 -0500, Rob Herring [off-list ref] wrote:
On Tue, Sep 17, 2013 at 10:33 PM, Grant Likely [off-list ref] wrote:
quoted
On Mon, 16 Sep 2013 18:09:14 -0500, Rob Herring [off-list ref] wrote:
quoted
From: Rob Herring <redacted>

Create a weak version of early_init_dt_add_memory_arch which uses
memblock or is an empty function when memblock is not enabled. This
will unify all architectures except ones with custom memory bank
structs.
Two comments below, but otherwise:

Acked-by: Grant Likely <redacted>
quoted
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 0714dd4..a9dce7a 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -688,6 +688,17 @@ u64 __init dt_mem_next_cell(int s, __be32 **cellp)
      return of_read_number(p, s);
 }

+void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
+{
+#ifdef CONFIG_HAVE_MEMBLOCK
+     base &= PAGE_MASK;
+     size &= PAGE_MASK;
+     memblock_add(base, size);
+#else
+     pr_err("%s: ignoring memory (%llx, %llx)\n", __func__, base, size);
+#endif
+}
+
Can you do it this way instead:

#ifdef CONFIG_HAVE_MEMBLOCK
void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
{
        base &= PAGE_MASK;
        size &= PAGE_MASK;
        memblock_add(base, size);
}
#endif

If the platform doesn't provide an early_init_dt_add_memory_arch()
function and it doesn't have a memblock implementation, then the build
should outright fail. I don't see a scenario where we would want to
successfully build the kernel without a working add memory function.
metag and x86 both have empty functions. I guess they get memory from
a different boot interface.
I would put the exceptions into arch/x86 and arch/metag then. The
default answer should be that early_init_dt_add_memory_arch() works, and
the build will fail if they aren't implemented. If it really is valid to
have an empty implementation, then the architecture should have to do
something special to get that.

g.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help