From: Bob Frey <bfrey@turbolinux.com.cn>
To: Stephen Kitchener <stephen@g6dzj.demon.co.uk>
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: Scanning problems - machine lockups
Date: Fri, 19 Jan 2001 09:41:30 +0800 [thread overview]
Message-ID: <20010119094130.A7816@bfrey.dev.cn.tlan> (raw)
In-Reply-To: <01011823245400.01549@statler.ether-net>
In-Reply-To: <01011823245400.01549@statler.ether-net>; from stephen@g6dzj.demon.co.uk on Thu, Jan 18, 2001 at 11:24:54PM +0000
On Thu, Jan 18, 2001 at 11:24:54PM +0000, Stephen Kitchener wrote:
> The only thing that might be odd is that the scanner's scsi card and the
> display card are using the same IRQ, but I thought that IRQ sharing was ok in
> the new kernels. The display card is an AGP type and the scsi card is pci.
>
> As you might have guessed, I am at a loss as to what to do next. Any help
> appriciated, even suggestions as to how I can track down what I haven't done
> (yet!)
Sharing interrupts could be the problem. Interrupt sharing is supported
in the kernel as far as two different drivers being able to register a
handler for the same interrupt, but not much beyond that. From studying
the code I don't find any handling of unclaimed or spurious interrupts.
Some drivers (like video cards) do not register a handler for their card's
interrupt. So when another driver (like the advansys driver) shares an
interrupt with this card's "unregistered" interrupt there is no one left
to handle the interrupt. The system will loop taking an interrupt from
the card. I've observed this using the frame buffer driver. Note: this
problem is unnoticed if the (video) card does not share an interrupt with
another driver, because (at least on x86) Linux does not enable the
PIC IRQ bit for IRQs that do not have registered interrupted handlers.
For Linux I think the right way to handle this is to have each (SA_SHIRQ)
sharing capable interrupt handler return a TRUE or FALSE value indicating
whether the interrupt belongs to the driver. In kernel/irq.c:handle_IRQ_event()
check the return value. If after one pass through all of the interrupt
(action) handlers no one has claimed the inerrupt then log a warning message
(spurious interrupt) and clear the interrupt. The difficult/painstaking
problem is that all SA_SHIRQ drivers need to be changed to return a return
value to make this work.
Anyway the simplest solution for you is probably if you can is to put
assign the video card its own interrupt. Putting the two advansys cards
on the same interrupt is fine. I have used interrupt sharing between
multiple advansys cards and and ethernet cards without a problem.
--
Bob Frey
bfrey@turbolinux.com.cn
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next parent reply other threads:[~2001-01-19 1:36 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <01011823245400.01549@statler.ether-net>
2001-01-19 1:41 ` Bob Frey [this message]
2001-01-19 19:37 ` Scanning problems - machine lockups Gérard Roudier
2001-01-20 15:54 ` Stephen Kitchener
2001-01-21 1:32 ` Bob Frey
2001-01-19 9:30 ` David Woodhouse
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=20010119094130.A7816@bfrey.dev.cn.tlan \
--to=bfrey@turbolinux.com.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=stephen@g6dzj.demon.co.uk \
/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