[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] Fix scheduler crash after s3 resume


  • To: Jan Beulich <JBeulich@xxxxxxxx>
  • From: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
  • Date: Fri, 25 Jan 2013 11:23:40 +0100
  • Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>, Tomasz Wroblewski <tomasz.wroblewski@xxxxxxxxxx>, "Keir \(Xen.org\)" <keir@xxxxxxx>, "xen-devel@xxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxx>
  • Delivery-date: Fri, 25 Jan 2013 10:23:59 +0000
  • Domainkey-signature: s=s1536a; d=ts.fujitsu.com; c=nofws; q=dns; h=X-SBRSScore:X-IronPort-AV:Received:X-IronPort-AV: Received:Received:Message-ID:Date:From:Organization: User-Agent:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type:Content-Transfer-Encoding; b=lMXFiYgRBNkwWZZFABfD2+WCwMuw2QP/fBZglA2UqztcC1v+dSXASbSc Bw6IH/U74War0RYrgOAnhGZRglzVN6bdLM8gF0DRf1kXdQVu7aO2Xm13V txEBTPgAt/Rh5kDklx9a91wn9HsFwOnuOWZu+Kcr8AfgM0pw/x8+Y5pmU vhlhSqQmT/G5Bfa1998Shks4YQdPpv2PVoU019sKYiVWGNJ4vBZMXA+Vm tfdFARESRiqErFpJkHI6y7v8xkywc;
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

Am 25.01.2013 11:15, schrieb Jan Beulich:
On 25.01.13 at 10:45, Tomasz Wroblewski<tomasz.wroblewski@xxxxxxxxxx>  wrote:

I think I had already raised the question of the placement of
this rcu_barrier() here, and the lack of a counterpart in the
suspend portion of the path. Keir? Or should
rcu_barrier_action() avoid calling process_pending_softirqs()
while still resuming, and instead call __do_softirq() with all but
RCU_SOFTIRQ masked (perhaps through a suitable wrapper,
or alternatively by open-coding its effect)?

Though I recall these vcpu_wake crashes happen also from other entry
points in enter_state but rcu_barrier, so I dont think removing that
helps much. Just was unable to get a proper log of them today due to
most of them being cut in half. Will try bit more.

In which case making __do_softirq() itself honor being in the
suspend/resume path might still be an option.

My belief is that as long as vcpu_migrate is not called in
cpu_disable_scheduler, the vcpu->processor shall continue to point to
offline cpu. Which will crash if the vcpu_wake is called for that vcpu.
If vcpu_migrate is called, then vcpu_wake will still be called with some
frequency but since vcpu->processor shall point to online cpu, and it
won't crash. So likely avoiding the wakes here completely is not the
goal, just the offline ones.

But you neglect the fact that waking vCPU-s at this point is
unnecessary anyway (they have nowhere to run on).

What about adding a global scheduler_disable() in freeze_domains() and a scheduler_enable() in thaw_domains() which will switch scheduler locking to
a global lock (or disable it at all?). This should solve all problems without
any complex changes of current behavior.


Juergen

--
Juergen Gross                 Principal Developer Operating Systems
PBG PDG ES&S SWE OS6                   Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions              e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28                           Internet: ts.fujitsu.com
D-80807 Muenchen                 Company details: ts.fujitsu.com/imprint.html

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.