All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Stabellini <sstabellini@kernel.org>
To: Julien Grall <julien.grall@arm.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <vlad.babchuk@gmail.com>,
	Dario Faggioli <dario.faggioli@citrix.com>,
	george.dunlap@citrix.com, Xen Devel <xen-devel@lists.xen.org>,
	Artem Mygaiev <joculator@gmail.com>
Subject: Re: [ARM] Native application design and discussion (I hope)
Date: Fri, 21 Apr 2017 14:24:05 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.10.1704211403080.19860@sstabellini-ThinkPad-X260> (raw)
In-Reply-To: <86048bd2-ed7e-8783-75e4-1624451a0795@arm.com>

On Fri, 21 Apr 2017, Julien Grall wrote:
> Hi Volodymyr,
> 
> On 21/04/17 18:04, Volodymyr Babchuk wrote:
> > On 21 April 2017 at 19:47, Julien Grall <julien.grall@arm.com> wrote:
> > > On 21/04/17 17:16, Volodymyr Babchuk wrote:
> > > > On 21 April 2017 at 18:57, Julien Grall <julien.grall@arm.com> wrote:
> > > > > 
> > > > > Hello Volodymyr,
> > > > > 
> > > > > On 20/04/17 21:20, Volodymyr Babchuk wrote:
> > > > > > 
> > > > > > 
> > > > > > On 12 April 2017 at 22:17, Stefano Stabellini
> > > > > > <sstabellini@kernel.org>
> > > > > > wrote:
> > > > > > > 
> > > > > > > 
> > > > > > > On Wed, 12 Apr 2017, Dario Faggioli wrote:
> > > > > > > > 
> > > > > > > > 
> > > > > > > > On Tue, 2017-04-11 at 13:32 -0700, Stefano Stabellini wrote:
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > On Fri, 7 Apr 2017, Stefano Stabellini wrote:
> > > > > > > 
> > > > > > > 
> > > > > > > We would have one app per emulator. Each app would register an
> > > > > > > MMIO
> > > > > > > range or instruction set to emulate. On a guest trap, Xen figures
> > > > > > > out
> > > > > > > which app it needs to run.
> > > > > > 
> > > > > > 
> > > > > > I't is not best approach, I think. For example we need one SMC
> > > > > > handler
> > > > > > for
> > > > > > all domains. Because that SMC handler should track execution state
> > > > > > of
> > > > > > different
> > > > > > guests to help TEE with scheduling. You know, TEE can't block in
> > > > > > secure
> > > > > > state,
> > > > > > so it returns back and blocks in kernel driver. SMC handler need to
> > > > > > know
> > > > > > which guest it needs to wake up when times comes.
> > > > > > 
> > > > > > The same story with virtual coprocessors, I think.
> > > > > > 
> > > > > > On other hand, MMIO handler can be one per domain. So, it should be
> > > > > > configurable. Or, maybe we need per-app MMIO handler and one global
> > > > > > SMC
> > > > > > handler.
> > > > > > Perhaps, we need to think about all possible use cases.
> > > > > 
> > > > > 
> > > > > 
> > > > > Could you explain what would be the benefits to run this global SMC
> > > > > handler
> > > > > in EL0?
> > > > > 
> > > > > After all, it will require access to the host SMC. So what will you
> > > > > protect
> > > > > against?
> > > > 
> > > > Yes, it will require access to host SMC. Idea is not to protect (but,
> > > > it can protect also).
> > > > I want to allow different guests to work with one TEE. Imagine that
> > > > multiple guests need
> > > > protected storage, accelerated cryptography or other TEE services.
> > > > All SMCs will be trapped to app, app will alter(or block) request and
> > > > forward it to TEE. This is the most basic use case, which we want to
> > > > implement.
> > > 
> > > 
> > > I am sorry, but I don't understand it. I envision EL0 as a way to limit
> > > the
> > > attack vector to Xen and the host. If you give full access to SMC, then
> > > you
> > > cannot protect.
> > In any case it will limit the attack surface. Filtered SMC request is
> > not as destructive as
> > arbitrary SMC from a guest.
> 
> I agree with that. But why in EL0? I think you answer partly below.
> 
> > 
> > > If the idea is not to protect, why do you want to move the code in EL0?
> > > What
> > > is the point to add an overhead (even if it is small) in this case?
> > There are many reasons:
> > 1. Community is reluctant to add OP-TEE (or any other TEE) handler
> > right into hypervisor codebase.
> 
> Well, I think I was the only one to be reluctant. And I asked you to look at
> different solutions and come up with suggestion are saying why you solution is
> better.
> 
> Whilst I agree that EL0 app is a solution for a lot of emulation. We should be
> careful before moving code to EL0 and evaluating the impact. I am expecting to
> see the interface very small and the application to be standalone (e.g not
> requiring much interaction with Xen or the host hardware).

I also had this understanding


> But you seem to have a different view (see your e-mail with:
> "Probably, we can try another approach: allow application to register
> hooks in hypervisor: i.e. hook on MMIO, hook on SMC, hook on timer and
> so on.").
> 
> If you introduce EL0 but require a big interface, then I believe you don't
> limit the surface attack.

Also, it is difficult to maintain a large EL0-Xen interface.

The idea is basically to register an MMIO range to emulate, submit the
request to the EL0 app, which would take care of the emulation. The
interface with Xen would be mostly limited to map/unmap guest memory
(only the guest it is servicing) and send interrupts to the guest. It
would always and only be run immediately after the guest vcpu in its own
time slot.

The key is to be simple. If it becomes complex, then we are reinventing
stubdoms.

If the workload needs hardware access, periodical scheduling and it's
only once instance for all domains, then it's probably better as a
stubdom.

If the workloads doesn't need hardware access, it's one instance per
domain, at most it needs to register a timer with Xen, then it would be
fine as EL0 app. For the EL0 app framework, I'll start from there.


For example, I can see that something as complex as TEE emulation could
have one component running as an EL0 app and another component in a
stubdom, coexisting peacefully.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  parent reply	other threads:[~2017-04-21 21:24 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-06 20:21 [ARM] Native application design and discussion (I hope) Volodymyr Babchuk
2017-04-06 21:31 ` Stefano Stabellini
2017-04-07 11:03   ` Volodymyr Babchuk
2017-04-07 23:36     ` Stefano Stabellini
2017-04-11 20:32       ` Stefano Stabellini
2017-04-12 18:13         ` Dario Faggioli
2017-04-12 19:17           ` Stefano Stabellini
2017-04-20 20:20             ` Volodymyr Babchuk
2017-04-21 14:42               ` Andrii Anisov
2017-04-21 15:49                 ` Julien Grall
2017-04-21 16:08                   ` Volodymyr Babchuk
2017-04-21 16:20                   ` Andrii Anisov
2017-04-21 20:58                 ` Stefano Stabellini
2017-04-21 21:17                   ` Stefano Stabellini
2017-04-24 16:56                   ` Andrii Anisov
2017-04-24 18:08                     ` Stefano Stabellini
2017-04-25 10:15                       ` Andrii Anisov
2017-05-05 10:51                       ` Andrii Anisov
2017-05-05 19:28                         ` Stefano Stabellini
2017-05-08 10:46                           ` George Dunlap
2017-05-08 18:31                             ` Stefano Stabellini
2017-05-08 18:33                               ` Julien Grall
2017-05-09  8:53                               ` George Dunlap
2017-05-10 16:38                                 ` Andrii Anisov
2017-05-09 10:13                           ` Dario Faggioli
2017-05-09 10:32                             ` Julien Grall
2017-05-09 11:08                               ` Dario Faggioli
2017-05-09 11:19                                 ` Julien Grall
2017-05-09 18:29                                 ` Stefano Stabellini
2017-05-10  9:56                                   ` George Dunlap
2017-05-10 10:00                                     ` Julien Grall
2017-05-10 10:03                                       ` George Dunlap
2017-05-10 10:48                                         ` Julien Grall
2017-05-10 17:37                                           ` Volodymyr Babchuk
2017-05-10 18:05                                             ` Stefano Stabellini
2017-05-10 19:04                                             ` Julien Grall
2017-05-11 10:07                                               ` Julien Grall
2017-05-11 11:28                                                 ` Volodymyr Babchuk
2017-05-10 18:08                                     ` Andrii Anisov
2017-05-10 18:24                                       ` Stefano Stabellini
2017-05-11 15:19                                         ` Volodymyr Babchuk
2017-05-11 15:35                                           ` Modules support in Xen (WAS: Re: [ARM] Native application design and discussion (I hope)) Julien Grall
2017-05-11 16:35                                             ` George Dunlap
2017-05-11 17:14                                               ` Volodymyr Babchuk
2017-05-11 17:20                                                 ` George Dunlap
2017-05-11 17:53                                                   ` Lars Kurth
2017-05-11 17:14                                             ` George Dunlap
2017-05-11 17:16                                               ` George Dunlap
2017-05-11 18:13                                               ` Volodymyr Babchuk
2017-05-12 11:48                                                 ` George Dunlap
2017-05-12 18:43                                                   ` Stefano Stabellini
2017-05-12 19:04                                                     ` Volodymyr Babchuk
2017-05-15 11:21                                                       ` George Dunlap
2017-05-15 17:32                                                         ` Stefano Stabellini
2017-05-11 18:04                                             ` Stefano Stabellini
2017-05-11 18:39                                               ` Volodymyr Babchuk
2017-05-05 11:09                       ` [ARM] Native application design and discussion (I hope) Andrii Anisov
2017-04-24 19:11                     ` Julien Grall
2017-04-24 21:41                       ` Volodymyr Babchuk
2017-04-25 11:43                         ` Julien Grall
2017-04-26 21:44                           ` Volodymyr Babchuk
2017-04-27 17:26                             ` Volodymyr Babchuk
2017-05-02 12:52                               ` Julien Grall
2017-05-02 12:42                             ` Julien Grall
2017-04-25  8:52                       ` Andrii Anisov
2017-04-21 15:57               ` Julien Grall
2017-04-21 16:16                 ` Volodymyr Babchuk
2017-04-21 16:47                   ` Julien Grall
2017-04-21 17:04                     ` Volodymyr Babchuk
2017-04-21 17:38                       ` Julien Grall
2017-04-21 18:35                         ` Volodymyr Babchuk
2017-04-24 11:00                           ` Julien Grall
2017-04-24 21:29                             ` Volodymyr Babchuk
2017-04-21 21:24                         ` Stefano Stabellini [this message]
2017-04-24 16:14                           ` Andrii Anisov
2017-04-24 16:46                           ` Andrii Anisov
2017-04-27 15:25                           ` George Dunlap
2017-05-02 12:45                             ` Julien Grall
2017-05-12 18:47 Volodymyr Babchuk
2017-05-15 12:51 ` George Dunlap
2017-05-15 17:35   ` Stefano Stabellini
2017-05-15 13:54 ` Andrii Anisov

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=alpine.DEB.2.10.1704211403080.19860@sstabellini-ThinkPad-X260 \
    --to=sstabellini@kernel.org \
    --cc=dario.faggioli@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=joculator@gmail.com \
    --cc=julien.grall@arm.com \
    --cc=vlad.babchuk@gmail.com \
    --cc=xen-devel@lists.xen.org \
    /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.