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] RE: odd IRQ behavior

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] RE: odd IRQ behavior
From: "Cihula, Joseph" <joseph.cihula@xxxxxxxxx>
Date: Thu, 26 Feb 2009 19:52:29 -0800
Accept-language: en-US
Acceptlanguage: en-US
Delivery-date: Thu, 26 Feb 2009 19:53:00 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4F65016F6CB04E49BFFA15D4F7B798D98D4BA365@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4F65016F6CB04E49BFFA15D4F7B798D98D4BA365@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcmYft/BQyNL3H4qSR26RJ7HKdFeNQAD2HZg
Thread-topic: odd IRQ behavior
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On
> Behalf Of Cihula, Joseph
> Sent: Thursday, February 26, 2009 5:58 PM
>
> Sometime after c/s 19133 (I tried bisecting but there were some indeterminate 
> results), during
> a shutdown/reboot in the tboot routines when it creates the 1:1 mapping for 
> itself, the
> map_pages_to_xen() call ends up in alloc_domheap_pages() where it triggers 
> the assertion
> 'ASSERT(!in_irq());'.  In addition, and even stranger, is that when resuming 
> from S3 is
> generates another assertion, 'BUG_ON(unlikely(in_irq()));' in 
> invalidate_shadow_ldt().  From
> some debugging, the first assertion on entry is because the irq_count is 1 
> and the second is
> because it's -1.
>
> Adding a irq_exit() before map_pages_to_xen() fixes the first assertion and 
> causes the second,
> which is then fixed by irq_enter() on resume.
>
> But why are these necessary?  Even if we say that something has caused the 
> irq_count to go
> positive before shutdown (but what-it wasn't like this before pulling a more 
> recent tree), the
> irq_exit() that gets rid of the assertion means that the count has gone to 
> 0-so why is it
> negative on resume?

As an additional data point/issue, if I build with debug=y, the 
map_pages_to_xen() call (on a reboot) generates a BUG_ON(seen == !irq_safe) in 
check_lock().  But prior to the map_pages_to_xen() call, we call 
local_irq_disable(), so it should be called as irq_safe.  I'm not sure how to 
fix this.

Joe

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>