WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] BUG() on soft lockup upon suspend/resume

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] BUG() on soft lockup upon suspend/resume
From: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>
Date: Mon, 9 Oct 2006 18:22:42 -0300
Delivery-date: Mon, 09 Oct 2006 14:22:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.11
Hi,

In systems with vcpu > 1, a BUG due to a detected soft lockup seems to be 
triggered after system resume/suspend. This is probably due to the lack of 
seqlocking around the region that does the local time processing. 

The following patch fix this.

-- 
Glauber de Oliveira Costa
Red Hat Inc.
"Free as in Freedom"
--- linux-2.6.18-orig/arch/i386/kernel/time-xen.c       2006-10-06 
14:37:41.000000000 -0400
+++ linux-2.6.18.x86_64/arch/i386/kernel/time-xen.c     2006-10-09 
17:13:54.000000000 -0400
@@ -666,6 +666,13 @@ irqreturn_t timer_interrupt(int irq, voi
                clock_was_set();
        }
 
+       /* Local timer processing (see update_process_times()). */
+       run_local_timers();
+       if (rcu_pending(cpu))
+               rcu_check_callbacks(cpu, user_mode(regs));
+       scheduler_tick();
+       run_posix_cpu_timers(current); 
+
        write_sequnlock(&xtime_lock);
 
        /*
@@ -709,13 +716,6 @@ irqreturn_t timer_interrupt(int irq, voi
                                            (cputime_t)delta_cpu);
        }
 
-       /* Local timer processing (see update_process_times()). */
-       run_local_timers();
-       if (rcu_pending(cpu))
-               rcu_check_callbacks(cpu, user_mode(regs));
-       scheduler_tick();
-       run_posix_cpu_timers(current);
-
        return IRQ_HANDLED;
 }
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>