* eata irq abuse (was: Re: Linux 2.5.60)
@ 2003-02-11 17:45 Manfred Spraul
2003-02-11 23:01 ` Zephaniah E. Hull
0 siblings, 1 reply; 5+ messages in thread
From: Manfred Spraul @ 2003-02-11 17:45 UTC (permalink / raw)
To: Zephaniah E. Hull; +Cc: linux-kernel, linux-scsi, linux-eata
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:
> [<c014a3b3>] 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.
> [<c014a300>] do_ccpupdate_local+0x0/0x30
> [<c014a5c1>] enable_cpucache+0x51/0x80
> [<c0148ea5>] 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();
> [<c0285dd2>] scsi_setup_command_freelist+0xa2/0x130
calls kmem_cache_create()
> [<c02887e0>] scsi_register+0x3c0/0x660
calls scsi_setup_command_freelist
> [<c02919a1>] get_pci_dev+0x31/0x50
?? probably stale
> [<c0291df2>] 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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: eata irq abuse (was: Re: Linux 2.5.60)
2003-02-11 17:45 eata irq abuse (was: Re: Linux 2.5.60) Manfred Spraul
@ 2003-02-11 23:01 ` Zephaniah E. Hull
0 siblings, 0 replies; 5+ messages in thread
From: Zephaniah E. Hull @ 2003-02-11 23:01 UTC (permalink / raw)
To: Manfred Spraul; +Cc: linux-kernel, linux-scsi, linux-eata
[-- Attachment #1: Type: text/plain, Size: 780 bytes --]
On Tue, Feb 11, 2003 at 06:45:35PM +0100, Manfred Spraul wrote:
> >[<c0291df2>] port_detect+0x3c2/0xe50
>
> Do you have an eata scsi controller?
Yes I do, does exactly what I need most of the time.
The problem goes away if I compile SCSI as modules, however it happens
when I try to load the modules, so..
Anything I can do to help?
Zephaniah E. Hull.
--
1024D/E65A7801 Zephaniah E. Hull <warp@babylon.d2dc.net>
92ED 94E4 B1E6 3624 226D 5727 4453 008B E65A 7801
CCs of replies from mailing lists are requested.
"This system operates under martial law. The constitution is suspended. You
have no rights except as declared by the area commander. Violators will be
shot. Repeat violators will be repeatedly shot...." -from "A_W_O_L"
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: eata irq abuse (was: Re: Linux 2.5.60)
2003-02-12 15:28 ` Jeff Garzik
@ 2003-02-12 16:03 ` Jeff Garzik
0 siblings, 0 replies; 5+ messages in thread
From: Jeff Garzik @ 2003-02-12 16:03 UTC (permalink / raw)
To: Ballabio_Dario; +Cc: manfred, warp, linux-kernel, linux-scsi, linux-eata
Jeff Garzik wrote:
> Ballabio_Dario@emc.com wrote:
>
>> Yes, you are correct. I used spin_unlock in order to release the local
>> driver lock
>> during the scsi_register call, but I forgot that I had the irq
>> disabled as
>> well.
>> SO the correct fix is to use spin_unlock_irq/spin_lock_irq around the
>> scsi_register call. Same fix applies to the u14-34f driver.
>
> scsi_register may want to sleep, so that is not a fix at all...
Ooops, I missed the order. You (and Manfred) are right,
unlock-register-lock is desired.
ENOCAFFEINE, I plead...
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: eata irq abuse (was: Re: Linux 2.5.60)
2003-02-12 10:08 Ballabio_Dario
@ 2003-02-12 15:28 ` Jeff Garzik
2003-02-12 16:03 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2003-02-12 15:28 UTC (permalink / raw)
To: Ballabio_Dario; +Cc: manfred, warp, linux-kernel, linux-scsi, linux-eata
Ballabio_Dario@emc.com wrote:
> Yes, you are correct. I used spin_unlock in order to release the local
> driver lock
> during the scsi_register call, but I forgot that I had the irq disabled as
> well.
> SO the correct fix is to use spin_unlock_irq/spin_lock_irq around the
> scsi_register call. Same fix applies to the u14-34f driver.
scsi_register may want to sleep, so that is not a fix at all...
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: eata irq abuse (was: Re: Linux 2.5.60)
@ 2003-02-12 10:08 Ballabio_Dario
2003-02-12 15:28 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Ballabio_Dario @ 2003-02-12 10:08 UTC (permalink / raw)
To: manfred, warp; +Cc: linux-kernel, linux-scsi, linux-eata
Yes, you are correct. I used spin_unlock in order to release the local
driver lock
during the scsi_register call, but I forgot that I had the irq disabled as
well.
SO the correct fix is to use spin_unlock_irq/spin_lock_irq around the
scsi_register call. Same fix applies to the u14-34f driver.
Cheers,
*********************************
Ph.D. Dario Ballabio
EMC Computer Systems Italia spa
Mobile phone +393487978851
Office phone +390244571315
Mobile fax +393487951622
*** Si vis pacem, para bellum ***
-----Original Message-----
From: Manfred Spraul [mailto:manfred@colorfullife.com]
Sent: Tuesday, February 11, 2003 6:46 PM
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)
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:
> [<c014a3b3>] 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.
> [<c014a300>] do_ccpupdate_local+0x0/0x30
> [<c014a5c1>] enable_cpucache+0x51/0x80
> [<c0148ea5>] 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();
> [<c0285dd2>] scsi_setup_command_freelist+0xa2/0x130
calls kmem_cache_create()
> [<c02887e0>] scsi_register+0x3c0/0x660
calls scsi_setup_command_freelist
> [<c02919a1>] get_pci_dev+0x31/0x50
?? probably stale
> [<c0291df2>] 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
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-02-12 15:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-11 17:45 eata irq abuse (was: Re: Linux 2.5.60) Manfred Spraul
2003-02-11 23:01 ` Zephaniah E. Hull
2003-02-12 10:08 Ballabio_Dario
2003-02-12 15:28 ` Jeff Garzik
2003-02-12 16:03 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).