|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Re: Losing PS/2 Interrupts
On May 23, 2011, at 4:26 AM, Jan Beulich wrote:
The PS/2 port has a one character buffer. It will only ever send one
interrupt until it has been serviced. When __do_IRQ_guest calls
send_guest_pirq and sees that it is already pending, what part of the between
the bottom of __do_IRQ_guest and _irq_guest_eoi results in the pending
interrupt being issued to the guest? I haven't found that and it looks like
Xen is merging the ACKTYPE_NONE edge interrupt resulting in the deice never
being serviced when it's buffer is full and never interrupting again.
It would be a bug of the 8042 if it sent a second interrupt when the first one wasn't serviced (status and data port read) yet. It's the nature of edge triggered interrupts that secondary instances are lost when the primary instance doesn't get handled (in time). Jan
My assumption is that at the point that the i8042 driver reads the data register a new interrupt happens. There is gap in time between when the data register is read and when the event channel pending state is cleared. Since the hypervisor ACKed the previous real interrupt before delivering it to the guest, there is nothing to stop the i8042 device from interrupting immediately after the data register is read. If it interrupt before the event channel pending state is cleared, then it will not be delivered to the guest and the EOI mechanism will be set up, but I haven't found anything in that that will set up a delayed delivery of the second interrupt.
In this situation the i8042 device has every reason to believe the second interrupt will be delivered. The previous interrupt was received and handled. Nothing is masked.
Am I missing something?
|
_______________________________________________
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
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Stefano Stabellini
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Jan Beulich
- Re: [Xen-devel] Re: Losing PS/2 Interrupts, Stefano Stabellini
|
|
|
|
|