From: Sascha Hauer <s.hauer@pengutronix.de>
To: Juergen Borleis <jbe@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH] PPC: request a consistent memory layout (part II)
Date: Mon, 22 May 2017 12:26:43 +0200 [thread overview]
Message-ID: <20170522102643.outnjbd4ymnrph5f@pengutronix.de> (raw)
In-Reply-To: <20170522084930.6072-1-jbe@pengutronix.de>
On Mon, May 22, 2017 at 10:49:30AM +0200, Juergen Borleis wrote:
> Using the memory test command will crash barebox, because it may tests the
> area where the vector table is located for the PPC architecture.
>
> On the e300 PPC core the vectors are programmable in their location.
> This change checks the used location at run-time and requests the area
> to prevent the memory test from overwriting it.
>
> Signed-off-by: Juergen Borleis <jbe@pengutronix.de>
> ---
> arch/ppc/include/asm/common.h | 1 +
> arch/ppc/mach-mpc5xxx/cpu.c | 17 +++++++++++++++++
> arch/ppc/mach-mpc5xxx/start.S | 5 +++++
> 3 files changed, 23 insertions(+)
>
> diff --git a/arch/ppc/include/asm/common.h b/arch/ppc/include/asm/common.h
> index 045817bed..7ea5dacdb 100644
> --- a/arch/ppc/include/asm/common.h
> +++ b/arch/ppc/include/asm/common.h
> @@ -11,6 +11,7 @@ int cpu_init (void);
>
> uint get_pvr (void);
> uint get_svr (void);
> +uint get_msr (void);
>
> void trap_init (ulong);
>
> diff --git a/arch/ppc/mach-mpc5xxx/cpu.c b/arch/ppc/mach-mpc5xxx/cpu.c
> index ab58967aa..75bb7b9e8 100644
> --- a/arch/ppc/mach-mpc5xxx/cpu.c
> +++ b/arch/ppc/mach-mpc5xxx/cpu.c
> @@ -61,10 +61,27 @@ int checkcpu (void)
> }
>
> /* ------------------------------------------------------------------------- */
> +static unsigned mpc5125_get_CPU_exception_vector_begin(void)
> +{
> + unsigned msr = get_msr();
> +
> + if (msr & MSR_IP)
> + return 0xfff00000;
> + return 0x00000000;
> +}
>
> static int mpc5xxx_reserve_region(void)
> {
> struct resource *r;
> + unsigned exception_vector;
> +
> + exception_vector = mpc5125_get_CPU_exception_vector_begin();
> + r = request_sdram_region("vector_table", exception_vector, exception_vector + 0x2fff);
> + if (r == NULL) {
> + pr_err("Failed to request vector_table region at: 0x%08x/0x%08x\n",
> + exception_vector, exception_vector + 0x2fff);
> + return -EBUSY;
> + }
I have the feeling that we should actively put the vector table to one
of the two locations, so we should implicitly know where it is and not
have to test the MSR_IP bit.
Also there is no SDRAM at 0xfff00000, right? Requesting SDRAM there
will fail every time for a good reason.
Sascha
--
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
next prev parent reply other threads:[~2017-05-22 10:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-22 8:49 Juergen Borleis
2017-05-22 10:26 ` Sascha Hauer [this message]
2017-05-22 10:34 ` Juergen Borleis
2017-05-22 10:43 ` Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170522102643.outnjbd4ymnrph5f@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=jbe@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox