[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1166048081.11914.208.camel@localhost.localdomain>
Date: Thu, 14 Dec 2006 09:14:41 +1100
From: Benjamin Herrenschmidt <benh@...nel.crashing.org>
To: Linus Torvalds <torvalds@...l.org>
Cc: Greg KH <gregkh@...e.de>, Andrew Morton <akpm@...l.org>,
linux-kernel@...r.kernel.org
Subject: Re: [GIT PATCH] more Driver core patches for 2.6.19
> No. The point really is that it fundamentally _cannot_ work. Not in the
> real world.
>
> It can only work in some alternate reality where you can always disable
> interrupts per-device, and even in that alternate reality it would be
> wrong to use that quoted interrupt handler: not only do you need to
> disable the irq, you need to have an "acknowledge" phase too
>
> So you'd actually have to fix things _architecturally_, not just add some
> code to the irq handler.
Oh, it works well enough for non shared iqs if you are really anal about
it, but I agree that it sucks and I don't see the point of having it in
linux. The flow has to be different for level vs. edge and it's really
ugly but it works. I've seen people doing it in embedded space. But
again, I do agree it sucks big time :-)
the edge flow is easy. the level one is:
- IRQ happens
- kernel handler masks it and queue a msg for userland
- later on, userland gets the message, talks to the device,
(MMAP'ed mmio, acks the interrupt on the device itself) and
does an ioctl/syscall/write/whatever to tell kernel it's done
- kernel unmasks it.
But yeah, I hate it too, so let's not waste time talking about how to
make it work :-)
Ben.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists