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] still lockup due to interrupt lost after backport from 2.6.3

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] still lockup due to interrupt lost after backport from 2.6.31 to 2.6.32 in events.c
From: alice wan <wanjia19870902@xxxxxxxxx>
Date: Fri, 15 Oct 2010 15:51:07 +0800
Delivery-date: Fri, 15 Oct 2010 00:52:04 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=konXllerrhHaR2V7VU17AkHi9YQoaCducxvoqndP8cI=; b=jtn0PwU4Fu2Bjed5xxn9thxEZiDZn8Rtw/PiEqMKYcL+UKvFU40eZWoqx4SHVm+a0k GXl0/dw2PQU6VtkYJP1+pUJWOWqlhG9GBWMCiFHiKqzQ/iOY+s//bM3pR2oLrT80hxtx rNjziXrRFagH6pgJPrVU2DPKIr6TdOqryb/fg=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=KKGbqSYIqdo42JASGHWq5A07v5xJy3r1+ZBWsVVYwYSHxGZu6zpR104mXh9AxG3zlG 0aqWHKATZC1keF+YjSh1EdR9N5u+ls7yKpOpXlw6qv/00MBWpjV9p3+n/zRhD9JPN1l5 qmpr1cgl7UJELVJ0ydvUDnS/DuKheaR7m56XU=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi all,
 
Recently i met a problem about domU lockup. i traced this problem and knew that it may be caused by irq balancing.

From  xen-devel community, it's known that the workaround is to turn off irq balancing.
After testing , it actually worked.

However, i studied the kernel of 2.6.32 which has already fix this bug, there're some doubt about the difference between 2.6.32 and 2.6.31(pvops),  because after i tried to backport this patch, domU still locked up.

In my opinion , the difference is mainly in events.c, the important difference as following:

1. void xen_evtchn_do_upcall(struct pt_regs *regs)

                               int irq = evtchn_to_irq[port];
                               struct irq_desc *desc;
+                               mask_evtchn(port);
+                               clear_evtchn(port);
+
                               if (irq != -1) {

2. static void ack_pirq(unsigned int irq)

                move_masked_irq(irq);
-                if (VALID_EVTCHN(evtchn)) {
-                        mask_evtchn(evtchn);
-                        clear_evtchn(evtchn);
-                }
+               pirq_eoi(irq);

here,  pirq_eoi 'll be called by handle_fasteoi_irq function in   desc->chip->eoi(irq).

3. use percpu_interrupts for IPIs and VIRQs

4. use fasteoi handler for pirq ,events,msi.

my question is how 2.6.31 drops interrupts if  migrate an irq beween vcpus while an event is pending and what main points that 2.6.32 fixes about not dropping are.

i wanna know whether it matters with the advance of mask_evtchn in Point 1 to avoid new interrupt coming or whether it matters with eoi called by handle_fasteoi_irq when status is in IRQ_INPROGRESS.  because handle_level_irq and handle_fasteoi_irq is almost the same except the branch of  IRQ_INPROGRESS.  Or it matters with other points that i haven't find.

Deeply looking forward to your disabusing and advice.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] still lockup due to interrupt lost after backport from 2.6.31 to 2.6.32 in events.c, alice wan <=