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". -=