From: David Mosberger <davidm@hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] AT Keyboard not present?
Date: Fri, 21 Sep 2001 15:44:18 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590698805237@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590698805137@msgid-missing>
Hi Richard,
Some good hunting!
>>>>> On Thu, 20 Sep 2001 23:56:25 +0100, Richard Hirst <rhirst@linuxcare.com> said:
Richard> Turns out the interrupt isn't lost, it is just held off
Richard> until the previous one has been completely serviced...
Richard> User hits CapsLock
Richard> CPU enters arch/ia64/kernel/irq_ia64.c:ia64_handle_irq()
Richard> which calls arch/ia64/kernel/irq.c:do_IRQ()
Richard> which calls the kb interrupt handler
Richard> and then do_IRQ() sees local_softirq_pending() and calls
Richard> do_softirq()
Richard> that will run the keyboard tasklet, which calls
Richard> drivers/char/pc_keyb.c:pckbd_leds()
Richard> pckbd_leds() calls send_data() which expects the kb to
Richard> generate interrupts
Richard> those interrupts can't happen because we havn't yet
Richard> returned to ia64_handle_irq() and called ia64_eoi() for the
Richard> last one
Richard> eventually send_data() gives up and returns, we unwind and
Richard> call ia64_eio() and the keyboard interrupts.
Ah, yes, this makes tons of sense.
Richard> I'm guessing that ia64_eoi() is needed before the next k/b
Richard> int can happen, but it sounds logical.
Yes, that's what we used to do until the softirq-rewrite happened in
2.4.7.
Richard> The answer _might_ be to move the call to do_softirq() from
Richard> the end of do_IRQ() to the end of ia64_handle_irq(). I've
Richard> tried that, and it works, but I don't claim to know the
Richard> ia64 interrupt h/w or s/w, so there may be nasty
Richard> side-effects. Calling do_softirq() only once all pending
Richard> ints have been completely serviced sounds more correct to
Richard> me anyway.
That's probably the best thing to do for now. For 2.5, the idea is to
have a single, platform-independent irq.c and for this reason, I'm
trying to keep the ia64 version as close to the x86 version as
possible. But this obviously is something that needs to be changed.
Thanks,
--david
prev parent reply other threads:[~2001-09-21 15:44 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-07 17:49 [Linux-ia64] AT Keyboard not present? KOCHI Takayoshi
2001-09-07 19:05 ` Krishnakumar B
2001-09-07 19:36 ` Johannes Erdfelt
2001-09-07 19:55 ` Krishnakumar B
2001-09-07 20:02 ` Johannes Erdfelt
2001-09-07 20:09 ` Khalid Aziz
2001-09-07 20:12 ` KOCHI Takayoshi
2001-09-10 8:46 ` Martin Wilck
2001-09-10 21:43 ` Michael Madore
2001-09-10 22:10 ` Luck, Tony
2001-09-10 23:28 ` David Mosberger
2001-09-19 13:35 ` Richard Hirst
2001-09-19 21:49 ` David Mosberger
2001-09-19 22:27 ` Richard Hirst
2001-09-20 22:56 ` Richard Hirst
2001-09-21 15:44 ` David Mosberger [this message]
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=marc-linux-ia64-105590698805237@msgid-missing \
--to=davidm@hpl.hp.com \
--cc=linux-ia64@vger.kernel.org \
/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