From: Thomas Goetz <tcgoetz@gmail.com>
To: Jan Beulich <JBeulich@novell.com>
Cc: Simon Graham <simon.graham@virtualcomputer.com>,
xen-devel@lists.xensource.com,
Konrad Rzeszutek Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: Re: Re: Losing PS/2 Interrupts
Date: Mon, 23 May 2011 08:09:35 -0400 [thread overview]
Message-ID: <1D3BFCDD-9D53-48BA-9ECD-D009AD535C2B@gmail.com> (raw)
In-Reply-To: <4DDA366E0200007800042C71@vpn.id2.novell.com>
[-- Attachment #1.1: Type: text/plain, Size: 1807 bytes --]
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?
---
Tom Goetz
tcgoetz@gmail.com
[-- Attachment #1.2: Type: text/html, Size: 3393 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next prev parent reply other threads:[~2011-05-23 12:09 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-19 21:45 Losing PS/2 Interrupts Thomas Goetz
2011-05-20 15:53 ` Thomas Goetz
2011-05-20 17:50 ` Konrad Rzeszutek Wilk
2011-05-20 18:06 ` Thomas Goetz
2011-05-23 8:26 ` Jan Beulich
2011-05-23 12:09 ` Thomas Goetz [this message]
2011-05-23 13:02 ` Jan Beulich
2011-05-23 13:45 ` Stefano Stabellini
2011-05-23 17:16 ` Thomas Goetz
2011-05-23 17:28 ` Thomas Goetz
2011-05-23 18:39 ` Thomas Goetz
2011-05-24 13:53 ` Stefano Stabellini
2011-05-24 15:37 ` Thomas Goetz
2011-05-24 15:58 ` Stefano Stabellini
2011-05-24 9:07 ` Jan Beulich
2011-05-24 11:04 ` Stefano Stabellini
2011-05-24 12:24 ` Jan Beulich
2011-05-24 12:58 ` Konrad Rzeszutek Wilk
2011-05-24 15:40 ` Jan Beulich
2011-05-24 16:00 ` Stefano Stabellini
2011-05-24 13:52 ` Stefano Stabellini
2011-05-24 15:37 ` Jan Beulich
2011-05-24 16:35 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1D3BFCDD-9D53-48BA-9ECD-D009AD535C2B@gmail.com \
--to=tcgoetz@gmail.com \
--cc=JBeulich@novell.com \
--cc=konrad.wilk@oracle.com \
--cc=simon.graham@virtualcomputer.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).