All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@linaro.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 3/8] ARM: add assembly routine to switch to non-secure state
Date: Thu, 19 Sep 2013 23:31:21 +0200	[thread overview]
Message-ID: <523B6D29.9020505@linaro.org> (raw)
In-Reply-To: <CAPUj1ON6SykrcoQB3EC4+V9eCdqZ0P4wED-kLofBwfOz6co6Qw@mail.gmail.com>

On 09/19/2013 10:38 PM, Mj Embd wrote:
> Hello Christoffer,
>
> I agree with both of you points.
>
> What I found different in 2 approaches is that in your approach
> S->Monitor->NS->Hyp using svc and hvc
>
> While the other approach is setting the M bits directly in cpsr
>
> Xen uses the following
>
> cpsid aif, #0x16 /* Enter Monitor Mode*/
> ....
> ...
> mrs   r0, cpsr               /* Copy the CPSR */
> add   r0, r0, #0x4           /* 0x16 (Monitor) -> 0x1a (Hyp) */
> msr   spsr_cxsf, r0          /* into the SPSR */
> movs  pc, r3                 /* Exception-return into Hyp mode */
>
> The second one is a bit simpler as it does not involve fault handlers.

The ARM ARM recommends _not_ to do this:
Read more at the ARMv7-A Architecture Reference Manual, section B1.5.1: 
Security states/Changing from Secure to Non-secure state:

"To avoid security holes, software must not:
--    Change from Secure to Non-secure state by using an MSR or CPS 
instruction to switch from Monitor mode to some other mode while SCR.NS 
is 1.
..."

>
> I was just suggesting that the best approach to be used ...

Looks like this is what we do ;-)

Regards,
Andre.

>
> On 9/20/13, Christoffer Dall <christoffer.dall@linaro.org> wrote:
>> On Fri, Sep 20, 2013 at 01:27:48AM +0530, Mj Embd wrote:
>>> two quick points
>>> (a) xen already has a mode_switch code, so AFAIK xen might not use it
>>> (as suggested by comment in another patch in this patch set)
>>
>> For KVM the boot procedure for Hyp mode is quite clearly defined: the
>> kernel must be booted in Hyp mode.
>>
>> I was under the impression that Xen wanted to use the same paradigm and
>> rely on bootloaders to switch to Hyp mode and thereby get rid of the
>> code in Xen.
>>
>>> (b) There are 2 methods of switching from Secure to Hyp mode
>>> one you have proposed another implemented in xen. I was suggesting
>>> take the best approach
>>>
>>
>> Can you please be more specific?  Not everyone here knows the Xen
>> low-level mode switch details by heart.  As far as I know, there is only
>> one architecturally defined proper mode to switch from secure mode to
>> non-secure mode, and the state that needs to be configured for Hyp-mode
>> and NS-mode is well defined.  Obviously two implementation can do things
>> differently (different order, different programminge environment, etc.)
>> but that doesn't mean one is better than the other.
>>
>> I think it would be more productive if you can simply look at this code
>> and if you think some things are done more efficiently in Xen, please
>> comment on that, which would be very helpful.  I'm afraid there's no
>> magic way to apply a block of Xen code into U-Boot wihtout manual
>> adjustment anyway, or the other way around for that matter.
>>
>> -Christoffer
>>
>
>

  reply	other threads:[~2013-09-19 21:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-19 16:06 [U-Boot] [PATCH v5 0/8] ARMv7: Add HYP mode switching support Andre Przywara
2013-09-19 16:06 ` [U-Boot] [PATCH v5 1/8] ARM: prepare armv7.h to be included from assembly source Andre Przywara
2013-09-19 16:06 ` [U-Boot] [PATCH v5 2/8] ARM: add secure monitor handler to switch to non-secure state Andre Przywara
2013-09-19 21:50   ` Mj Embd
2013-09-20  0:42     ` Christoffer Dall
2013-09-20  2:38       ` Mj Embd
2013-09-20  3:47         ` Christoffer Dall
2013-10-03  6:30   ` Albert ARIBAUD
2013-10-12  9:27   ` [U-Boot] [PATCH v5 2/8] ARM: add secure monitor handler to switchto " TigerLiu at viatech.com.cn
2013-10-12 19:50     ` Albert ARIBAUD
2013-10-14  2:14       ` TigerLiu at viatech.com.cn
2013-10-14  5:16         ` Albert ARIBAUD
2013-10-14  5:23           ` TigerLiu at viatech.com.cn
2013-09-19 16:06 ` [U-Boot] [PATCH v5 3/8] ARM: add assembly routine to switch to " Andre Przywara
2013-09-19 16:30   ` Mj Embd
2013-09-19 19:26     ` Christoffer Dall
2013-09-19 19:57       ` Mj Embd
2013-09-19 20:11         ` Christoffer Dall
2013-09-19 20:38           ` Mj Embd
2013-09-19 21:31             ` Andre Przywara [this message]
2013-09-19 21:39               ` Mj Embd
2013-09-19 21:55                 ` Mj Embd
2013-09-19 22:35                   ` Peter Maydell
2013-09-19 22:50                     ` Mj Embd
2013-09-19 23:21                       ` Peter Maydell
2013-09-19 21:28           ` Ian Campbell
2013-09-19 21:09         ` Andre Przywara
2013-09-19 21:27         ` Ian Campbell
2013-09-19 16:06 ` [U-Boot] [PATCH v5 4/8] ARM: add C function " Andre Przywara
2013-09-19 16:06 ` [U-Boot] [PATCH v5 5/8] ARM: trigger non-secure state switch during bootm execution Andre Przywara
2013-09-19 16:06 ` [U-Boot] [PATCH v5 6/8] ARM: add SMP support for non-secure switch Andre Przywara
2013-09-19 16:06 ` [U-Boot] [PATCH v5 7/8] ARM: extend non-secure switch to also go into HYP mode Andre Przywara
2013-10-03  6:24   ` Albert ARIBAUD
2013-10-03 18:55     ` Christoffer Dall
2013-10-03 19:14       ` Albert ARIBAUD
2013-09-19 16:06 ` [U-Boot] [PATCH v5 8/8] ARM: VExpress: enable ARMv7 virt support for VExpress A15 Andre Przywara
2013-10-03 19:31 ` [U-Boot] [PATCH v5 0/8] ARMv7: Add HYP mode switching support Albert ARIBAUD

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=523B6D29.9020505@linaro.org \
    --to=andre.przywara@linaro.org \
    --cc=u-boot@lists.denx.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.