[parisc-linux] Re:[parisc-linux-cvs] linux-2.6 kyle
Joel Soete
soete.joel at tiscali.be
Mon Aug 7 11:04:51 MDT 2006
> On Mon, 2006-08-07 at 12:32 +0200, Joel Soete wrote:
> > Oops my bad: I forgot the raw data, here there are
>
> Thanks, that's still not quite enough to say what they were doing at the
> time.
>
> cpu0 ioaq is 10104c90 10104c94
> cpu1 ioaq is 1024a1a4 1024a18c
>
> Could you do me the disassembly from the entry symbol down into each of
> these so I can try to figure out where they're stuck? (Your prior
> disassembly ends just a bit short).
>
No pb:
CPU#0 is runing:
as from System.map:
[snip]
10104c88 T __sched_text_end
10104c88 T generic__raw_read_trylock
10104cc0 T _spin_trylock
[snip]
# objdump -d --start 0x10104c88 --stop 0x10104cc0 vmlinux
vmlinux: file format elf32-hppa-linux
Disassembly of section .text:
10104c88 <generic__raw_read_trylock>:
10104c88: 0f 40 15 dc ldcw,co 0(r26),ret0
10104c8c: 8f 80 20 2a cmpib,<>,n 0,ret0,10104ca8
<generic__raw_read_trylock+0x20>
10104c90: 0f 40 10 9c ldw 0(r26),ret0
10104c94: 8f 80 3f dd cmpib,<> 0,ret0,10104c88
<generic__raw_read_trylock>
10104c98: 08 00 02 40 nop
10104c9c: 08 00 02 40 nop
10104ca0: 08 00 02 40 nop
10104ca4: e8 1f 1f cf b,l,n 10104c90 <generic__raw_read_trylock+0x8>,r0
10104ca8: 0f 48 10 9c ldw 4(r26),ret0
10104cac: 37 9c 00 02 ldo 1(ret0),ret0
10104cb0: 0f 5c 12 88 stw ret0,4(r26)
10104cb4: 34 1c 00 02 ldi 1,ret0
10104cb8: 0f 5c 12 80 stw ret0,0(r26)
10104cbc: e8 40 d0 02 bve,n (rp)
Disassembly of section .init.text:
Disassembly of section .exit.text:
called by:
10249e00 <_raw_read_lock>:
10249e00: 6b c2 3f d9 stw rp,-14(sp)
10249e04: 23 98 cb d5 ldil L%-21510000,ret0
10249e08: 37 9c 3d da ldo 1eed(ret0),ret0
10249e0c: 6f c8 01 00 stw,ma r8,80(sp)
10249e10: 6b c5 3f 19 stw r5,-74(sp)
10249e14: 6b c7 3f 09 stw r7,-7c(sp)
10249e18: 6b c6 3f 11 stw r6,-78(sp)
10249e1c: 6b c4 3f 21 stw r4,-70(sp)
10249e20: 6b c3 3f 29 stw r3,-6c(sp)
10249e24: 0f 50 10 93 ldw 8(r26),r19
10249e28: 8a 7c 22 30 cmpb,<> ret0,r19,10249f48 <_raw_read_lock+0x148>
10249e2c: 08 1a 02 45 copy r26,r5
10249e30: 08 05 02 5a copy r5,r26
10249e34: eb 5d bc 99 b,l 10104c88 <generic__raw_read_trylock>,rp
10249e38: 34 06 00 02 ldi 1,r6
10249e3c: 2b 60 00 00 addil L%0,dp,r1
10249e40: 87 80 20 b8 cmpib,= 0,ret0,10249ea4 <_raw_read_lock+0xa4>
10249e44: 08 01 02 47 copy r1,r7
10249e48: 4b c2 3e d9 ldw -94(sp),rp
10249e4c: 4b c7 3f 09 ldw -7c(sp),r7
10249e50: 4b c6 3f 11 ldw -78(sp),r6
10249e54: 4b c5 3f 19 ldw -74(sp),r5
10249e58: 4b c4 3f 21 ldw -70(sp),r4
10249e5c: 4b c3 3f 29 ldw -6c(sp),r3
10249e60: e8 40 d0 00 bve (rp)
10249e64: 4f c8 3f 01 ldw,mb -80(sp),r8
10249e68: 03 c0 08 bc mfctl tr6,ret0
10249e6c: 03 c0 08 b3 mfctl tr6,r19
10249e70: 03 c0 08 b4 mfctl tr6,r20
10249e74: 23 58 c2 06 ldil L%103f0000,r26
10249e78: 4b 99 00 20 ldw 10(ret0),r25
10249e7c: 0e 60 10 98 ldw 0(r19),r24
10249e80: 37 5a 0b c0 ldo 5e0(r26),r26
10249e84: 0e 80 10 9c ldw 0(r20),ret0
10249e88: 37 18 03 18 ldo 18c(r24),r24
10249e8c: 4b 97 01 50 ldw a8(ret0),r23
10249e90: 34 06 00 00 ldi 0,r6
10249e94: eb 71 bc 75 b,l 1012dcd4 <printk>,rp
10249e98: 6b c5 3f 99 stw r5,-34(sp)
10249e9c: eb 5f a7 01 b,l 10108224 <dump_stack>,rp
10249ea0: 08 00 02 40 nop
10249ea4: 48 f3 01 18 ldw 8c(r7),r19
10249ea8: 34 03 00 00 ldi 0,r3
10249eac: 34 04 00 00 ldi 0,r4
10249eb0: d7 93 08 a5 depw,z r19,26,27,ret0
10249eb4: 0a 7c 04 3c sub ret0,r19,ret0
10249eb8: 0a 7c 0a b3 shladd,l ret0,2,r19,r19
10249ebc: d6 73 08 63 depw,z r19,28,29,r19
10249ec0: 86 60 20 d0 cmpib,= 0,r19,10249f30 <_raw_read_lock+0x130>
10249ec4: 34 08 00 02 ldi 1,r8
10249ec8: eb 5d bb 71 b,l 10104c88 <generic__raw_read_trylock>,rp
10249ecc: 08 05 02 5a copy r5,r26
10249ed0: 8f 80 3e e5 cmpib,<> 0,ret0,10249e48 <_raw_read_lock+0x48>
10249ed4: 08 08 02 5c copy r8,ret0
10249ed8: 34 00 00 34 ldi 1a,r0
10249edc: 34 00 00 34 ldi 1a,r0
10249ee0: 34 00 00 34 ldi 1a,r0
10249ee4: 34 00 00 34 ldi 1a,r0
10249ee8: 34 00 00 34 ldi 1a,r0
10249eec: 34 00 00 34 ldi 1a,r0
10249ef0: 34 00 00 34 ldi 1a,r0
10249ef4: 34 00 00 34 ldi 1a,r0
10249ef8: 34 00 00 34 ldi 1a,r0
10249efc: 34 00 00 34 ldi 1a,r0
10249f00: af 9f 9f f5 addib,uv -1,ret0,10249f00 <_raw_read_lock+0x100>
10249f04: 08 00 02 40 nop
10249f08: 48 fc 01 18 ldw 8c(r7),ret0
10249f0c: d6 7c 08 a5 depw,z ret0,26,27,r19
10249f10: 0b 93 04 33 sub r19,ret0,r19
10249f14: b4 84 00 02 addi 1,r4,r4
10249f18: 08 03 07 03 add,c r3,r0,r3
10249f1c: 0b 93 0a bc shladd,l r19,2,ret0,ret0
10249f20: 34 13 00 00 ldi 0,r19
10249f24: 82 63 9f 3d cmpb,<< r3,r19,10249ec8 <_raw_read_lock+0xc8>
10249f28: d7 9c 08 63 depw,z ret0,28,29,ret0
10249f2c: 82 63 20 12 cmpb,=,n r3,r19,10249f3c <_raw_read_lock+0x13c>
10249f30: 84 c0 3e e5 cmpib,= 0,r6,10249ea8 <_raw_read_lock+0xa8>
10249f34: 48 f3 01 18 ldw 8c(r7),r19
10249f38: e8 1f 1e 57 b,l,n 10249e68 <_raw_read_lock+0x68>,r0
10249f3c: 83 84 9f 0d cmpb,<< r4,ret0,10249ec8 <_raw_read_lock+0xc8>
10249f40: 08 00 02 40 nop
10249f44: e8 1f 1f cf b,l,n 10249f30 <_raw_read_lock+0x130>,r0
10249f48: 23 38 c2 06 ldil L%103f0000,r25
10249f4c: eb ff b6 ad b,l 10249aa8 <rwlock_bug>,rp
10249f50: 37 39 0a 78 ldo 53c(r25),r25
10249f54: e8 1f 1d b5 b,l 10249e34 <_raw_read_lock+0x34>,r0
10249f58: 08 05 02 5a copy r5,r26
...
Disassembly of section .init.text:
Disassembly of section .exit.text:
the same way for CPU#1:
System.map ==>
[snip]
10249f80 T _raw_spin_lock
1024a140 T _raw_write_lock
1024a340 T plist_add
[snip]
1024a140 <_raw_write_lock>:
1024a140: 6b c2 3f d9 stw rp,-14(sp)
1024a144: 23 98 cb d5 ldil L%-21510000,ret0
1024a148: 37 9c 3d da ldo 1eed(ret0),ret0
1024a14c: 6f c4 00 80 stw,ma r4,40(sp)
1024a150: 6b c3 3f 89 stw r3,-3c(sp)
1024a154: 0f 50 10 93 ldw 8(r26),r19
1024a158: 8a 7c 21 48 cmpb,<> ret0,r19,1024a204 <_raw_write_lock+0xc4>
1024a15c: 08 1a 02 43 copy r26,r3
1024a160: 48 7c 00 20 ldw 10(r3),ret0
1024a164: 03 c0 08 b3 mfctl tr6,r19
1024a168: 0e 60 10 94 ldw 0(r19),r20
1024a16c: 83 94 20 f2 cmpb,=,n r20,ret0,1024a1ec <_raw_write_lock+0xac>
1024a170: 0c 78 10 9c ldw c(r3),ret0
1024a174: 03 c0 08 b3 mfctl tr6,r19
1024a178: 4a 74 00 20 ldw 10(r19),r20
1024a17c: 83 94 20 b0 cmpb,= r20,ret0,1024a1dc <_raw_write_lock+0x9c>
1024a180: 23 38 c2 06 ldil L%103f0000,r25
1024a184: 0c 60 15 dc ldcw,co 0(r3),ret0
1024a188: 8f 80 20 2a cmpib,<>,n 0,ret0,1024a1a4 <_raw_write_lock+0x64>
1024a18c: 0c 60 10 9c ldw 0(r3),ret0
1024a190: 8f 80 3f dd cmpib,<> 0,ret0,1024a184 <_raw_write_lock+0x44>
1024a194: 08 00 02 40 nop
1024a198: 08 00 02 40 nop
1024a19c: 08 00 02 40 nop
1024a1a0: e8 1f 1f cf b,l,n 1024a18c <_raw_write_lock+0x4c>,r0
1024a1a4: 0c 68 10 9c ldw 4(r3),ret0
1024a1a8: 8f 80 20 d0 cmpib,<> 0,ret0,1024a218 <_raw_write_lock+0xd8>
1024a1ac: 34 1c 3f ff ldi -1,ret0
1024a1b0: 0c 7c 12 88 stw ret0,4(r3)
1024a1b4: 03 c0 08 bc mfctl tr6,ret0
1024a1b8: 4b 93 00 20 ldw 10(ret0),r19
1024a1bc: 0c 73 12 98 stw r19,c(r3)
1024a1c0: 03 c0 08 bc mfctl tr6,ret0
1024a1c4: 0f 80 10 93 ldw 0(ret0),r19
1024a1c8: 68 73 00 20 stw r19,10(r3)
1024a1cc: 4b c2 3f 59 ldw -54(sp),rp
1024a1d0: 4b c3 3f 89 ldw -3c(sp),r3
1024a1d4: e8 40 d0 00 bve (rp)
1024a1d8: 4f c4 3f 81 ldw,mb -40(sp),r4
1024a1dc: 08 03 02 5a copy r3,r26
1024a1e0: eb ff b1 85 b,l 10249aa8 <rwlock_bug>,rp
1024a1e4: 37 39 0c 20 ldo 610(r25),r25
1024a1e8: e8 1f 1f 2f b,l,n 1024a184 <_raw_write_lock+0x44>,r0
1024a1ec: 23 38 c2 06 ldil L%103f0000,r25
1024a1f0: 08 03 02 5a copy r3,r26
1024a1f4: eb ff b1 5d b,l 10249aa8 <rwlock_bug>,rp
1024a1f8: 37 39 0c 28 ldo 614(r25),r25
1024a1fc: e8 1f 1e e5 b,l 1024a174 <_raw_write_lock+0x34>,r0
1024a200: 0c 78 10 9c ldw c(r3),ret0
1024a204: 23 38 c2 06 ldil L%103f0000,r25
1024a208: eb ff b1 35 b,l 10249aa8 <rwlock_bug>,rp
1024a20c: 37 39 0a 78 ldo 53c(r25),r25
1024a210: e8 1f 1e 9d b,l 1024a164 <_raw_write_lock+0x24>,r0
1024a214: 48 7c 00 20 ldw 10(r3),ret0
1024a218: 34 1c 00 02 ldi 1,ret0
1024a21c: 0c 7c 12 80 stw ret0,0(r3)
1024a220: 2b 60 00 00 addil L%0,dp,r1
1024a224: 08 1c 02 5d copy ret0,ret1
1024a228: 08 01 02 44 copy r1,r4
1024a22c: 48 93 01 18 ldw 8c(r4),r19
1024a230: 34 15 00 00 ldi 0,r21
1024a234: 34 16 00 00 ldi 0,r22
1024a238: d7 93 08 a5 depw,z r19,26,27,ret0
1024a23c: 0a 7c 04 3c sub ret0,r19,ret0
1024a240: 0a 7c 0a b3 shladd,l ret0,2,r19,r19
1024a244: d6 73 08 63 depw,z r19,28,29,r19
1024a248: 86 60 21 50 cmpib,= 0,r19,1024a2f8 <_raw_write_lock+0x1b8>
1024a24c: 34 1f 00 02 ldi 1,r31
1024a250: 0c 60 15 dc ldcw,co 0(r3),ret0
1024a254: 8f 80 20 2a cmpib,<>,n 0,ret0,1024a270 <_raw_write_lock+0x130>
1024a258: 0c 60 10 9c ldw 0(r3),ret0
1024a25c: 8f 80 3f dd cmpib,<> 0,ret0,1024a250 <_raw_write_lock+0x110>
1024a260: 08 00 02 40 nop
1024a264: 08 00 02 40 nop
1024a268: 08 00 02 40 nop
1024a26c: e8 1f 1f cf b,l,n 1024a258 <_raw_write_lock+0x118>,r0
1024a270: 0c 68 10 9c ldw 4(r3),ret0
1024a274: 87 80 3e 6f cmpib,=,n 0,ret0,1024a1b0 <_raw_write_lock+0x70>
1024a278: 34 1c 3f ff ldi -1,ret0
1024a27c: 0c 7f 12 80 stw r31,0(r3)
1024a280: 08 1f 02 5c copy r31,ret0
1024a284: 34 00 00 34 ldi 1a,r0
1024a288: 34 00 00 34 ldi 1a,r0
1024a28c: 34 00 00 34 ldi 1a,r0
1024a290: 34 00 00 34 ldi 1a,r0
1024a294: 34 00 00 34 ldi 1a,r0
1024a298: 34 00 00 34 ldi 1a,r0
1024a29c: 34 00 00 34 ldi 1a,r0
1024a2a0: 34 00 00 34 ldi 1a,r0
1024a2a4: 34 00 00 34 ldi 1a,r0
1024a2a8: 34 00 00 34 ldi 1a,r0
1024a2ac: 34 00 00 34 ldi 1a,r0
1024a2b0: 34 00 00 34 ldi 1a,r0
1024a2b4: 34 00 00 34 ldi 1a,r0
1024a2b8: 34 00 00 34 ldi 1a,r0
1024a2bc: 34 00 00 34 ldi 1a,r0
1024a2c0: af 9f 9f f5 addib,uv -1,ret0,1024a2c0 <_raw_write_lock+0x180>
1024a2c4: 08 00 02 40 nop
1024a2c8: 48 9c 01 18 ldw 8c(r4),ret0
1024a2cc: d6 7c 08 a5 depw,z ret0,26,27,r19
1024a2d0: 0b 93 04 33 sub r19,ret0,r19
1024a2d4: b6 d6 00 02 addi 1,r22,r22
1024a2d8: 08 15 07 15 add,c r21,r0,r21
1024a2dc: 0b 93 0a bc shladd,l r19,2,ret0,ret0
1024a2e0: 34 13 00 00 ldi 0,r19
1024a2e4: 82 75 9e cd cmpb,<< r21,r19,1024a250 <_raw_write_lock+0x110>
1024a2e8: d7 9c 08 63 depw,z ret0,28,29,ret0
1024a2ec: 8a 75 20 0a cmpb,<>,n r21,r19,1024a2f8 <_raw_write_lock+0x1b8>
1024a2f0: 83 96 9e b5 cmpb,<< r22,ret0,1024a250 <_raw_write_lock+0x110>
1024a2f4: 08 00 02 40 nop
1024a2f8: 87 a0 3e 65 cmpib,= 0,ret1,1024a230 <_raw_write_lock+0xf0>
1024a2fc: 48 93 01 18 ldw 8c(r4),r19
1024a300: 03 c0 08 bc mfctl tr6,ret0
1024a304: 4b 99 00 20 ldw 10(ret0),r25
1024a308: 03 c0 08 b3 mfctl tr6,r19
1024a30c: 0e 60 10 98 ldw 0(r19),r24
1024a310: 37 18 03 18 ldo 18c(r24),r24
1024a314: 03 c0 08 bc mfctl tr6,ret0
1024a318: 23 58 c2 06 ldil L%103f0000,r26
1024a31c: 0f 80 10 93 ldw 0(ret0),r19
1024a320: 37 5a 0c a0 ldo 650(r26),r26
1024a324: 4a 77 01 50 ldw a8(r19),r23
1024a328: eb 71 b3 4d b,l 1012dcd4 <printk>,rp
1024a32c: 6b c3 3f 99 stw r3,-34(sp)
1024a330: eb 5e bd dd b,l 10108224 <dump_stack>,rp
1024a334: 08 00 02 40 nop
1024a338: e8 1f 1d dd b,l 1024a22c <_raw_write_lock+0xec>,r0
1024a33c: 34 1d 00 00 ldi 0,ret1
Disassembly of section .init.text:
Disassembly of section .exit.text:
called by around r2 == 0x1012bfc4:
1012aa94 <copy_process>:
[snip]
1012bf88: 68 bc 01 30 stw ret0,98(r5)
1012bf8c: 08 05 02 5a copy r5,r26
1012bf90: 34 bc 00 f8 ldo 7c(r5),ret0
1012bf94: 68 a5 01 90 stw r5,c8(r5)
1012bf98: 08 06 02 59 copy r6,r25
1012bf9c: 08 01 02 47 copy r1,r7
1012bfa0: 0c 63 12 88 stw r3,4(r3)
1012bfa4: 0e 73 12 88 stw r19,4(r19)
1012bfa8: 0f 9c 12 88 stw ret0,4(ret0)
1012bfac: 68 b3 00 e8 stw r19,74(r5)
1012bfb0: 68 bc 00 f8 stw ret0,7c(r5)
1012bfb4: eb fe b6 c9 b,l 10128b20 <sched_fork>,rp
1012bfb8: 68 a3 01 e0 stw r3,f0(r5)
1012bfbc: eb ec be 11 b,l 10104ecc <_write_lock_irq>,rp
1012bfc0: 34 fa 0c 60 ldo 630(r7),r26
1012bfc4: 03 c0 08 bc mfctl tr6,ret0
1012bfc8: 0f 80 10 93 ldw 0(ret0),r19
1012bfcc: 4a 74 00 c0 ldw 60(r19),r20
1012bfd0: 0c a8 10 97 ldw 4(r5),r23
1012bfd4: 68 b4 00 c0 stw r20,60(r5)
1012bfd8: 4a f3 00 20 ldw 10(r23),r19
1012bfdc: d2 74 1b fb extrw,u r19,31,5,r20
1012bfe0: d2 7c 1c 1f extrw,s r19,0,1,ret0
1012bfe4: d3 9c 18 9b extrw,u ret0,4,5,ret0
1012bfe8: 0a 7c 0a 3c add,l ret0,r19,ret0
1012bfec: d3 9c 1f 45 extrw,s ret0,26,27,ret0
1012bff0: 01 74 18 40 mtsar r20
1012bff4: d6 9c 08 42 depw,z ret0,29,30,r20
1012bff8: 08 b4 0a 33 add,l r20,r5,r19
1012bffc: 4a 7c 00 c0 ldw 60(r19),ret0
1012c000: d3 80 00 1c shrpw r0,ret0,sar,ret0
[snip]
(don't hesitate to ask me if you need more)
Thanks,
Joel
PS: reading back again parisc2.0.pdf on q-bit:
"The E, O, W, F, R, Q, P, D, and I bits of the PSW are known as the system
mask. Each of these bits, with the exception of the Q-bit, may be set to 1,
set to 0, written, and read by the system control instructions that manipulate
the system mask. The Q-bit is specially defined. It can be set to 0 by system
control instructions that manipulate the system mask, but setting it to 1 when
the current value is 0 is an undefined operation. The only instruction that
can set the Q-bit to 1 is the RETURN FROM INTERRUPTION instruction."
but in
#define local_irq_restore(x) \
__asm__ __volatile__("mtsm %0" : : "r" (x) : "memory" )
we don't take care of the current Q-bit status. But may be in Linux it's
impossible that we save a system masq with Q-bit == 1 and restore it when it
was changed to 0; thoughts?
----------
Club Scarlet : Tout le monde gagne! Si vous devenez aujourd'hui Scarlet One grace a un client existant de Scarlet, vous recevez tous les deux un cadeau d'une valeur de 50 euros! Surfez vite sur http://www.clubscarlet.be
More information about the parisc-linux
mailing list