All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Volodymyr Babchuk <vlad.babchuk@gmail.com>
Cc: Dario Faggioli <dario.faggioli@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	george.dunlap@citrix.com, Artem Mygaiev <joculator@gmail.com>,
	Xen Devel <xen-devel@lists.xen.org>
Subject: Re: [ARM] Native application design and discussion (I hope)
Date: Mon, 24 Apr 2017 12:00:09 +0100	[thread overview]
Message-ID: <ab4aa296-99ad-2fa5-c0ea-78636fa65b29@arm.com> (raw)
In-Reply-To: <CAOcqxo28JWt3A=ZM3B-WDCMo9eXnEgM48UowdHRX1=gQY+YhNw@mail.gmail.com>



On 21/04/17 19:35, Volodymyr Babchuk wrote:
> Hi Julien,

Hi Volodymyr,


> On 21 April 2017 at 20:38, Julien Grall <julien.grall@arm.com> wrote:
>>> 3. Some degree of protection. Bug in EL0 handler will not bring down
>>> whole hypervisor.
>> If you have a single app handling all the domains using SMC, then you will
>> bring down all thoses domains. I agree it does not take down the hypervisor,
>> but it will render unusable a part of the platform.
> This will bring down TEE interface, right. Domains will lose ability
> to communicate
> with TEE, but other functionality will remain intact.

I don't think so. SMC are synchronous, so if a vCPU do an SMC call it 
will block until the handler has finished.

So if the EL0 app crash, then you will render the vCPU unusable. I guess 
this could be fixed by a timeout, but how do define the timeout? And 
then, you may have some state store in the EL0 app, they will be lost if 
the app crash. So how do you restore the state?

>
>> In this case, how do you plan to restore the services?
> The obvious solution is to reboot the whole platform. It will be more
> controlled process, than hypervisor crash.
> But there are more soft ways.
>
> For example, SMC app can be restarted. Then, I am almost sure that I
> can ask OP-TEE to abort all opened sessions. After that, requests from
> a new domains can be processed as usual, but we can't rely on state of
> old domains, so they should be gracefully restarted. There will be
> problem with dom0/domD, though.

What is domD? I guess you mean Driver Domain. If so, the goal of using 
driving domain is to restart it easily if a driver crash.

>
>> Also, a bug in the EL0 handler may give the opportunity, in your use case,
>> to get access to the firmware or data from another guest. How this will
>> bring more protection?
> On other hand, bug in EL2 handler will give access to whole supervisor.
>
>> If you handle only one guest per app, then it is very easy to kill that app
>> and domain. It will only harm itself.
> Yes, I agree. It is great for emulators (and can be used it this
> case). But, unfortunately, TEE handler needs shared state. I can't see
> how to implement OP-TEE handler without shared knowledge about wait
> queues in all guests.
>
> It just came to me that it can be possible to move most of this stuff
> to OP-TEE. Can S-EL1 request two stage table walk for a given guest?
> We can do this in software, anyways. Probably I can minimize TEE
> handler it hypervisor, make it almost generic. Need to think more
> about this...

I am not sure how S-EL1 could request stage-2 table walk, the SMC may be 
handled on a different pCPU than the guest vCPU or even the guest vCPU 
may have been descheduled whilst waiting the answer.

I think you still need the hypervisor to do the translation IPA -> PA 
for your guest and also potential bounce buffer if the guest buffer span 
across multiple pages. You will also need the hypervisor to do basic 
sanity check such as for preventing to the buffer to live in a foreign 
mapping and making sure the page does not disappear under your feet 
(likely via incrementing the refcount on the page) when handling the SMC.

Cheers,
-- 
Julien Grall

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

  reply	other threads:[~2017-04-24 11:00 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 [this message]
2017-04-24 21:29                             ` Volodymyr Babchuk
2017-04-21 21:24                         ` Stefano Stabellini
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=ab4aa296-99ad-2fa5-c0ea-78636fa65b29@arm.com \
    --to=julien.grall@arm.com \
    --cc=dario.faggioli@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=joculator@gmail.com \
    --cc=sstabellini@kernel.org \
    --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.