[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