lkml.org 
[lkml]   [2010]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: clocksource mutex deadlock, cat current_clocksource (2.6.33-rc6/7)
Since I'm having trouble pinpointing the reason for the issue
(after all divisor is not 0 but likely NSEC_PER_SEC,
as likely called by time.h timespec_add_ns() --> __iter_div_u64_rem()),
here comes timekeeping_forward_now in its entire glory (objdump -D vmlinux):

c104505a <timekeeping_forward_now>:
c104505a: 55 push %ebp
c104505b: 89 e5 mov %esp,%ebp
c104505d: 57 push %edi
c104505e: 56 push %esi
c104505f: 53 push %ebx
c1045060: 83 ec 18 sub $0x18,%esp
c1045063: e8 5c dc fb ff call c1002cc4 <mcount>
c1045068: 8b 1d d8 20 46 c1 mov 0xc14620d8,%ebx
c104506e: 89 d8 mov %ebx,%eax
c1045070: ff 53 10 call *0x10(%ebx)
c1045073: 8b 4b 1c mov 0x1c(%ebx),%ecx
c1045076: 89 c6 mov %eax,%esi
c1045078: 89 d7 mov %edx,%edi
c104507a: 2b 73 40 sub 0x40(%ebx),%esi
c104507d: 1b 7b 44 sbb 0x44(%ebx),%edi
c1045080: 21 f1 and %esi,%ecx
c1045082: 89 4d ec mov %ecx,-0x14(%ebp)
c1045085: 8b 73 20 mov 0x20(%ebx),%esi
c1045088: 89 43 40 mov %eax,0x40(%ebx)
c104508b: 89 53 44 mov %edx,0x44(%ebx)
c104508e: a1 08 21 46 c1 mov 0xc1462108,%eax
c1045093: 21 fe and %edi,%esi
c1045095: 8b 3d c0 20 46 c1 mov 0xc14620c0,%edi
c104509b: 89 45 e4 mov %eax,-0x1c(%ebp)
c104509e: 8b 4d e4 mov -0x1c(%ebp),%ecx
c10450a1: 8b 45 ec mov -0x14(%ebp),%eax
c10450a4: f7 65 e4 mull -0x1c(%ebp)
c10450a7: 0f af ce imul %esi,%ecx
c10450aa: 89 45 e4 mov %eax,-0x1c(%ebp)
c10450ad: 8b 45 e4 mov -0x1c(%ebp),%eax
c10450b0: 01 ca add %ecx,%edx
c10450b2: 8b 0d dc 20 46 c1 mov 0xc14620dc,%ecx
c10450b8: 89 55 e8 mov %edx,-0x18(%ebp)
c10450bb: 8b 55 e8 mov -0x18(%ebp),%edx
c10450be: 0f ad d0 shrd %cl,%edx,%eax
c10450c1: d3 ea shr %cl,%edx
c10450c3: f6 c1 20 test $0x20,%cl
c10450c6: 74 04 je c10450cc <timekeeping_forward_now+0x72>
c10450c8: 89 d0 mov %edx,%eax
c10450ca: 31 d2 xor %edx,%edx
c10450cc: 89 45 dc mov %eax,-0x24(%ebp)
c10450cf: a1 c4 20 46 c1 mov 0xc14620c4,%eax
c10450d4: 89 55 e0 mov %edx,-0x20(%ebp)
c10450d7: 99 cltd
c10450d8: 01 45 dc add %eax,-0x24(%ebp)
c10450db: 11 55 e0 adc %edx,-0x20(%ebp)
c10450de: 31 c9 xor %ecx,%ecx
c10450e0: 8b 45 dc mov -0x24(%ebp),%eax
c10450e3: 8b 55 e0 mov -0x20(%ebp),%edx
c10450e6: eb 09 jmp c10450f1 <timekeeping_forward_now+0x97>
c10450e8: 05 00 36 65 c4 add $0xc4653600,%eax
c10450ed: 83 d2 ff adc $0xffffffff,%edx
c10450f0: 41 inc %ecx
c10450f1: 83 fa 00 cmp $0x0,%edx
c10450f4: 77 f2 ja c10450e8 <timekeeping_forward_now+0x8e>
c10450f6: 3d ff c9 9a 3b cmp $0x3b9ac9ff,%eax
c10450fb: 77 eb ja c10450e8 <timekeeping_forward_now+0x8e>
c10450fd: 8b 15 0c 21 46 c1 mov 0xc146210c,%edx
c1045103: 8d 3c 39 lea (%ecx,%edi,1),%edi
c1045106: 89 3d c0 20 46 c1 mov %edi,0xc14620c0
c104510c: 31 ff xor %edi,%edi
c104510e: a3 c4 20 46 c1 mov %eax,0xc14620c4
c1045113: 89 55 e4 mov %edx,-0x1c(%ebp)
c1045116: 8b 43 24 mov 0x24(%ebx),%eax
c1045119: 31 d2 xor %edx,%edx
c104511b: 89 55 e0 mov %edx,-0x20(%ebp)
c104511e: 0f af f0 imul %eax,%esi
c1045121: 89 45 dc mov %eax,-0x24(%ebp)
c1045124: 8b 45 ec mov -0x14(%ebp),%eax
c1045127: f7 65 dc mull -0x24(%ebp)
c104512a: 01 f2 add %esi,%edx
c104512c: 8b 35 10 21 46 c1 mov 0xc1462110,%esi
c1045132: 89 45 ec mov %eax,-0x14(%ebp)
c1045135: 8b 45 ec mov -0x14(%ebp),%eax
c1045138: 89 55 f0 mov %edx,-0x10(%ebp)
c104513b: 8b 4b 28 mov 0x28(%ebx),%ecx
c104513e: 8b 55 f0 mov -0x10(%ebp),%edx
c1045141: 0f ad d0 shrd %cl,%edx,%eax
c1045144: d3 ea shr %cl,%edx
c1045146: f6 c1 20 test $0x20,%cl
c1045149: 0f 45 c2 cmovne %edx,%eax
c104514c: 0f 45 d7 cmovne %edi,%edx
c104514f: 89 c1 mov %eax,%ecx
c1045151: 89 f7 mov %esi,%edi
c1045153: 8b 45 e4 mov -0x1c(%ebp),%eax
c1045156: 89 d3 mov %edx,%ebx
c1045158: c1 ff 1f sar $0x1f,%edi
c104515b: 01 f1 add %esi,%ecx
c104515d: 11 fb adc %edi,%ebx
c104515f: 31 d2 xor %edx,%edx
c1045161: eb 0a jmp c104516d <timekeeping_forward_now+0x113>
c1045163: 81 c1 00 36 65 c4 add $0xc4653600,%ecx
c1045169: 83 d3 ff adc $0xffffffff,%ebx
c104516c: 42 inc %edx
c104516d: 83 fb 00 cmp $0x0,%ebx
c1045170: 77 f1 ja c1045163 <timekeeping_forward_now+0x109>
c1045172: 81 f9 ff c9 9a 3b cmp $0x3b9ac9ff,%ecx
c1045178: 77 e9 ja c1045163 <timekeeping_forward_now+0x109>
c104517a: 89 45 e4 mov %eax,-0x1c(%ebp)
c104517d: 8d 04 02 lea (%edx,%eax,1),%eax
c1045180: a3 0c 21 46 c1 mov %eax,0xc146210c
c1045185: 89 0d 10 21 46 c1 mov %ecx,0xc1462110
c104518b: 83 c4 18 add $0x18,%esp
c104518e: 5b pop %ebx
c104518f: 5e pop %esi
c1045190: 5f pop %edi
c1045191: 5d pop %ebp
c1045192: c3 ret


Note that I got a gcc 4.4 (4.4.2) upgrade, but the problems also occurred
at least one build earlier (i.e. with 4.3.4 as standard compiler),
as also confirmed by the dpkg installation log and the kernel package timestamp.



Plus I'm still wondering how - if it got stuck during boot with an
excessively tough division and NMI watchdog triggered -
then later in userspace clocksource_mutex was still stuck.

And I need to point at nmi_watchdog=2 again, with the CPU being lapic
capable but the BIOS not so much, AFAIR.

Thanks for the very responsive help!

Andreas Mohr


\
 
 \ /
  Last update: 2010-02-08 21:41    [W:0.083 / U:0.368 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site