Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751304AbWIKPce (ORCPT ); Mon, 11 Sep 2006 11:32:34 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751306AbWIKPce (ORCPT ); Mon, 11 Sep 2006 11:32:34 -0400 Received: from maggie.spheresystems.co.uk ([82.71.70.17]:8639 "EHLO maggie.spheresystems.co.uk") by vger.kernel.org with ESMTP id S1751304AbWIKPcd (ORCPT ); Mon, 11 Sep 2006 11:32:33 -0400 From: "Andrew Bird (Sphere Systems)" Organization: Sphere Systems Ltd To: linux-kernel@vger.kernel.org Subject: Spinlock debugging Date: Mon, 11 Sep 2006 16:32:27 +0100 User-Agent: KMail/1.9.3 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200609111632.27484.ajb@spheresystems.co.uk> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4410 Lines: 109 Hi all, this is my first post to the list, so please be kind. I am working on the nozomi (UMTS modem) driver, which is not in the main kernel. I have a issue with the tty code. Currently the driver defines a 'put_char' tty function but it is empty, except for a debug message. Now I know that this means that the tty layer will use it to write single chars and so data will be lost. But if I comment out the line that tells the tty layer that it's implemented, I end up with a BUG - spinlock recursion. Can anybody tell me how to interpret the output? Thanks and please CC as I'm not subscribed to the list Andrew [856] nozomi_read_config_table(): Initialization OK! BUG: spinlock recursion on CPU#0, minicom/1918 lock: dc4fade4, .magic: dead4ead, .owner: minicom/1918, .owner_cpu: 0 [] _raw_spin_lock+0x31/0x65 [] _spin_lock_irqsave+0x9/0xd [] ntty_write+0x35/0xf2 [nozomi] [] scheduler_tick+0x9d/0x2af [] timer_interrupt+0x73/0x7a [] tty_default_put_char+0x15/0x18 [] opost+0x93/0x1ce [] n_tty_receive_buf+0x52b/0xb37 [] common_interrupt+0x1a/0x20 [] wakeup_code+0x7b/0xba [] release_console_sem+0x74/0xa9 [] vprintk+0x1d1/0x1f5 [] timer_interrupt+0x73/0x7a [] vsnprintf+0x45a/0x497 [] flush_to_ldisc+0xd4/0xeb [] receive_data+0x1a6/0x1b6 [nozomi] [] _spin_lock_irqsave+0x9/0xd [] lock_timer_base+0x15/0x2f [] _spin_lock_irqsave+0x9/0xd [] __add_entropy_words+0x58/0x167 [] interrupt_handler+0x52c/0x723 [nozomi] [] __freed_request+0x1c/0x65 [] freed_request+0x1d/0x37 [] __ide_end_request+0xb1/0xba [] elv_queue_empty+0x1b/0x21 [] ide_do_request+0x89/0x2f8 [] ide_intr+0x10e/0x11a [] ide_dma_intr+0x0/0x92 [] handle_IRQ_event+0x21/0x4a [] __do_IRQ+0x79/0xcb [] do_IRQ+0x5e/0x79 ======================= [] common_interrupt+0x1a/0x20 [] tty_open+0x276/0x2ac [] chrdev_open+0x111/0x127 [] chrdev_open+0x0/0x127 [] __dentry_open+0xb6/0x185 [] nameidata_to_filp+0x19/0x28 [] filp_open+0x26/0x2c [] get_unused_fd+0xac/0xb4 [] do_sys_open+0x31/0x9c [] syscall_call+0x7/0xb BUG: spinlock lockup on CPU#0, minicom/1918, dc4fade4 [] __spin_lock_debug+0x66/0x6f [] _raw_spin_lock+0x56/0x65 [] _spin_lock_irqsave+0x9/0xd [] ntty_write+0x35/0xf2 [nozomi] [] scheduler_tick+0x9d/0x2af [] timer_interrupt+0x73/0x7a [] tty_default_put_char+0x15/0x18 [] opost+0x93/0x1ce [] n_tty_receive_buf+0x52b/0xb37 [] common_interrupt+0x1a/0x20 [] wakeup_code+0x7b/0xba [] release_console_sem+0x74/0xa9 [] vprintk+0x1d1/0x1f5 [] timer_interrupt+0x73/0x7a [] vsnprintf+0x45a/0x497 [] flush_to_ldisc+0xd4/0xeb [] receive_data+0x1a6/0x1b6 [nozomi] [] _spin_lock_irqsave+0x9/0xd [] lock_timer_base+0x15/0x2f [] _spin_lock_irqsave+0x9/0xd [] __add_entropy_words+0x58/0x167 [] interrupt_handler+0x52c/0x723 [nozomi] [] __freed_request+0x1c/0x65 [] freed_request+0x1d/0x37 [] __ide_end_request+0xb1/0xba [] elv_queue_empty+0x1b/0x21 [] ide_do_request+0x89/0x2f8 [] ide_intr+0x10e/0x11a [] ide_dma_intr+0x0/0x92 [] handle_IRQ_event+0x21/0x4a [] __do_IRQ+0x79/0xcb [] do_IRQ+0x5e/0x79 ======================= [] common_interrupt+0x1a/0x20 [] tty_open+0x276/0x2ac [] chrdev_open+0x111/0x127 [] chrdev_open+0x0/0x127 [] __dentry_open+0xb6/0x185 [] nameidata_to_filp+0x19/0x28 [] filp_open+0x26/0x2c [] get_unused_fd+0xac/0xb4 [] do_sys_open+0x31/0x9c [] syscall_call+0x7/0xb - 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/