Re: v2.6.20-rt1, yum/rpm

From: Michal Piotrowski
Date: Mon Feb 05 2007 - 16:30:50 EST


Ingo Molnar napisaÅ(a):
> * Michal Piotrowski <michal.k.k.piotrowski@xxxxxxxxx> wrote:
>
>> It looks like a bug to me
>>
>> BUG: MAX_LOCKDEP_ENTRIES too low!
>> turning off the locking correctness validator.
>
> hm, the patch below should solve this.

Lockdep works. Thanks!

2.6.20-rt2

======================================================
[ INFO: hard-safe -> hard-unsafe lock order detected ]
[ 2.6.20-rt2 #2
------------------------------------------------------
softirq-timer/0/5 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
(console_sem.lock){--..}, at: [<c0311981>] rt_mutex_slowunlock+0xc/0x5b

and this task is already holding:
(xtime_lock){+...}, at: [<c012a8b8>] run_timer_softirq+0x47/0x9ad
which would create a new lock dependency:
(xtime_lock){+...} -> (console_sem.lock){--..}

but this new dependency connects a hard-irq-safe lock:
(xtime_lock){+...}
... which became hard-irq-safe at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c013a654>] tick_periodic+0x15/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c0312e57>] __spin_unlock_irqrestore+0x42/0x59
[<c0156075>] setup_irq+0x170/0x1e0
[<c04907e4>] time_init_hook+0x19/0x1b
[<c0488d87>] hpet_time_init+0xd/0xf
[<c0485667>] start_kernel+0x271/0x42a
[<ffffffff>] 0xffffffff

to a hard-irq-unsafe lock:
(console_sem.lock){--..}
... which became hard-irq-unsafe at:
... [<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d6f1>] trace_hardirqs_on+0x10d/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

other info that might help us debug this:

1 lock held by softirq-timer/0/5:
#0: (xtime_lock){+...}, at: [<c012a8b8>] run_timer_softirq+0x47/0x9ad

the hard-irq-safe lock's dependencies:
-> (xtime_lock){+...} ops: 7875 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c04916fb>] timekeeping_init+0x25/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c013a654>] tick_periodic+0x15/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c0312e57>] __spin_unlock_irqrestore+0x42/0x59
[<c0156075>] setup_irq+0x170/0x1e0
[<c04907e4>] time_init_hook+0x19/0x1b
[<c0488d87>] hpet_time_init+0xd/0xf
[<c0485667>] start_kernel+0x271/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046bb18>] xtime_lock+0x18/0x80
-> (clocksource_lock){....} ops: 3800 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0138c4b>] clocksource_get_next+0xd/0x43
[<c049170b>] timekeeping_init+0x35/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046bd94>] clocksource_lock+0x14/0x80
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0138c4b>] clocksource_get_next+0xd/0x43
[<c049170b>] timekeeping_init+0x35/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff

-> (logbuf_lock){....} ops: 1544 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c012273c>] release_console_sem+0x3c/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0485456>] start_kernel+0x60/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046b694>] logbuf_lock+0x14/0x80
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c012273c>] release_console_sem+0x3c/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c012aee1>] run_timer_softirq+0x670/0x9ad
[<c0127689>] ksoftirqd+0x121/0x205
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff


the hard-irq-unsafe lock's dependencies:
-> (console_sem.lock){--..} ops: 829 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0311981>] rt_mutex_slowunlock+0xc/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0485456>] start_kernel+0x60/0x42a
[<ffffffff>] 0xffffffff
softirq-on-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d709>] trace_hardirqs_on+0x125/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
hardirq-on-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d6f1>] trace_hardirqs_on+0x10d/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c043c318>] console_sem+0x18/0x60
-> ((raw_spinlock_t *)(&p->pi_lock)){....} ops: 706 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011c7a5>] sched_setscheduler+0x13f/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c0491d70>] posix_cpu_thread_init+0x1c/0x3c
[<c01003fa>] init+0x4d/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c04cc06c>] __key.24574+0x0/0x8
-> (&rq->rq_lock_key){+...} ops: 29636 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0490c3e>] sched_init+0x1a9/0x1b0
[<c0485516>] start_kernel+0x120/0x42a
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b21f>] task_running_tick+0x2a/0x23d
[<c011e849>] scheduler_tick+0x92/0xee
[<c012b88a>] update_process_times+0x3e/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c013e740>] lock_acquire+0x7a/0x82
[<c0312430>] rt_read_lock+0x2b/0x69
[<c0120925>] copy_process+0x6cc/0x136b
[<c0121e43>] fork_idle+0x3f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c60686cc>] 0xc60686cc
-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b029>] double_rq_lock+0x33/0x37
[<c011b8ab>] __migrate_task+0x58/0x131
[<c011eb9f>] migration_thread+0x196/0x1e5
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011c7c3>] sched_setscheduler+0x15d/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c0491d70>] posix_cpu_thread_init+0x1c/0x3c
[<c01003fa>] init+0x4d/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011c7c3>] sched_setscheduler+0x15d/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c012ec53>] notifier_call_chain+0x20/0x31
[<c012ec80>] raw_notifier_call_chain+0x8/0xa
[<c0144569>] _cpu_up+0x3d/0xbf
[<c0144611>] cpu_up+0x26/0x38
[<c010043e>] init+0x91/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c0143055>] task_blocks_on_rt_mutex+0x25/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c014281e>] wakeup_next_waiter+0x1d9/0x1e1
[<c03119b8>] rt_mutex_slowunlock+0x43/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0288c89>] usb_register_driver+0xa3/0xeb
[<c049c440>] usb_usual_init+0xf/0x29
[<c01004df>] init+0x132/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff


stack backtrace:
[<c01041a3>] dump_trace+0x63/0x1eb
[<c0104348>] show_trace_log_lvl+0x1d/0x3a
[<c0104a23>] show_trace+0x12/0x14
[<c0104ab6>] dump_stack+0x16/0x18
[<c013da8f>] check_usage+0x241/0x24b
[<c013e451>] __lock_acquire+0x91f/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0311981>] rt_mutex_slowunlock+0xc/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c012aee1>] run_timer_softirq+0x670/0x9ad
[<c0127689>] ksoftirqd+0x121/0x205
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
=======================
---------------------------
| preempt count: 00000003 ]
| 3-level deep critical section nesting:
----------------------------------------
.. [<c03127b1>] .... __spin_lock+0x13/0x42
.....[<c012a8b8>] .. ( <= run_timer_softirq+0x47/0x9ad)
.. [<c0144017>] .... rt_up+0x10/0x45
.....[<c0122870>] .. ( <= release_console_sem+0x170/0x1c5)
.. [<c0312a1e>] .... __spin_lock_irqsave+0x1c/0x4e
.....[<c0311981>] .. ( <= rt_mutex_slowunlock+0xc/0x5b)

0xc03127b1 is in __spin_lock (kernel/spinlock.c:218).
213 EXPORT_SYMBOL(__write_lock_bh);
214
215 void __lockfunc __spin_lock(raw_spinlock_t *lock)
216 {
217 preempt_disable();
218 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
219 _raw_spin_lock(lock);
220 }
221
222 EXPORT_SYMBOL(__spin_lock);

0xc012a8b8 is in run_timer_softirq (include/linux/seqlock.h:148).
143 }
144
145 static __always_inline void __write_seqlock_raw(raw_seqlock_t *sl)
146 {
147 spin_lock(&sl->lock);
148 ++sl->sequence;
149 smp_wmb();
150 }
151
152 static __always_inline void __write_sequnlock_raw(raw_seqlock_t *sl)


0xc0144017 is in rt_up (include/asm/atomic.h:189).
184 if(unlikely(boot_cpu_data.x86==3))
185 goto no_xadd;
186 #endif
187 /* Modern 486+ processor */
188 __i = i;
189 __asm__ __volatile__(
190 LOCK_PREFIX "xaddl %0, %1"
191 :"+r" (i), "+m" (v->counter)
192 : : "memory");
193 return i + __i;

0xc0122870 is in release_console_sem (kernel/printk.c:864).
859 * up only if we are in a preemptible section. We normally dont
860 * printk from non-preemptible sections so this is for the emergency
861 * case only.
862 */
863 #ifdef CONFIG_PREEMPT_RT
864 if (!in_atomic() && !irqs_disabled())
865 #endif
866 if (wake_klogd && !oops_in_progress && waitqueue_active(&log_wait))
867 wake_up_interruptible(&log_wait);
868 }

0xc0312a1e is in __spin_lock_irqsave (kernel/spinlock.c:122).
117 {
118 unsigned long flags;
119
120 local_irq_save(flags);
121 preempt_disable();
122 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
123 /*
124 * On lockdep we dont want the hand-coded irq-enable of
125 * _raw_spin_lock_flags() code, because lockdep assumes
126 * that interrupts are not re-enabled during lock-acquire:


0xc0311981 is in rt_mutex_slowunlock (kernel/rtmutex.c:1053).
1048 static void __sched
1049 rt_mutex_slowunlock(struct rt_mutex *lock)
1050 {
1051 unsigned long flags;
1052
1053 spin_lock_irqsave(&lock->wait_lock, flags);
1054
1055 debug_rt_mutex_unlock(lock);
1056
1057 rt_mutex_deadlock_account_unlock(current);

http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-config
http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-dmesg

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/