Messages in this thread | | | Date | Thu, 31 Jan 2008 02:53:50 +0100 | From | michael <> | Subject | Re: [PATCH -mm v4 6/9] atmel_serial: Split the interrupt handler |
| |
Hi, Haavard Skinnemoen wrote: > On Wed, 30 Jan 2008 16:26:27 +0100 > michael <trimarchi@gandalf.sssup.it> 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
| |