public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jon Smirl <jonsmirl@gmail.com>
To: Peter Chubb <peterc@gelato.unsw.edu.au>
Cc: linux-kernel@vger.kernel.org
Subject: Re: User mode drivers: part 1, interrupt handling (patch for 2.6.11)
Date: Sat, 12 Mar 2005 10:55:21 -0500	[thread overview]
Message-ID: <9e473391050312075548fb0f29@mail.gmail.com> (raw)
In-Reply-To: <16945.4650.250558.707666@berry.gelato.unsw.EDU.AU>

On Fri, 11 Mar 2005 14:36:10 +1100, Peter Chubb
<peterc@gelato.unsw.edu.au> wrote:
> 
> As many of you will be aware, we've been working on infrastructure for
> user-mode PCI and other drivers.  The first step is to be able to
> handle interrupts from user space. Subsequent patches add
> infrastructure for setting up DMA for PCI devices.

I've tried implementing this before and could not get around the
interrupt problem. Most interrupts on the x86 architecture are shared.
Disabling the IRQ at the PIC blocks all of the shared IRQs. This works
(hope your userspace handler is last on the shared handler list) until
you have a problem in userspace.

Once you have a problem in userspace there is no way to acknowledge
the interrupt anymore. I tried to address that by maintaining a timer
and suspending the hardware through the D0 state to reset it. That had
some success. Not acknowledging the interrupt results in an interrupt
loop and reboot.

The problem can be mitigated by choosing what slot your hardware to
put your hardware in. This can reduce the number of shared interrupts.
If you can get exclusive use of the interrupt this method will work.

If I were designing a new bus I would make interrupt acknowledge part
of PCI config space in order to allow a single piece of code to
acknowledge them. Since we can't change the bus the only safe way to
do this is to build a hardware specific driver for each device to
acknowledge the interrupt.

Bottom line is that I could find no reliable solution for handing interrupts.

-- 
Jon Smirl
jonsmirl@gmail.com

  parent reply	other threads:[~2005-03-12 16:04 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-11  3:36 User mode drivers: part 1, interrupt handling (patch for 2.6.11) Peter Chubb
2005-03-11 10:29 ` Pavel Machek
2005-03-12 16:27   ` Jon Smirl
2005-03-12 18:55     ` Jon Smirl
2005-03-14  0:39     ` Peter Chubb
2005-03-14  1:24       ` Jon Smirl
2005-03-11 13:50 ` Michael Raymond
2005-03-11 17:25   ` Greg KH
2005-03-11 17:31     ` Michael Raymond
2005-03-11 19:14 ` Alan Cox
2005-03-13  2:03   ` Jon Smirl
2005-03-15  4:32     ` Lee Revell
2005-03-15 13:28       ` Alan Cox
2005-03-14  0:02   ` Peter Chubb
2005-03-14 13:33     ` Alan Cox
2005-03-15  3:15       ` Jon Smirl
2005-03-12 15:55 ` Jon Smirl [this message]
2005-03-12 17:11   ` Zwane Mwaikambo
2005-03-14  1:55     ` Jon Smirl
2005-03-14  3:04       ` Peter Chubb
2005-03-14  0:36   ` Peter Chubb
     [not found]     ` <9e47339105031317193c28cbcf@mail.gmail.com>
2005-03-14  1:42       ` Peter Chubb
2005-03-14  1:52         ` Jon Smirl
2005-03-14  3:06           ` Peter Chubb
2005-03-15  3:19         ` Jon Smirl
2005-03-15  3:47           ` Peter Chubb
2005-03-15  3:50             ` Jon Smirl
2005-03-15  4:11               ` Peter Chubb
  -- strict thread matches above, loose matches on Subject: below --
2005-03-15 19:20 Stephen Warren

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=9e473391050312075548fb0f29@mail.gmail.com \
    --to=jonsmirl@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterc@gelato.unsw.edu.au \
    /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