Re: [PATCH -mm v4 6/9] atmel_serial: Split the interrupt handler

From: michael
Date: Wed Jan 30 2008 - 20:54:16 EST


Hi,
Haavard Skinnemoen wrote:
On Wed, 30 Jan 2008 16:26:27 +0100
michael <trimarchi@xxxxxxxxxxxxxxxx> wrote:

I have no idea. Could you post some more specifics about what you
modified, for example a diff?

...
/* The interrupt handler does not take the lock */
spin_lock_irqsave(&port->lock, flags);
atmel_tx_chars(port);
spin_unlock_irqrestore(&port->lock, flags);

Sorry, this isn't going to work.

Please post a diff with the changes you did to the driver, and whatever
output you got when it crashed.

It's really difficult to help you when I don't know (a) what code
you're actually running, or (b) anything about the crash.

Ok, but the problem is that I have some added code for using the uart with
smart card in iso mode, (is never called) and the patch is not so clean.
Now I return to the original patch without the spin_lock_irqsave and with
the fix of buffer allocation,and I don't see the crash anymore.
In full preemptive all works with threading hardirqs and sofirqs. I will
do other testing before posting again.
The atmel_tx_chars using the serial device registers like the interrupt routine
and so I think that it is possible to have interference during send operation.

No, it's only called from the tasklet, and the interrupt handler doesn't
touch the TX data register. There shouldn't be any need to disable
interrupts around the call to atmel_tx_chars(). In fact, this may very
well be the cause of the overruns you're seeing.

Haavard

The overrun still remain. An lrz receive session is impossible using
full preemption. I will try the dma patch too and test in iso mode for smart card.

Thanks
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/