Hello everyone

I was able to trace one lock of my BP6 board.

Both CPUs were locked in the irq_enter (arch/i386/kernel/irq.h)
while loop  - one was in the process swapper (<smp_local_timer_interrupt>)
and the second process one in (<handle_IRQ_event>)

Now I have few questions.

How many times the users of 256MB of memory do see the locks??
How hard is to lock the machine with this amount of memory??

I've just 128MB and after some havy usage of netscape I've seen
one lock with pure 2.2.15pre19 kernel.

This probably needs some skilled linux hackers to explore
how this could happen. (I have no idea so far)

Maybe there could be added some patch to check if both
CPU aren't waiting for the same global_irq_lock and
unblock one of the in case its true.
(Compiled with IKD)

here is one place: (lopping on c010da63)
> c010da28 <handle_IRQ_event>:
> c010da28:       55                      push   %ebp
> c010da29:       89 e5                   mov    %esp,%ebp
> c010da2b:       83 ec 0c                sub    $0xc,%esp
> c010da2e:       57                      push   %edi
> c010da2f:       56                      push   %esi
> c010da30:       53                      push   %ebx
> c010da31:       ba 80 05 23 c0          mov    $0xc0230580,%edx
> c010da36:       e8 d1 ea 03 00          call   c014c50c <mcount>
> c010da3b:       b8 00 e0 ff ff          mov    $0xffffe000,%eax
> c010da40:       21 e0                   and    %esp,%eax
> c010da42:       8b 7d 08                mov    0x8(%ebp),%edi
> c010da45:       8b 50 28                mov    0x28(%eax),%edx
> c010da48:       8b 5d 10                mov    0x10(%ebp),%ebx
> c010da4b:       ff 04 95 00 35 2d c0    incl   0xc02d3500(,%edx,4)
> c010da52:       f0 ff 05 08 3f 27 c0    lock incl 0xc0273f08
> c010da59:       8d 76 00                lea    0x0(%esi),%esi
> c010da5c:       a1 60 42 27 c0          mov    0xc0274260,%eax
> c010da59:       8d 76 00                lea    0x0(%esi),%esi
> c010da5c:       a1 60 42 27 c0          mov    0xc0274260,%eax
> c010da61:       a8 01                   test   $0x1,%al
> c010da63:       75 f7                   jne    c010da5c <handle_IRQ_event+0x3
  status = 1;
> c010da65:       be 01 00 00 00          mov    $0x1,%esi
> c010da6a:       c1 e2 02                shl    $0x2,%edx
> c010da6d:       89 55 fc                mov    %edx,0xfffffffc(%ebp)
> c010da70:       f6 43 07 20             testb  $0x20,0x7(%ebx)
> c010da74:       75 0a                   jne    c010da80 <handle_IRQ_event+0x58

(This is the first if in do {}while in handle_IRQ_event)

and here is the Swapper task:
> c0116c9c <smp_local_timer_interrupt>:
> ...skipping..
> c0116d2b:       8b 45 08                mov    0x8(%ebp),%eax
> c0116d2e:       21 e6                   and    %esp,%esi
> c0116d30:       f6 40 32 02             testb  $0x2,0x32(%eax)
> c0116d34:       75 06                   jne    c0116d3c <smp_local_timer_inter
> c0116d36:       f6 40 2c 03             testb  $0x3,0x2c(%eax)
> c0116d3a:       74 08                   je     c0116d44 <smp_local_timer_inter
> c0116d3c:       bf 01 00 00 00          mov    $0x1,%edi
> c0116d41:       eb 08                   jmp    c0116d4b <smp_local_timer_inter
> c0116d43:       90                      nop    
> c0116d44:       c7 45 f8 01 00 00 00    movl   $0x1,0xfffffff8(%ebp)
> c0116d4b:       ff 83 00 35 2d c0       incl   0xc02d3500(%ebx)
> c0116d51:       f0 ff 05 08 3f 27 c0    lock incl 0xc0273f08
> c0116d58:       a1 60 42 27 c0          mov    0xc0274260,%eax
> c0116d5d:       a8 01                   test   $0x1,%al
> c0116d5f:       75 f7                   jne    c0116d58 <smp_local_timer_inter


if anyone has some explanation for what's going on here
and even patch to prevent the occurence of such situation let me
know - I have few deterministic methods how to lock my computer.
(however they work with RTlinux only)

happy hacking

bye

-- 
  Zdenek Kabelac  http://i.am/kabi/ [EMAIL PROTECTED] {debian.org; fi.muni.cz}
--
=-          To unsubscribe, email [EMAIL PROTECTED] with the       -=
=-                body of "unsubscribe linux-abit".                 -=

Reply via email to