All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Dario Faggioli <dario.faggioli@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Andrii Anisov <andrii_anisov@epam.com>
Cc: Volodymyr Babchuk <vlad.babchuk@gmail.com>,
	Artem Mygaiev <joculator@gmail.com>,
	george.dunlap@citrix.com, Xen Devel <xen-devel@lists.xen.org>
Subject: Re: [ARM] Native application design and discussion (I hope)
Date: Tue, 9 May 2017 12:19:47 +0100	[thread overview]
Message-ID: <91004d51-4f9a-eaaa-7d5e-2099bce27940@arm.com> (raw)
In-Reply-To: <1494328112.9501.9.camel@citrix.com>



On 05/09/2017 12:08 PM, Dario Faggioli wrote:
> On Tue, 2017-05-09 at 11:32 +0100, Julien Grall wrote:
>> Hi Dario,
>>
> Hey,
>
>> On 05/09/2017 11:13 AM, Dario Faggioli wrote:
>>>
>>> Which, FTR, is what we do in Xen for a bunch of things already,
>>> i.e.,
>>> softirqs and tasklets.
>>
>> No, we don't switch to the idle vCPU to handle tasklets or softirqs.
>> They will be done before entering to the guest and still in the
>> hypervisor context.
>>
> Mmm... I don't know who's "we" here, but even if it's "you ARM people",
> you actually do.
>
> In fact, this is common code:
>
> static struct task_slice
> csched_schedule(
>     const struct scheduler *ops, s_time_t now, bool_t tasklet_work_scheduled)
> {
>     [...]
>     /* Choices, choices:
>      * - If we have a tasklet, we need to run the idle vcpu no matter what.
>     [...]
>     /* Tasklet work (which runs in idle VCPU context) overrides all else. */
>     if ( tasklet_work_scheduled )
>     {
>         TRACE_0D(TRC_CSCHED_SCHED_TASKLET);
>         snext = CSCHED_VCPU(idle_vcpu[cpu]);
>         snext->pri = CSCHED_PRI_TS_BOOST;
>     }
>     [...]
> }
>
> And this is "your" idle loop:
>
> void idle_loop(void)
> {
>     for ( ; ; )
>     {
>         [...]
>         local_irq_disable();
>         if ( cpu_is_haltable(smp_processor_id()) )
>         {
>             dsb(sy);
>             wfi();
>         }
>         local_irq_enable();
>         do_tasklet();
>         do_softirq();
>         [...]
>     }
> }
> Actually, yes, it was a bit inaccurate of me to cite both softirqs and
> tasklets, together, like I did. Softirqs indeed are checked and handled
> before leaving Xen, as you say, as well as, in the idle loop, as shown
> above.
>
> But for tasklet (and, to be 100% precise, for vCPU context tasklet),
> it's actually the case that we force the idle vCPU in execution to run
> them.

I am a bit confused. When I read the softirq code, I saw there is a 
softirq tasklet which call do_tasklet_work.

But it sounds like that tasklet can be either scheduled in softirq or in 
idle vCPU depending of the type of the tasklet (is_softirq).

Thank you for the explanation :).

>
>>> And it should not be hard to give such code access to the context
>>> of
>>> the vCPU that was previously running (in x86, given we implement
>>> what
>>> we call lazy context switch, it's most likely still loaded in the
>>> pCPU!).
>>
>> I agree with Stefano, switching to the idle vCPU is a pretty bad
>> idea.
>>
>> the idle vCPU is a fake vCPU on ARM to stick with the common code
>> (we
>> never leave the hypervisor). In the case of the EL0 app, we want to
>> change exception level to run the code with lower privilege.
>>
>> Also IHMO, it should only be used when there are nothing to run and
>> not
>> re-purposed for running EL0 app.
>>
> It's already purposed for running when there is nothing to do _or_ when
> there are tasklets.
>
> I do see your point about privilege level, though. And I agree with
> George that it looks very similar to when, in the x86 world, we tried
> to put the infra together for switching to Ring3 to run some pieces of
> Xen code.

We would like to do exactly the same for ARM. On another part of the 
thread I suggested to Volodymyr to look at what has been done there.

Cheers,

-- 
Julien Grall

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

  reply	other threads:[~2017-05-09 11:19 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 [this message]
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
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=91004d51-4f9a-eaaa-7d5e-2099bce27940@arm.com \
    --to=julien.grall@arm.com \
    --cc=andrii_anisov@epam.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.