mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Lucas Stach <l.stach@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH v3 04/10] ARM: add file for HYP mode related setup
Date: Tue, 10 Apr 2018 12:53:32 +0200	[thread overview]
Message-ID: <1523357612.4981.5.camel@pengutronix.de> (raw)
In-Reply-To: <20180405075402.gbplqqwoubu7cqpg@pengutronix.de>

Am Donnerstag, den 05.04.2018, 09:54 +0200 schrieb Sascha Hauer:
> On Mon, Mar 26, 2018 at 09:20:19PM +0200, Lucas Stach wrote:
> > This adds routines to add hyp mode vectors and switch back to HYP
> > mode from SVC. This is needed in both the PBL and Barebox proper.
> > 
> > > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> > > > Tested-by: Roland Hieber <r.hieber@pengutronix.de>
> > ---
> > v3:
> > - fix whitespace
> > - use __BARE_INIT
> > ---
> >  arch/arm/cpu/Makefile         |   4 ++
> >  arch/arm/cpu/hyp.S            | 116 ++++++++++++++++++++++++++++++++++++++++++
> >  arch/arm/cpu/sm_as.S          |  11 ----
> >  arch/arm/include/asm/secure.h |   8 +++
> >  4 files changed, 128 insertions(+), 11 deletions(-)
> >  create mode 100644 arch/arm/cpu/hyp.S
> > 
> > diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile
> > index 13fe12c31f6f..f86dff975bb4 100644
> > --- a/arch/arm/cpu/Makefile
> > +++ b/arch/arm/cpu/Makefile
> > @@ -9,6 +9,10 @@ obj-$(CONFIG_ARM_EXCEPTIONS) += exceptions.o
> >  obj-$(CONFIG_MMU) += mmu.o mmu-early.o
> >  pbl-$(CONFIG_MMU) += mmu-early.o
> >  lwl-y += lowlevel.o
> > +obj-y += hyp.o
> > +AFLAGS_hyp.o :=-Wa,-march=armv7-a -Wa,-mcpu=all
> > +pbl-y += hyp.o
> > +AFLAGS_pbl-hyp.o :=-Wa,-march=armv7-a -Wa,-mcpu=all
> >  endif
> >  
> >  obj-$(CONFIG_ARM_EXCEPTIONS) += interrupts.o
> > diff --git a/arch/arm/cpu/hyp.S b/arch/arm/cpu/hyp.S
> > new file mode 100644
> > index 000000000000..1314b56eab25
> > --- /dev/null
> > +++ b/arch/arm/cpu/hyp.S
> > @@ -0,0 +1,116 @@
> > +#include <linux/linkage.h>
> > +#include <asm/system.h>
> > +#include <asm/opcodes-virt.h>
> > +#include <init.h>
> > +
> > +.arch_extension sec
> > +.arch_extension virt
> > +
> > +__BARE_INIT
> > +
> > +.data
> > > > +	.align  2
> > +ENTRY(__boot_cpu_mode)
> > > > +	.long   0
> > +.text
> > +
> > +ENTRY(__hyp_install)
> > > > > > +	mrs	r12, cpsr
> > > > > > +	and	r12, r12, #MODE_MASK
> > +
> > > > +	@ Save the initial CPU state
> > > > > > +	adr	r0, .L__boot_cpu_mode_offset
> > > > > > +	ldr	r1, [r0]
> > +	str	r12, [r0, r1]
> 
> Naa, this won't work. You save the cpsr value in __boot_cpu_mode, but
> this variable exists both in PBL and regular barebox, __hyp_install
> is called multiple times and cpsr is modified right after saving it.

It does. ;)

I guess its non-obvious from the code flow, but what we do is to drop
down to SVC in the PBL, then jump back to HYP before starting barebox
proper and the dropping down to SVC again on barebox entry.
All in all this is less-than-pretty, but IMHO it's the lesser evil than
trying to implement some communication channel from PBL to barebox
proper to pass information like this.

So I guess this code needs some more comments...

Regards,
Lucas

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2018-04-10 10:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-26 19:20 [PATCH v3 01/10] ARM: import opcode helpers from Linux kernel Lucas Stach
2018-03-26 19:20 ` [PATCH v3 02/10] ARM: safely switch from HYP to SVC mode if required Lucas Stach
2018-03-26 19:20 ` [PATCH v3 03/10] ARM: allow secure monitor code to be built without PSCI Lucas Stach
2018-03-26 19:20 ` [PATCH v3 04/10] ARM: add file for HYP mode related setup Lucas Stach
2018-04-05  7:30   ` Sascha Hauer
2018-04-05  7:47   ` Sascha Hauer
2018-04-05  7:54   ` Sascha Hauer
2018-04-10 10:53     ` Lucas Stach [this message]
2018-04-11  8:41       ` Sascha Hauer
2018-03-26 19:20 ` [PATCH v3 05/10] ARM: don't try to install secure monitor when entered in HYP mode Lucas Stach
2018-03-26 19:20 ` [PATCH v3 06/10] ARM: default to starting kernel in HYP mode when entered in HYP Lucas Stach
2018-03-26 19:20 ` [PATCH v3 07/10] ARM: install HYP vectors at PBL and Barebox entry Lucas Stach
2018-04-05  7:42   ` Sascha Hauer
2018-04-10 10:34     ` Lucas Stach
2018-03-26 19:20 ` [PATCH v3 08/10] ARM: rpi: add revision IDs for Pi 3 Model B and Pi Zero Lucas Stach
2018-03-26 19:20 ` [PATCH v3 09/10] ARM: rpi: add raspberry pi 3 support Lucas Stach
2018-09-16 15:09   ` Alexander Dahl
2018-09-17 10:34     ` Roland Hieber
2018-03-26 19:20 ` [PATCH v3 10/10] ARM: rpi: autosize malloc area Lucas Stach

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=1523357612.4981.5.camel@pengutronix.de \
    --to=l.stach@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@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