Message ID | 1236645375.7260.200.camel@pasglop (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Tue, Mar 10, 2009 at 11:36:15AM +1100, Benjamin Herrenschmidt wrote: >On Mon, 2009-03-09 at 20:05 -0400, Josh Boyer wrote: >> [c00000000fffb830] [c0000000005fe504] .mutex_lock_nested+0x78/0x4b0 >> (unreliable) >> [c00000000fffb950] [c00000000039d520] .echo_char_raw+0x40/0x98 >> [c00000000fffb9f0] [c00000000039fd68] .n_tty_receive_buf+0xb48/0x1104 >> [c00000000fffbbb0] [c0000000003a3a08] .flush_to_ldisc+0x160/0x244 >> [c00000000fffbc80] [c0000000003a3b5c] .tty_flip_buffer_push+0x70/0x9c >> [c00000000fffbd10] [c0000000003b9e94] .hvsi_interrupt+0x464/0x590 >> [c00000000fffbe50] [c000000000119168] .handle_IRQ_event+0x60/0xdc >> [c00000000fffbef0] [c00000000011baf0] .handle_fasteoi_irq+0x108/0x1a8 >> >Do that patch help ? Yes. No more oopses on the hvc console when I hit 'enter'. >Alan, any comment about the races talked about in those comments ? Are >they still something I should worry about ? If not, we should look at getting this into 2.6.29. I know it's getting very late, but having kernels oops whenever someone hits enter on the console probably isn't very good either. josh
Index: linux-work/drivers/char/hvcs.c =================================================================== --- linux-work.orig/drivers/char/hvcs.c 2009-03-10 11:28:03.000000000 +1100 +++ linux-work/drivers/char/hvcs.c 2009-03-10 11:28:08.000000000 +1100 @@ -1139,15 +1139,6 @@ static int hvcs_open(struct tty_struct * hvcsd->tty = tty; tty->driver_data = hvcsd; - /* - * Set this driver to low latency so that we actually have a chance at - * catching a throttled TTY after we flip_buffer_push. Otherwise the - * flush_to_async may not execute until after the kernel_thread has - * yielded and resumed the next flip_buffer_push resulting in data - * loss. - */ - tty->low_latency = 1; - memset(&hvcsd->buffer[0], 0x00, HVCS_BUFF_LEN); /* Index: linux-work/drivers/char/hvsi.c =================================================================== --- linux-work.orig/drivers/char/hvsi.c 2009-03-10 11:27:19.000000000 +1100 +++ linux-work/drivers/char/hvsi.c 2009-03-10 11:27:22.000000000 +1100 @@ -810,7 +810,6 @@ static int hvsi_open(struct tty_struct * hp = &hvsi_ports[line]; tty->driver_data = hp; - tty->low_latency = 1; /* avoid throttle/tty_flip_buffer_push race */ mb(); if (hp->state == HVSI_FSP_DIED)