* [PATCH v2] PPC: request a consistent memory layout
@ 2017-05-09 7:51 Juergen Borleis
2017-05-11 6:17 ` Sascha Hauer
0 siblings, 1 reply; 2+ messages in thread
From: Juergen Borleis @ 2017-05-09 7:51 UTC (permalink / raw)
To: barebox
Using the memory test command will crash barebox, because it tests the
area where the stack is located for the PPC architecture.
On PPC the stack is below the barebox binary. Below the stack the malloc
area is located. Until this change some routines used the macros
from 'memory_layout.h', some other calculated their values by their
own - which resulted into an unrequested and unprotected stack area.
Signed-off-by: Juergen Borleis <jbe@pengutronix.de>
---
arch/ppc/mach-mpc5xxx/Kconfig | 1 -
arch/ppc/mach-mpc5xxx/cpu.c | 18 ++++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/arch/ppc/mach-mpc5xxx/Kconfig b/arch/ppc/mach-mpc5xxx/Kconfig
index 1ecce3a56..180aa32ad 100644
--- a/arch/ppc/mach-mpc5xxx/Kconfig
+++ b/arch/ppc/mach-mpc5xxx/Kconfig
@@ -32,7 +32,6 @@ config ARCH_MPC5200
config MPC5xxx
bool
depends on MACH_PHYCORE_MPC5200B_TINY
- select HAVE_CONFIGURABLE_MEMORY_LAYOUT
default y
menu "Board specific settings"
diff --git a/arch/ppc/mach-mpc5xxx/cpu.c b/arch/ppc/mach-mpc5xxx/cpu.c
index 42ced9ac5..ab58967aa 100644
--- a/arch/ppc/mach-mpc5xxx/cpu.c
+++ b/arch/ppc/mach-mpc5xxx/cpu.c
@@ -33,6 +33,8 @@
#include <of.h>
#include <restart.h>
#include <mach/clock.h>
+#include <asm-generic/memory_layout.h>
+#include <memory.h>
int checkcpu (void)
{
@@ -60,6 +62,22 @@ int checkcpu (void)
/* ------------------------------------------------------------------------- */
+static int mpc5xxx_reserve_region(void)
+{
+ struct resource *r;
+
+ /* keep this in sync with the assembler routines setting up the stack */
+ r = request_sdram_region("stack", _text_base - STACK_SIZE, STACK_SIZE);
+ if (r == NULL) {
+ pr_err("Failed to request stack region at: 0x%08lx/0x%08lx\n",
+ _text_base - STACK_SIZE, _text_base - 1);
+ return -EBUSY;
+ }
+
+ return 0;
+}
+coredevice_initcall(mpc5xxx_reserve_region);
+
static void __noreturn mpc5xxx_restart_soc(struct restart_handler *rst)
{
ulong msr;
--
2.11.0
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH v2] PPC: request a consistent memory layout
2017-05-09 7:51 [PATCH v2] PPC: request a consistent memory layout Juergen Borleis
@ 2017-05-11 6:17 ` Sascha Hauer
0 siblings, 0 replies; 2+ messages in thread
From: Sascha Hauer @ 2017-05-11 6:17 UTC (permalink / raw)
To: Juergen Borleis; +Cc: barebox
On Tue, May 09, 2017 at 09:51:15AM +0200, Juergen Borleis wrote:
> Using the memory test command will crash barebox, because it tests the
> area where the stack is located for the PPC architecture.
>
> On PPC the stack is below the barebox binary. Below the stack the malloc
> area is located. Until this change some routines used the macros
> from 'memory_layout.h', some other calculated their values by their
> own - which resulted into an unrequested and unprotected stack area.
>
> Signed-off-by: Juergen Borleis <jbe@pengutronix.de>
Applied, thanks
Sascha
> ---
> arch/ppc/mach-mpc5xxx/Kconfig | 1 -
> arch/ppc/mach-mpc5xxx/cpu.c | 18 ++++++++++++++++++
> 2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/arch/ppc/mach-mpc5xxx/Kconfig b/arch/ppc/mach-mpc5xxx/Kconfig
> index 1ecce3a56..180aa32ad 100644
> --- a/arch/ppc/mach-mpc5xxx/Kconfig
> +++ b/arch/ppc/mach-mpc5xxx/Kconfig
> @@ -32,7 +32,6 @@ config ARCH_MPC5200
> config MPC5xxx
> bool
> depends on MACH_PHYCORE_MPC5200B_TINY
> - select HAVE_CONFIGURABLE_MEMORY_LAYOUT
> default y
>
> menu "Board specific settings"
> diff --git a/arch/ppc/mach-mpc5xxx/cpu.c b/arch/ppc/mach-mpc5xxx/cpu.c
> index 42ced9ac5..ab58967aa 100644
> --- a/arch/ppc/mach-mpc5xxx/cpu.c
> +++ b/arch/ppc/mach-mpc5xxx/cpu.c
> @@ -33,6 +33,8 @@
> #include <of.h>
> #include <restart.h>
> #include <mach/clock.h>
> +#include <asm-generic/memory_layout.h>
> +#include <memory.h>
>
> int checkcpu (void)
> {
> @@ -60,6 +62,22 @@ int checkcpu (void)
>
> /* ------------------------------------------------------------------------- */
>
> +static int mpc5xxx_reserve_region(void)
> +{
> + struct resource *r;
> +
> + /* keep this in sync with the assembler routines setting up the stack */
> + r = request_sdram_region("stack", _text_base - STACK_SIZE, STACK_SIZE);
> + if (r == NULL) {
> + pr_err("Failed to request stack region at: 0x%08lx/0x%08lx\n",
> + _text_base - STACK_SIZE, _text_base - 1);
> + return -EBUSY;
> + }
> +
> + return 0;
> +}
> +coredevice_initcall(mpc5xxx_reserve_region);
> +
> static void __noreturn mpc5xxx_restart_soc(struct restart_handler *rst)
> {
> ulong msr;
> --
> 2.11.0
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-05-11 6:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-09 7:51 [PATCH v2] PPC: request a consistent memory layout Juergen Borleis
2017-05-11 6:17 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox