All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@citrix.com>
To: Volodymyr Babchuk <vlad.babchuk@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Andrii Anisov <andrii_anisov@epam.com>, Tim Deegan <tim@xen.org>,
	Dario Faggioli <dario.faggioli@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Xen Devel <xen-devel@lists.xen.org>,
	Julien Grall <julien.grall@arm.com>,
	Jan Beulich <JBeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Artem Mygaiev <joculator@gmail.com>
Subject: Re: [ARM] Native application design and discussion (I hope)
Date: Mon, 15 May 2017 13:51:55 +0100	[thread overview]
Message-ID: <CAFLBxZY1bTqeeHZY2D+qyyGN-mMUEHZSe=VH0KZzhd7YzKGLDQ@mail.gmail.com> (raw)
In-Reply-To: <CAOcqxo2UN7qgKRx14xVqAvpQHYsSjiXcOE3hRDOwQaVxOE0DGg@mail.gmail.com>

On Fri, May 12, 2017 at 7:47 PM, Volodymyr Babchuk
<vlad.babchuk@gmail.com> wrote:
>> Regarding modules (#3): The problem that loadable modules were
>> primarily introduced to solve in Linux wasn't "How to deal with
>> proprietary drivers", or even "how to deal with out-of-tree drivers".
>> The problem was, "How to we allow software providers to 1) have a
>> single kernel binary, which 2) has drivers for all the different
>> systems on which it needs to run, but 3) not take a massive amount of
>> memory or space on systems, given that any given system will not need
>> the vast majority of drivers?"
>>
>> Suppose hypothetically that we decided that the mediators you describe
>> need to run in the hypervisor.  As long as Kconfig is sufficient for
>> people to enable or disable what they need to make a functional and
>> efficient system, then there's no need to introduce modules.  If we
>> reached a point where people wanted a single binary that could do
>> either or OP-TEE mediator or the Google mediator, or both, or neither,
>> but didn't to include all of them in the core binary (perhaps because
>> of memory constraints), then loadable modules would be a good solution
>> to consider.  But either way, if we decided they should run in the
>> hypervisor, then all things being equal it would still be better to
>> have both implementations in-tree.
>>
>> There are a couple of reasons for the push-back on loadable modules.
>> The first is the extra complication and infrastructure it adds.  But
>> the second is that people have a strong temptation to use them for
>> out-of-tree and proprietary code, both of which we'd like to avoid if
>> possible.  If there comes a point in time where loadable modules are
>> the only reasonable solution to the problem, I will support having
>> them; but until that time I will look for other solutions if I can.
>>
>> Does that make sense?
> Yes, thank you. Legal questions is not my best side. Looks like I was
> too quick, when proposed modules as a solution to our needs. Sorry, I
> had to investigate this topic further before talking about it.
>
> So, let's get back to native apps. We had internal discussion about
> possible use cases and want to share our conclusions.
>
> 1. Emulators. As Stefano pointed, this is ideal use case for small,
> fast native apps that are accounted in a calling vcpu time slice.
>
> 2. Virtual coprocessor backend/driver. The part that does actual job:
> makes coprocessor to save or restore context. It is also small,
> straightforward app, but it should have access to a real HW.
>
> 3. TEE mediators. They need so much privileges, so there actually are
> no sense in putting them into native apps. For example, to work
> properly OP-TEE mediator needs to: pin guest pages, map guest pages to
> perform IPA->MPA translation, send vIRQs to guests, issue real SMCs.

As I think I've said elsewhere, apart from "issue real SMCs", all of
that functionality is already available to device models running in
domain 0, in the sense that there are interfaces which cause Xen to
make those things happen: when the devicemodel maps a page, that
increases the refcount and effectively pins it; the devicemodel
accesses *all* guest pages in terms of guest memory addresses, but (I
believe) can ask Xen for a p->m translation of a particular page in
memory; and it can set vIRQs pending to the guest.  It seems likely
that a suitable hypervisor interface could be made to expose SMC
functionality to device models as well.

(Unless I've misunderstood something somewhere.)

Running it outside of dom0 could potentially be a security advantage
if you don't want to trust dom0 100%.

 -George

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

  reply	other threads:[~2017-05-15 12:51 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-12 18:47 [ARM] Native application design and discussion (I hope) Volodymyr Babchuk
2017-05-15 12:51 ` George Dunlap [this message]
2017-05-15 17:35   ` Stefano Stabellini
2017-05-15 13:54 ` Andrii Anisov
  -- strict thread matches above, loose matches on Subject: below --
2017-04-06 20:21 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-05 11:09                       ` 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
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

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='CAFLBxZY1bTqeeHZY2D+qyyGN-mMUEHZSe=VH0KZzhd7YzKGLDQ@mail.gmail.com' \
    --to=george.dunlap@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=andrii_anisov@epam.com \
    --cc=dario.faggioli@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=joculator@gmail.com \
    --cc=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=tim@xen.org \
    --cc=vlad.babchuk@gmail.com \
    --cc=wei.liu2@citrix.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.