[lkml]   [2010]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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.032 / U:63.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site