From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [RFC] x86/watchdog: Always disable watchdog before console_force_unlock() Date: Mon, 12 Aug 2013 10:35:04 +0100 Message-ID: <5208AC48.5000901@citrix.com> References: <1376083028-13429-1-git-send-email-andrew.cooper3@citrix.com> <5208BE0A02000078000EB0AA@nat28.tlf.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1V8oWq-0000KS-F4 for xen-devel@lists.xenproject.org; Mon, 12 Aug 2013 09:35:08 +0000 In-Reply-To: <5208BE0A02000078000EB0AA@nat28.tlf.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: xen-devel , Keir Fraser , Tim Deegan List-Id: xen-devel@lists.xenproject.org On 12/08/13 09:50, Jan Beulich wrote: >>>> On 09.08.13 at 23:17, Andrew Cooper wrote: >> Depending on the state of the conring and serial_tx_buffer, >> console_force_unlock() can be a long running operation, usually because of >> serial_start_sync() >> >> XenServer testing has found a reliable case where console_force_unlock() on >> one PCPU takes long enough for another PCPU to timeout due to the watchdog >> (such as waiting for a tlb flush callin). >> >> The watchdog timeout causes the second PCPU to repeat the >> console_force_unlock(), at which point the first PCPU typically fails an >> assertion in spin_unlock_irqrestore(&port->tx_lock) (because the tx_lock has >> been unlocked behind itself). >> >> console_force_unlock() is only on emergency paths, so one way or another the >> host is going down. Disable the watchdog before forcing the console lock to >> help prevent having pcpus completing with each other to bring the host down. > So perhaps rather than calling watchdog_disable() before calling > console_force_unlock(), would we not better call the former first > thing from the latter? > > Jan > That was indeed my first attempt, but console_force_unlock() is common while watchdog_* is x86. I could convert the watchdog to arch specific. I suppose it is possible/likely that the Arm folk might want to implement and use watchdogs ? ~Andrew