Ayaz Abdulla wrote:
I am trying to track down a forcedeth driver issue described by bug
9047 in bugzilla (2.6.23-rc7-git1 forcedeth w/ MCP55 oops under heavy
load). I added a patch to synchronize the timer handlers so that one
handler doesn't accidently enable the IRQ while another timer handler
is running (see attachment 'Add timer lock' in bug report) and for
other processing protection.
However, the system still had an Oops. So I added a lock around the
nv_rx_process_optimized() and the Oops has not happened (see
attachment 'New patch for locking' in bug report). This would imply a
synchronization issue. However, the only callers of that function are
the IRQ handler and the timer handlers (in non-NAPI case). The timer
handlers use disable_irq so that the IRQ handler does not contend
with them. It looks as if disable_irq is not working properly.
Either disable_irq() is not working properly or interrupts are nested,
i.e. the irq handler is called again while running.
Which timer handler do you mean? I only see disable_irq() in the
configuration paths (set mtu, change ring size, ...) and in the tx
timeout case.
Neither one should happen during normal operation.
--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/