[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Thomas Goetz <tcgoetz@xxxxxxxxx>
  • Date: Fri, 20 May 2011 11:53:54 -0400
  • Delivery-date: Fri, 20 May 2011 08:54:41 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer; b=Juh4odenweGoQNoEnaNLM6Sy5ua92O26KR27JLHiWKzd7dnH2W7eS3HPRmVyj9PDfU HLF/+JBkfzk5uoqkDcdlgAyqtQbtITZNY9jY6Cc0jR4MAu6i2aagJon8e59d61g9G8Bn MoGOiFUUHEGh78fBwG0lvatWSDSJvQqHWOArw=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

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.

-Tom Goetz

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.