On Wed, 30 Jan 2008 11:29:59 +0100So this code
michael <trimarchi@xxxxxxxxxxxxxxxx> wrote:
Now, _that_ is strange. I can't see anything that needs protectionI explain it bad:
across that call; in fact, I think we can lock a lot less than what we
currently do.
- with spin_lock the system seems, there is no problem with Valuntary Preeption and
Preemptible Kernel
- with full preemption it runs but the serial line can't be used for receiving at
high bit rate (using lrz)
...but if you drop the spinlock across the call to
tty_flip_buffer_push, you get an Oops?
Could you post the Oops?
The interrupt handler run in IRQF_NODELAY context.In the complete preemption yes.Complete Preemption (Real-Time) ok but the serials is just unusable dueIs it worse than before? IIRC Remy mentioned something about
to too many overruns (just using lrz)
IRQF_NODELAY being the reason for moving all this code to softirq
context in the first place; does the interrupt handler run in hardirq
context?
Which question did you answer "yes" to? That it's worse than before or
that the interrupt handler runs in hardirq context (i.e. IRQF_NODELAY)?
I just meant that the buffer never fills up to its size.I think you're right. Can you change it and see if it helps?I just change it because I have corruption on receiving buffer. All
my test are done with this fix
Ok.
I guess I didn't test it thoroughly enough with DMAI just test it I don't have
disabled...slub_debug ought to catch such things, but not until we
receive enough data to actually overflow the buffer.
buffer overflow.
No, I'd expect your allocation fix to take care of that. Or did you by
any chance test without the fix and with slub_debug enabled?
I protect with a spinlock the access to the register when we sending
from the tasklet. It is correct?
I have no idea. Could you post some more specifics about what you
modified, for example a diff?
Most of the tasklet is already protected by the spinlock, so you mustRegards Michael
be careful to avoid any lock recursion.
Haavard