public inbox for u-boot@lists.denx.de
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox