|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Re: Losing PS/2 Interrupts
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
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Losing PS/2 Interrupts, Thomas Goetz
- [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts,
Konrad Rzeszutek Wilk <=
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Jan Beulich
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Jan Beulich
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Stefano Stabellini
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Stefano Stabellini
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Thomas Goetz
|
|
|
|
|