Re: RT and pci_lock while reading or writing pci bus configuration.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



lundi 20 Février 2006 20:45, Thomas Gleixner wrote/a écrit :
> On Mon, 2006-02-20 at 15:42 +0100, Serge Noiraud wrote:
> > Hi,
> > I have one question :
> > In drivers/pci/access.c we have a global lock for pci configuration access.
> > In pci_bus_read_config_* or pci_bus_write_config_* functions, we acquire a lock.
> > When we call spin_lock_irqsave, we obtain the following message :
> > BUG: scheduling while atomic: IRQ 137/0x00000001/6431
> > caller is schedule+0x43/0x120
> >  [<c01050ec>] dump_stack+0x1c/0x20 (20)
> >  [<c03e7144>] __schedule+0xf44/0x1240 (236)
> >  [<c03e7483>] schedule+0x43/0x120 (12)
> >  [<c03e855b>] __down_mutex+0x2bb/0x5f0 (112)
> >  [<c03ea08c>] _spin_lock_irqsave+0x1c/0x40 (24)
> >  [<c023670d>] pci_bus_read_config_word+0x2d/0x70 (24)
> >  
> > Do I miss something or is it a BUG ?
> 
> Yeah, you missed to paste the full backtrace :)
OK! OK! don't flame me ! 
The process causing this is X when I switch from VT7 to VT1
and the driver is nvidia. I have some trouble with this driver with the RT patch.
and I need it for GL because the nv GPL driver don't do that.
nvidia version : 8178

here is the complete trace :

nvidia: module license 'NVIDIA' taints kernel.
PCI: Setting latency timer of device 0000:40:00.0 to 64
NVRM: loading NVIDIA Linux x86 NVIDIA Kernel Module  1.0-8178  Wed Dec 14 16:22:51 PST 2005
BUG: scheduling while atomic: IRQ 137/0x00000001/6431
caller is schedule+0x43/0x120
 [<c01050ec>] dump_stack+0x1c/0x20 (20)
 [<c03e7144>] __schedule+0xf44/0x1240 (236)
 [<c03e7483>] schedule+0x43/0x120 (12)
 [<c03e855b>] __down_mutex+0x2bb/0x5f0 (112)
 [<c03ea08c>] _spin_lock_irqsave+0x1c/0x40 (24)
 [<c023670d>] pci_bus_read_config_word+0x2d/0x70 (24)
 [<f91cd909>] nv_verify_pci_config+0x3a/0xd2 [nvidia] (40)
 [<f8fae32c>] rm_set_interrupts+0x114/0x144 [nvidia] (48)
 [<f91d1dc3>] os_cond_acquire_sema+0x3a/0x5b [nvidia] (24)
 [<f8fa68ea>] _nv002338rm+0x12/0x18 [nvidia] (32)
 [<f8faa355>] _nv001650rm+0x18d/0x250 [nvidia] (80)
 [<f8faa101>] _nv001647rm+0x51/0x70 [nvidia] (48)
 [<f8fae5c7>] rm_isr+0x3b/0x4c [nvidia] (48)
 [<f91cf726>] nv_kern_isr+0x29/0x65 [nvidia] (36)
 [<c015dcb3>] handle_IRQ_event+0x73/0x110 (52)
 [<c015eb49>] thread_edge_irq+0x59/0xf0 (24)
 [<c015ec16>] do_hardirq+0x36/0x80 (20)
 [<c015ed58>] do_irqd+0xf8/0x1b0 (28)
 [<c0142c48>] kthread+0x98/0xd0 (40)
 [<c0101335>] kernel_thread_helper+0x5/0x10 (164118556)
------------------------------
| showing all locks held by: |  (IRQ 137/6431 [f7e471a0,  61]):
------------------------------

#001:             [c04d3f60] {pci_lock}
... acquired at:               pci_bus_read_config_word+0x2d/0x70

softirq-tasklet/8[CPU#0]: BUG in ____up_mutex at kernel/rt.c:1592
 [<c01050ec>] dump_stack+0x1c/0x20 (20)
 [<c012a7c8>] __WARN_ON+0x48/0x60 (40)
 [<c014a8c8>] rt_up+0x298/0x2f0 (40)
 [<f91d1e1f>] os_release_sema+0x3b/0x47 [nvidia] (16)
 [<f8fa6902>] _nv002251rm+0x12/0x18 [nvidia] (32)
 [<f8faa1bc>] _nv001646rm+0x9c/0xa8 [nvidia] (64)
 [<f8fae63a>] rm_isr_bh+0x62/0x74 [nvidia] (48)
 [<f91cf77c>] nv_kern_isr_bh+0x1a/0x1f [nvidia] (24)
 [<c01320bd>] tasklet_action+0x5d/0x110 (28)
 [<c0132453>] ksoftirqd+0x133/0x1e0 (48)
 [<c0142c48>] kthread+0x98/0xd0 (40)
 [<c0101335>] kernel_thread_helper+0x5/0x10 (1003331612)
BUG: scheduling while atomic: X/0x00000001/6390
caller is schedule+0x43/0x120
 [<c01050ec>] dump_stack+0x1c/0x20 (20)
 [<c03e7144>] __schedule+0xf44/0x1240 (236)
 [<c03e7483>] schedule+0x43/0x120 (12)
 [<c03e855b>] __down_mutex+0x2bb/0x5f0 (112)
 [<c03ea08c>] _spin_lock_irqsave+0x1c/0x40 (24)
 [<c023670d>] pci_bus_read_config_word+0x2d/0x70 (24)
 [<f91cd909>] nv_verify_pci_config+0x3a/0xd2 [nvidia] (40)
 [<f8fae32c>] rm_set_interrupts+0x114/0x144 [nvidia] (48)
 [<f91d1d68>] os_acquire_sema+0x3f/0x60 [nvidia] (24)
 [<f8fa68d2>] _nv002346rm+0x12/0x18 [nvidia] (32)
 [<f8f8b1d9>] _nv003158rm+0x4d/0xc8 [nvidia] (64)
 [<f8faf90b>] _nv001649rm+0x30b/0x5d0 [nvidia] (64)
 [<f8fae66f>] rm_ioctl+0x23/0x38 [nvidia] (48)
 [<f91cf696>] nv_kern_ioctl+0x2a7/0x2ef [nvidia] (48)
 [<c019cf8d>] do_ioctl+0x4d/0x80 (36)
 [<c019d138>] vfs_ioctl+0x58/0x1c0 (40)
 [<c019d342>] sys_ioctl+0xa2/0x900 (208)
 [<c0103aa8>] sysenter_past_esp+0x61/0x89 (-8116)

<- Here, the system is frozen.

I'll try -rt17.

> 
> Preempt count is 1, so you are calling pci_bus_read_config_word() from a
> non preemptible context.
> 
> 	tglx

-- 
Serge Noiraud
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux