From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263769AbTLTBwL (ORCPT ); Fri, 19 Dec 2003 20:52:11 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S263777AbTLTBwL (ORCPT ); Fri, 19 Dec 2003 20:52:11 -0500 Received: from palrel11.hp.com ([156.153.255.246]:63134 "EHLO palrel11.hp.com") by vger.kernel.org with ESMTP id S263769AbTLTBwG (ORCPT ); Fri, 19 Dec 2003 20:52:06 -0500 Date: Fri, 19 Dec 2003 17:52:00 -0800 From: David Mosberger Message-Id: <200312200152.hBK1q0I4016741@napali.hpl.hp.com> To: ganesh@veritas.com Cc: linux-usb-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: quick hack to make ipaq USB serial driver work again X-URL: http://www.hpl.hp.com/personal/David_Mosberger/ Reply-To: davidm@hpl.hp.com Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org The ipaq USB driver in 2.6.0 didn't work for me. I got the attached "Badness in local_bh_enable" backtrace when ppp tried to connect to my iPaq. The quick and dirty patch to avoid the problem is this patch: ===== drivers/usb/serial/ipaq.c 1.34 vs edited ===== --- 1.34/drivers/usb/serial/ipaq.c Tue Sep 16 03:52:04 2003 +++ edited/drivers/usb/serial/ipaq.c Fri Dec 19 17:28:20 2003 @@ -222,7 +222,11 @@ * discipline instead of queueing. */ +#if 0 port->tty->low_latency = 1; +#else + port->tty->low_latency = 0; +#endif port->tty->raw = 1; port->tty->real_raw = 1; I'm not quite sure of the root-cause of the problem. It's quite likely that the console output caused by WARN_ON() in softirq.c slows down execution enough for the connection to fail, but clearly calling local_bh_enable() with interrupts disabled isn't kosher either. With the above workaround applied, I can now use SynCE's "pstatus" and "pls" commands and they both seem to work fine. Thanks, --david Badness in local_bh_enable at kernel/softirq.c:121 Call Trace: [] show_stack+0x80/0xa0 [] local_bh_enable+0x150/0x160 [] ppp_asynctty_receive+0x670/0x1080 [ppp_async] [] flush_to_ldisc+0x140/0x260 [] ipaq_read_bulk_callback+0x360/0x640 [ipaq] [] usb_hcd_giveback_urb+0x150/0x240 [] finish_urb+0xe0/0x220 [ohci_hcd] [] dl_done_list+0x260/0x320 [ohci_hcd] [] ohci_irq+0x140/0x960 [ohci_hcd] [] usb_hcd_irq+0xa0/0x120 [] handle_IRQ_event+0xa0/0x140 [] do_IRQ+0x2b0/0x440 [] ia64_handle_irq+0x70/0x140 [] ia64_leave_kernel+0x0/0x260 [] serial_in+0x300/0x400 [] serial8250_console_write+0xf0/0x720 [] __call_console_drivers+0x130/0x180 [] _call_console_drivers+0x1c0/0x1e0 [] release_console_sem+0x420/0x580 [] printk+0x300/0x4e0 [] ipaq_write+0x610/0x700 [ipaq] [] serial_write+0x1d0/0x2e0 [usbserial] [] ppp_async_push+0x250/0xd00 [ppp_async] [] ppp_async_send+0xd0/0x100 [ppp_async] [] ppp_push+0x230/0x260 [ppp_generic] [] ppp_xmit_process+0x730/0xe80 [ppp_generic] [] ppp_write+0x3d0/0x400 [ppp_generic] [] vfs_write+0x1c0/0x2e0 [] sys_write+0x60/0xe0 [] ia64_ret_from_syscall+0x0/0x20