of: Print rather than WARN'ing when overlap check fails
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 10 Nov 2015 05:08:33 +0000 (16:08 +1100)
committerRob Herring <robh@kernel.org>
Tue, 10 Nov 2015 23:23:47 +0000 (17:23 -0600)
__rmem_check_for_overlap() is called very early in boot, and on some
powerpc systems it's not safe to call WARN that early in boot.

If the overlap check fails the system will oops instead of printing a
warning. Furthermore because it's so early in boot the console is not up
and the user doesn't see the oops, they just get a dead system.

Fix it by printing an error instead of calling WARN.

Fixes: ae1add247bf8 ("of: Check for overlap in reserved memory regions")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/of_reserved_mem.c

index 62f467b8ccae940a931a2a08ce530a9a14f46a1f..49703916a30e04a0aadb67cea0d6ccce71d68f4e 100644 (file)
@@ -226,10 +226,9 @@ static void __init __rmem_check_for_overlap(void)
 
                        this_end = this->base + this->size;
                        next_end = next->base + next->size;
-                       WARN(1,
-                            "Reserved memory: OVERLAP DETECTED!\n%s (%pa--%pa) overlaps with %s (%pa--%pa)\n",
-                            this->name, &this->base, &this_end,
-                            next->name, &next->base, &next_end);
+                       pr_err("Reserved memory: OVERLAP DETECTED!\n%s (%pa--%pa) overlaps with %s (%pa--%pa)\n",
+                              this->name, &this->base, &this_end,
+                              next->name, &next->base, &next_end);
                }
        }
 }