[PATCH] ppc32: Fix problem with spurrious edge interrupts on old
On old powermacs, it's possible that we get a stale edge interrupt when doing request_irq(), that typically happens with the DBDMA controller interrupts when the device was used by the firmware for booting. I just tracked down a nasty memory corruption problem where that was causing the bmac driver to try to process packets before the driver internal data structures were properly initialized. While I agree that the driver should (and will) be made more robust to such things, Paulus and I decided that it makes little sense to keep track of an "old" edge interrupt that happens before a driver does request_irq. (On those powermacs, those are only the DBDMA interrupts anyway, and none of the DBDMA users will care). This patch implements a "startup" handler for the old Apple PIC that will "ack" pending edge interrupts before unmasking, thus preventing those stale interrupts to be delivered. It also "fixes" the ppc32 irq core to call the startup() callback when available instead of just calling enable(). Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing
Please register or sign in to comment