Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch

Lee Revell
2004-07-13T22:33:01Z

On Tue, 2004-07-13 at 05:29, Andrew Morton wrote:
> Lee Revell <rlrevell@joe-job.com> wrote:
> >
> > On Tue, 2004-07-13 at 05:00, Andrew Morton wrote:
> > > Lee Revell <rlrevell@joe-job.com> wrote:
> > > >
> > > > > framebuffer scrolling inside lock_kernel(). Tricky. Suggest you use X or
> > > > > vgacon. You can try removing the lock_kernel() calls from do_tty_write(),
> > > > > but make sure you're wearing ear protection.
> > > > >
> > > >
> > > > OK, I figured this was not an easy one. I can just not do that.
> > >
> > > Why not? You can certainly try removing those [un]lock_kernel() calls.
> > >
> >
> > Maybe I missed something. What exactly do you mean by 'make sure you're
> > wearing ear protection'?
> >
>
> It might go boom. If it does screw up, it probably won't be very seriously
> bad - maybe some display glitches. Just an experiment.
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

Seems to work perfectly. No visible display glitches.

I would imagine that putting a modem on a tty, then stressing the system
and watching for line errors would be a definitive test.

--- drivers/char/tty_io.c.orig 2004-07-13 16:55:28.000000000 -0400
+++ drivers/char/tty_io.c 2004-07-13 16:55:51.000000000 -0400
@@ -684,17 +684,13 @@
return -ERESTARTSYS;
}
if ( test_bit(TTY_NO_WRITE_SPLIT, &tty->flags) ) {
- lock_kernel();
written = write(tty, file, buf, count);
- unlock_kernel();
} else {
for (;;) {
unsigned long size = max((unsigned long)PAGE_SIZE*2, 16384UL);
if (size > count)
size = count;
- lock_kernel();
ret = write(tty, file, buf, size);
- unlock_kernel();
if (ret <= 0)
break;
written += ret;

Lee