From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Goetz Subject: Re: Losing PS/2 Interrupts Date: Fri, 20 May 2011 11:53:54 -0400 Message-ID: References: <3E2050B5-59DC-4E4F-9C8D-8C04A6B465EB@gmail.com> Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <3E2050B5-59DC-4E4F-9C8D-8C04A6B465EB@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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. >=20 >=20 > (XEN) IRQ 12 count 21048 > 12: 21047 0 xen-pirq-ioapic-edge i8042 <--- lost an = interrupt in dom0 > ... >=20 > (XEN) IRQ 12 count 48540 > 12: 48537 0 xen-pirq-ioapic-edge i8042 <--- lost 3 = interrupts in dom0 >=20 >=20 > 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. >=20 > This 2.6.38 tree has a merge of Stafano's 2.6.39 fixes in = drivers/xen/events.c. >=20 > Anyone have any ideas or suggestions? >=20 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