RE: [BUG?][2.6.25-mm1] sleeping during IRQ disabled

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

 



> So it's definitely in mainline, and its definitely
> not Seto-san's patch.

Here's the root of the problem (arch/ia64/kernel/entry.S):

   1175         br.call.spnt.many rp=schedule
   1176 .ret9:  cmp.eq p6,p0=r0,r0                              // p6 <- 1
   1177         rsm psr.i               // disable interrupts
   1178         ;;
   1179 #ifdef CONFIG_PREEMPT
   1180 (pKStk) adds r20=TI_PRE_COUNT+IA64_TASK_SIZE,r13
   1181         ;;
   1182 (pKStk) st4 [r20]=r0            // preempt_count() <- 0
   1183 #endif
   1184 (pLvSys)br.cond.sptk.few  .work_pending_syscall_end
   1185         br.cond.sptk.many .work_processed_kernel        // re-check
   1186 
   1187 .notify:
   1188 (pUStk) br.call.spnt.many rp=notify_resume_user

on line 1188 we call notify_resume_user() with interrupts disabled (at
least if we fall through from the code above ... I didn't check the
state of interrupts if we branch to ".notify").

So we start down this call chain to the might_sleep() check:

 [<a000000100011bf0>] show_stack+0x50/0xa0
 [<a000000100011c70>] dump_stack+0x30/0x60
 [<a000000100061a90>] __might_sleep+0x1f0/0x220
 [<a000000100709020>] down_read+0x20/0x60
 [<a0000001000fe060>] access_process_vm+0x60/0x2c0
 [<a00000010002a280>] ia64_sync_kernel_rbs+0x40/0x100
 [<a00000010002a400>] do_sync_rbs+0xc0/0x100
 [<a00000010000ac30>] unw_init_running+0x70/0xa0
 [<a00000010002a5c0>] ia64_sync_krbs+0x80/0xa0
 [<a000000100012690>] do_notify_resume_user+0x110/0x140
 [<a00000010000aac0>] notify_resume_user+0x40/0x60
 [<a00000010000a9f0>] skip_rbs_switch+0xe0/0x110
 [<a000000000010740>] __kernel_syscall_via_break+0x0/0x20
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux