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/
Home Products Support Community News


Re: [Xen-devel] Re: Losing PS/2 Interrupts

To: Thomas Goetz <tcgoetz@xxxxxxxxx>
Subject: Re: [Xen-devel] Re: Losing PS/2 Interrupts
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Fri, 20 May 2011 13:50:44 -0400
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 20 May 2011 10:52:01 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <F85CBA5B-F58C-416A-BF2C-ECE8BC62614F@xxxxxxxxx>
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: <3E2050B5-59DC-4E4F-9C8D-8C04A6B465EB@xxxxxxxxx> <F85CBA5B-F58C-416A-BF2C-ECE8BC62614F@xxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
On Fri, May 20, 2011 at 11:53:54AM -0400, Thomas Goetz wrote:
> On May 19, 2011, at 5:45 PM, Thomas Goetz wrote:
> > I'm running PVOPs 2.6.38 on Xen 4.0.2 RC3 and while booting a guest I lose 
> > interrupts for the PS/2 trackpad. The trackpad stops functioning because 
> > the device is waiting for service. I added a work around that calls 
> > i8042_interupt form a timer if it hasn't been called in 1s and it started 
> > working again. I added some code to Xen to count IRQ 12 and compared that 
> > to the IRQ 12 count in //proc/interrupts (I stopped PS/2 activity and 
> > waited for PS/2 interrupt activity to stop before taking the counts). I 
> > lose one interrupt in Dom0 every time the trackpad freezes.
> > 
> > 
> > (XEN) IRQ 12 count 21048
> > 12:      21047          0  xen-pirq-ioapic-edge  i8042   <--- lost an 
> > interrupt in dom0
> > ...
> > 
> > (XEN) IRQ 12 count 48540
> > 12:      48537          0  xen-pirq-ioapic-edge  i8042   <--- lost 3 
> > interrupts in dom0
> > 
> > 
> > I looked at the point at which the trackpad gets it's last interrupt in a 
> > trace and the other major activity at that time is the event channel that 
> > services the Qemu vcpu io_req code.
> > 
> > This 2.6.38 tree has a merge of Stafano's 2.6.39 fixes in 
> > drivers/xen/events.c.
> > 
> > Anyone have any ideas or suggestions?
> > 
> More data. The number of missing interrupts is equal to the number of times 
> __do_IRQ_guest called send_guest_pirq and incremented already_pending. The 
> number of IRQ 12 interrupts reported by /proc/interrupts is the same as the 
> count of times __xen_evtchn_do_upcall called generic_handle_irq_desc for IRQ 
> 12. So the issue has to be between send_guest_pirq in Xen and  
> __xen_evtchn_do_upcall in dom0.

So extremly hairy code. Not sure if there was any work done in the 
send_guest_pirq, but I do
know that __xen_evtchn_do_upcall had a fair bit of IRQ fair round-robin code 
added in.

The git commits were

3b7bcdf xen: events: Remove redundant clear of l2i at end of round-robin loop
24b51c2 xen: events: Make round-robin scan fairer by snapshotting each l2 word 
once only
ada6814 xen: events: Clean up round-robin evtchn scan.
f1f4a32 xen: events: Make last processed event channel a per-cpu variable.
ab7f863 xen: events: Process event channels notifications in round-robin order.

Xen-devel mailing list