From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Tue, 11 Feb 2003 12:37:34 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Tue, 11 Feb 2003 12:36:12 -0500 Received: from dbl.q-ag.de ([80.146.160.66]:182 "EHLO dbl.q-ag.de") by vger.kernel.org with ESMTP id ; Tue, 11 Feb 2003 12:35:57 -0500 Message-ID: <3E4936BF.3050809@colorfullife.com> Date: Tue, 11 Feb 2003 18:45:35 +0100 From: Manfred Spraul User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Zephaniah E. Hull" CC: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-eata@i-connect.net Subject: eata irq abuse (was: Re: Linux 2.5.60) Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Zephaniah wrote: >kernel BUG at mm/slab.c:1102! Slab notices that a function that expects enabled local interrupts is called with disabled local interrupts. >Call Trace: > [] do_tune_cpucache+0x83/0x240 do_tune_cpucache: the function call smp_call_function(), and that is only permitted with enabled local interrupts. The complain is correct. > [] do_ccpupdate_local+0x0/0x30 > [] enable_cpucache+0x51/0x80 > [] kmem_cache_create+0x4a5/0x560 Within kmem_cache_create. kmem_cache_create checks for in_interrupt(), thus someone probably does spin_lock_irqsave(); kmem_cache_create(); > [] scsi_setup_command_freelist+0xa2/0x130 calls kmem_cache_create() > [] scsi_register+0x3c0/0x660 calls scsi_setup_command_freelist > [] get_pci_dev+0x31/0x50 ?? probably stale > [] port_detect+0x3c2/0xe50 Do you have an eata scsi controller? Ugs. eata2x_detect(): * spin_lock_irqsave(); * calls port_detect(); * * spin_unlock(); * * scsi_register. Eata maintainers: Is that necessary? Why do the interrupts remain disabled across scsi_register? Is that a bug workaround, or an oversight? I'd use spin_unlock_irq(); scsi_register(); spin_lock_irq(); -- Manfred