From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757547AbZATDxm (ORCPT ); Mon, 19 Jan 2009 22:53:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753980AbZATDxc (ORCPT ); Mon, 19 Jan 2009 22:53:32 -0500 Received: from out02.mta.xmission.com ([166.70.13.232]:35353 "EHLO out02.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753378AbZATDxc (ORCPT ); Mon, 19 Jan 2009 22:53:32 -0500 Message-ID: <49754AB5.3000701@hathawaymix.org> Date: Mon, 19 Jan 2009 20:53:25 -0700 From: Shane Hathaway User-Agent: Thunderbird 2.0.0.19 (X11/20090106) MIME-Version: 1.0 To: linux-kernel@vger.kernel.org, user-mode-linux-devel@lists.sourceforge.net X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-XM-SPF: eid=;;;mid=;;;hst=mx03.mta.xmission.com;;;ip=166.70.244.130;;;frm=shane@hathawaymix.org;;;spf=none X-XM-DomainKey: sender_domain=hathawaymix.org;;;sender=shane@hathawaymix.org;;;status=no signature X-SA-Exim-Connect-IP: 166.70.244.130 X-SA-Exim-Mail-From: shane@hathawaymix.org X-Spam-DCC: XMission; sa04 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ;linux-kernel@vger.kernel.org, user-mode-linux-devel@lists.sourceforge.net X-Spam-Relay-Country: X-Spam-Report: * -1.8 ALL_TRUSTED Passed through trusted hosts only via SMTP * -2.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% * [score: 0.0014] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa04 1397; Body=1 Fuz1=1 Fuz2=1] * 0.0 XM_SPF_Neutral SPF-Neutral Subject: [Patch] UML: spurious interrupt freezes guest X-SA-Exim-Version: 4.2.1 (built Thu, 07 Dec 2006 04:40:56 +0000) X-SA-Exim-Scanned: Yes (on mx03.mta.xmission.com) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A new instance of user mode linux that I created over the past couple of days worked pretty well except that it had a habit of freezing after a few minutes. Every time it froze, the last message on the console was either: spurious interrupt in ubd_handler, err = 4 or: spurious interrupt in ubd_handler, err = 0 This message is generated by arch/um/drivers/ubd_kern.c. I did not work out the cause of the spurious interrupts, but I did come up with a patch that makes the guest recover from spurious interrupts without freezing. It appears that the interrupt handler needs to be reactivated before every exit of ubd_handler(). The patch is below. Shane --- linux-2.6.27.12-orig/arch/um/drivers/ubd_kern.c +++ linux-2.6.27.12/arch/um/drivers/ubd_kern.c @@ -489,6 +489,7 @@ break; printk(KERN_ERR "spurious interrupt in ubd_handler, " "err = %d\n", -n); + reactivate_fd(thread_fd, UBD_IRQ); return; }