From: Dario Faggioli <dario.faggioli@citrix.com>
To: "Wu, Feng" <feng.wu@intel.com>, Jan Beulich <JBeulich@suse.com>
Cc: "george.dunlap@eu.citrix.com" <george.dunlap@eu.citrix.com>,
"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
"keir@xen.org" <keir@xen.org>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 0/3] VMX: Properly handle pi descriptor and per-cpu blocking list
Date: Thu, 23 Jun 2016 17:11:43 +0200 [thread overview]
Message-ID: <1466694703.18398.69.camel@citrix.com> (raw)
In-Reply-To: <E959C4978C3B6342920538CF579893F01972CB75@SHSMSX103.ccr.corp.intel.com>
[-- Attachment #1.1: Type: text/plain, Size: 2577 bytes --]
On Thu, 2016-06-23 at 12:33 +0000, Wu, Feng wrote:
> > -----Original Message-----
> > From: Dario Faggioli [mailto:dario.faggioli@citrix.com]
> >
> > It goes through all the vcpus of all domains, and does not check or
> > care whether they are running, runnable or blocked.
> >
> > Let's look at this in some more details. So, let's assume that
> > processor 5 is going away, and that you have the following vcpus
> > around:
> >
> > d0v0 : v->processor = 5, running on cpu 5
> > d0v1 : v->processor = 4, running on cpu 4
> > d1v0 : v->processor = 5, runnable but not running
> > d2v3 : v->processor = 5, blocked
> >
> > for d0v0, we do:
> > cpu_disable_scheduler(5)
> > set_bit(_VPF_migrating, d0v0->pause_flags);
> > vcpu_sleep_nosync(d0v0);
> > SCHED_OP(sleep, d0v0);
> > csched_vcpu_sleep(d0v0)
> > cpu_raise_softirq(5, SCHEDULE_SOFTIRQ);
> > vcpu_migrate(d0v0);
> > if ( v->is_running || ...) // assume v->is_running is true
> > return
> Hi Dario, after read this mail again, I get another question,
> could you please help me out?
>
> In the above code flow, we return in vcpu_migrate(d0v0) because
> v->is_running == 1, after vcpu_migrate() return, we check:
>
> if ( v->processor == cpu )
> ret = -EAGAIN;
>
> In my understand in the above case, 'v->processor' is likely equal to
> 'cpu', hence return -EAGAIN. However, in __cpu_disable(), there is
> some check as below:
>
> if ( cpu_disable_scheduler(cpu) )
> BUG();
>
Right. But, as the comment inside cpu_disable_scheduler() itself says,
we only return -EAGAIN in case we are calling cpu_disable_scheduler for
removing a pCPU from a cpupool.
In that case, we do not use __cpu_disable(), and hence we can safely
return an error value. In that case, in fact, the caller of
cpu_disable_scheduler() is cpupool_unassign_cpu_helprer(), which does
what's necessary to deal with such error.
> Might we hit the BUG() in the above case?
>
No, because we call cpu_disable_scheduler() from __cpu_disable(), only
when system state is SYS_STATE_suspend already, and hence we take the
then branch of the 'if', which does never return an error.
Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-06-23 15:11 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-20 8:53 [PATCH 0/3] VMX: Properly handle pi descriptor and per-cpu blocking list Feng Wu
2016-05-20 8:53 ` [PATCH 1/3] VMX: Properly adjuest the status of pi descriptor Feng Wu
2016-05-23 5:15 ` Tian, Kevin
2016-05-23 5:27 ` Wu, Feng
2016-05-23 6:52 ` Tian, Kevin
2016-05-23 7:16 ` Wu, Feng
2016-05-23 9:03 ` Jan Beulich
2016-05-23 9:21 ` Wu, Feng
2016-05-23 11:04 ` Jan Beulich
2016-05-23 12:30 ` Jan Beulich
2016-05-20 8:53 ` [PATCH 2/3] VMX: Make hook pi_do_resume always available Feng Wu
2016-05-23 12:32 ` Jan Beulich
2016-05-23 12:51 ` Dario Faggioli
2016-05-20 8:53 ` [PATCH 3/3] VMX: Remove the vcpu from the per-cpu blocking list after domain termination Feng Wu
2016-05-23 5:19 ` Tian, Kevin
2016-05-23 5:48 ` Wu, Feng
2016-05-23 6:54 ` Tian, Kevin
2016-05-23 9:08 ` Jan Beulich
2016-05-23 9:17 ` Wu, Feng
2016-05-23 10:35 ` Wu, Feng
2016-05-23 11:11 ` Jan Beulich
2016-05-23 12:24 ` Wu, Feng
2016-05-23 12:46 ` Jan Beulich
2016-05-23 13:41 ` Wu, Feng
2016-05-23 12:30 ` Dario Faggioli
2016-05-23 13:32 ` Wu, Feng
2016-05-23 14:45 ` Dario Faggioli
2016-05-23 12:35 ` Jan Beulich
2016-05-23 13:33 ` Wu, Feng
2016-05-20 10:27 ` [PATCH 0/3] VMX: Properly handle pi descriptor and per-cpu blocking list Jan Beulich
2016-05-20 10:46 ` Wu, Feng
2016-05-23 8:08 ` Jan Beulich
2016-05-23 8:44 ` Wu, Feng
2016-05-23 8:51 ` Jan Beulich
2016-05-23 12:39 ` Dario Faggioli
2016-05-24 10:07 ` Wu, Feng
2016-05-24 13:33 ` Wu, Feng
2016-05-24 14:46 ` Dario Faggioli
2016-05-25 13:28 ` Wu, Feng
2016-05-24 14:02 ` Dario Faggioli
2016-05-25 12:39 ` Wu, Feng
2016-06-23 12:33 ` Wu, Feng
2016-06-23 15:11 ` Dario Faggioli [this message]
2016-06-24 6:11 ` Wu, Feng
2016-06-24 7:22 ` Dario Faggioli
2016-06-24 7:59 ` Wu, Feng
2016-06-24 10:27 ` Dario Faggioli
2016-06-24 13:25 ` Wu, Feng
2016-06-24 23:43 ` Dario Faggioli
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=1466694703.18398.69.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=feng.wu@intel.com \
--cc=george.dunlap@eu.citrix.com \
--cc=keir@xen.org \
--cc=kevin.tian@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).