All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@eu.citrix.com>
To: Dario Faggioli <dario.faggioli@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Juergen Gross <juergen.gross@ts.fujitsu.com>,
	David Vrabel <david.vrabel@citrix.com>,
	xen-devel@lists.xen.org
Subject: Re: [PATCH] sched: fix race between sched_move_domain() and vcpu_wake()
Date: Fri, 11 Oct 2013 12:32:43 +0100	[thread overview]
Message-ID: <5257E1DB.8070002@eu.citrix.com> (raw)
In-Reply-To: <1381490132.5006.33.camel@Abyss.lan>

On 11/10/13 12:15, Dario Faggioli wrote:
> On ven, 2013-10-11 at 11:32 +0100, George Dunlap wrote:
>> So going through the code and trying to reconstruct all the state in my
>> head...
>>
>> If you look at vcpu_migrate(), it grabs both locks.  But it looks like
>> the main purpose for that is so that we can call the migrate SCHED_OP(),
>> which for credit2 needs to do some mucking about with runqueues, and
>> thus needs both locks.
>>
> Just to make sure I understood what's going on, the SCHED_OP you're
> referring is SCHED_OP(..,migrate,..) here, right?
>
>> In the case of move_domain, this is unnecessary,
>> since it is removed from the old scheduler and then added to the new one.
>>
> I think that too, and that's why I wouldn't take both locks: it'd
> actually be misleading rather than enlightening for people reading the
> code, at least that's how I see it.
>
> Perhaps, we can put a comment somewhere (as George is also saying).
>
> Regarding the patch, I personally like Jan's idea.
>
>> But I think this patch is still not quite right: both v->processor and
>> per_cpu(schedule_data, ...).schedule_lock may change under your feet; so
>> you always need to do the lock in a loop, checking to make sure that you
>> *still* have the right lock after you have actually grabbed it.
>>
> Which, if I'm not mistaken, we sort of get for free it we go Jan's way,
> don't we?

You mean, we could just call vcpu_schedule_lock..() instead of writing a 
bespoke loop code?  Sure, that's definitely an advantage.

  -George

  reply	other threads:[~2013-10-11 11:32 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-10 17:29 [PATCH] sched: fix race between sched_move_domain() and vcpu_wake() David Vrabel
2013-10-10 18:01 ` Andrew Cooper
2013-10-10 18:27   ` Keir Fraser
2013-10-11  7:12     ` Jan Beulich
2013-10-11  8:07       ` Keir Fraser
2013-10-11  9:02         ` Andrew Cooper
2013-10-11  9:32           ` Jan Beulich
2013-10-11  9:36             ` David Vrabel
2013-10-11  9:37               ` Jan Beulich
2013-10-11 12:20             ` Jan Beulich
2013-10-11 14:39               ` George Dunlap
2013-10-11 14:45               ` George Dunlap
2013-10-11 15:00                 ` Processed: " xen
2013-10-11 10:36       ` George Dunlap
2013-10-11  6:37 ` Juergen Gross
2013-10-11 10:32 ` George Dunlap
2013-10-11 11:15   ` Dario Faggioli
2013-10-11 11:32     ` George Dunlap [this message]
2013-10-11 11:49       ` Dario Faggioli
2013-10-11 12:03         ` Jan Beulich
2013-10-11 11:47 ` Keir Fraser

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=5257E1DB.8070002@eu.citrix.com \
    --to=george.dunlap@eu.citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=dario.faggioli@citrix.com \
    --cc=david.vrabel@citrix.com \
    --cc=juergen.gross@ts.fujitsu.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.