linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Re: IPSec kernel oops on ppc64
       [not found] ` <20060829013023.GA5865@gondor.apana.org.au>
@ 2006-08-30 11:09   ` Herbert Xu
  0 siblings, 0 replies; 8+ messages in thread
From: Herbert Xu @ 2006-08-30 11:09 UTC (permalink / raw)
  To: Joy Latten, paulus, anton, linuxppc-dev; +Cc: jmorris, gcwilson, davem, netdev

Hi:

Thanks to some excellent info from Joy, I've trakced the problem down to
a broken implementation of memmove on ppc64, which in turn is due to a
broken memcpy.

Both memmove and memcpy need to return the destination pointer as per
the C standard.  The ppc64 version of memcpy returns a pointer to the
last byte copied instead.  Since memmove degenerates into memcpy in
some cases, this makes it broken as well.

Something like the following patch should fix the problem.  Be warned
that I know absolutely nothing about ppc assembly so don't come back
to me if this patch eats your disk :)

BTW, I spotted a couple of typos in memcpy_64.S/copyuser_64.S where
"cmpldi cr1,..." became "cmpldi r1,...".  So please fix that up while
you ppc64 guys are at it.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S
index fd66acf..9e8d9e7 100644
--- a/arch/powerpc/lib/memcpy_64.S
+++ b/arch/powerpc/lib/memcpy_64.S
@@ -11,6 +11,7 @@ #include <asm/ppc_asm.h>
 
 	.align	7
 _GLOBAL(memcpy)
+	std	r3,-8(r1)
 	mtcrf	0x01,r5
 	cmpldi	cr1,r5,16
 	neg	r6,r3		# LS 3 bits = # bytes to 8-byte dest bdry
@@ -53,7 +54,8 @@ _GLOBAL(memcpy)
 2:	bf	cr7*4+3,3f
 	rotldi	r9,r9,8
 	stb	r9,0(r3)
-3:	blr
+3:	ld	r3,-8(r1)
+	blr
 
 .Lsrc_unaligned:
 	srdi	r6,r5,3
@@ -167,4 +169,5 @@ _GLOBAL(memcpy)
 3:	bf	cr7*4+3,4f
 	lbz	r0,0(r4)
 	stb	r0,0(r3)
-4:	blr
+4:	ld	r3,-8(r1)
+	blr

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
@ 2006-08-30 16:36 Joy Latten
  2006-08-31  0:57 ` Paul Mackerras
  2006-08-31  1:59 ` Herbert Xu
  0 siblings, 2 replies; 8+ messages in thread
From: Joy Latten @ 2006-08-30 16:36 UTC (permalink / raw)
  To: anton, herbert, linuxppc-dev, paulus; +Cc: jmorris, gcwilson, davem, netdev

>--
>diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S
>index fd66acf..9e8d9e7 100644
>--- a/arch/powerpc/lib/memcpy_64.S
>+++ b/arch/powerpc/lib/memcpy_64.S
>@@ -11,6 +11,7 @@ #include <asm/ppc_asm.h>
> 
> 	.align	7
> _GLOBAL(memcpy)
>+	std	r3,-8(r1)
> 	mtcrf	0x01,r5
> 	cmpldi	cr1,r5,16
> 	neg	r6,r3		# LS 3 bits = # bytes to 8-byte dest bdry
>@@ -53,7 +54,8 @@ _GLOBAL(memcpy)
> 2:	bf	cr7*4+3,3f
> 	rotldi	r9,r9,8
> 	stb	r9,0(r3)
>-3:	blr
>+3:	ld	r3,-8(r1)
>+	blr
> 
> .Lsrc_unaligned:
> 	srdi	r6,r5,3
>@@ -167,4 +169,5 @@ _GLOBAL(memcpy)
> 3:	bf	cr7*4+3,4f
> 	lbz	r0,0(r4)
> 	stb	r0,0(r3)
>-4:	blr
>+4:	ld	r3,-8(r1)
>+	blr


Hi,

I tried the patch on the following:
linux-2.6.17 + patch-2.6.18-rc1

The good news is that the pings worked great!
So perhaps ESP is working ok with ICMP.

But when I tried to do sftp, I still got the oops.
I don't think TCP and ESP are working.

I pasted below info as well as the disassembled routine,
just in case.

Regards,
Joy

====================================================================
root@hvracer1 jml]# sftp joy-hv4
Connecting to joy-hv4...
kernel BUG in skb_to_sgvec at net/xfrm/xfrm_algo.c:611!
cpu 0x0: Vector: 700 (Program Check) at [c00000000257b280]
    pc: c000000000305ea4: .skb_to_sgvec+0x288/0x2ec
    lr: d0000000006305f0: .esp_output+0x350/0x4e4 [esp4]
    sp: c00000000257b500
   msr: 8000000000029032
  current = 0xc000000042320b00
  paca    = 0xc000000000414380
    pid   = 2007, comm = ssh
kernel BUG in skb_to_sgvec at net/xfrm/xfrm_algo.c:611!
enter ? for help
0:mon> t
[c00000000257b5d0] d0000000006305f0 .esp_output+0x350/0x4e4 [esp4]
[c00000000257b6b0] c0000000002fe758 .xfrm4_output_finish2+0x2bc/0x3d8
[c00000000257b750] c0000000002fea28 .xfrm4_output+0x74/0x88
[c00000000257b7d0] c0000000002c1504 .ip_queue_xmit+0x474/0x50c
[c00000000257b8c0] c0000000002d4a88 .tcp_transmit_skb+0x818/0x884
[c00000000257b970] c0000000002d7c7c .tcp_connect+0x318/0x3bc
[c00000000257ba10] c0000000002dc228 .tcp_v4_connect+0x4dc/0x674
[c00000000257bb80] c0000000002ea6a0 .inet_stream_connect+0x10c/0x358
[c00000000257bc60] c000000000283fd0 .sys_connect+0xd8/0x120
[c00000000257bd90] c0000000002a4c54 .compat_sys_socketcall+0xdc/0x214
[c00000000257be30] c00000000000871c syscall_exit+0x0/0x40
--- Exception: c00 (System Call) at 0000000007a9f8fc
SP (ff88f230) is in userspace
0:mon> r
R00 = 0000000000000058   R16 = 00000000080704d8
R01 = c00000000257b500   R17 = 0000000008065d68
R02 = c0000000005261d0   R18 = 00000000ff88f2dc
R03 = c000000041da2d00   R19 = 0000000000000001
R04 = c00000003d8a9660   R20 = c00000000257bcd8
R05 = 0000000000000028   R21 = 0000000000000000
R06 = 000000000000023c   R22 = 0000000000000001
R07 = c000000000660208   R23 = 0000000000000010
R08 = 00000000000041da   R24 = 0000000000000001
R09 = 0000000000000000   R25 = c00000003d8a9660
R10 = 0000000000000028   R26 = 0000000000000050
R11 = 0000000000107680   R27 = 0000000000000050
R12 = d0000000006312f8   R28 = 0000000000000008
R13 = c000000000414380   R29 = 0000000000000000
R14 = 0000000000000000   R30 = c0000000004c09a8
R15 = 000000000806379c   R31 = c0000000329221a0
pc  = c000000000305ea4 .skb_to_sgvec+0x288/0x2ec
lr  = d0000000006305f0 .esp_output+0x350/0x4e4 [esp4]
msr = 8000000000029032   cr  = 28000442
ctr = c000000000305c1c   xer = 0000000000000000   trap =  700
0:mon> S
msr  = 8000000000001032  sprg0= 0000000000000000
pvr  = 00000000003a0202  sprg1= c000000000414380
dec  = 00000000f2fd7ff0  sprg2= c000000000414380
sp   = c00000000257ab10  sprg3= c000000000414380
toc  = c0000000005261d0  dar  = 00000000ff88dfb0
0:mon> u
SLB contents of cpu 0
00 c000000008000000 0000408f92c94500
01 d000000008000000 0000f09b89af5400
02 c000000078000000 000045cb97751500
03 0000000010000000 000036ab4f98cc80
04 0000000000000000 0000f41e71baac80
05 00000000f0000000 0000ff55e973fc80
06 0000000040000000 0000f71c2b416c80
07 0000000010000000 0000f4dde01c5c80
08 c000000040000000 0000438d4c500500
09 0000000000000000 000004abd053cc80
10 00000000f0000000 00000fe3480d1c80
11 0000000040000000 000007a989da8c80
12 0000000010000000 0000056b3eb57c80
13 0000000000000000 0000f41e71baac80
14 00000000f0000000 0000ff55e973fc80
15 0000000040000000 0000f71c2b416c80
16 c000000038000000 000042cdddee5500
17 0000000010000000 0000f4dde01c5c80
18 0000000000000000 000004abd053cc80
19 00000000f0000000 00000fe3480d1c80
20 0000000040000000 000007a989da8c80
21 0000000010000000 0000056b3eb57c80
22 c000000070000000 000045cb97751500
23 0000000000000000 00008110f15afc80
24 00000000f0000000 00008c4869144c80
25 0000000040000000 0000840eaae1bc80
26 0000000000000000 0000cc36017edc80
27 00000000f0000000 0000d76d79382c80
28 0000000040000000 0000cf33bb059c80
29 0000000000000000 00008110f15afc80
30 00000000f0000000 00008c4869144c80
31 0000000040000000 0000840eaae1bc80
32 c000000040000000 0000438d4c500500
33 0000000000000000 0000cc36017edc80
34 00000000f0000000 0000d76d79382c80
35 0000000040000000 0000cf33bb059c80
36 c000000070000000 000045cb97751500
37 c000000048000000 0000438d4c500500
38 0000000008000000 000004abd053cc80
39 00000000f8000000 00000fe3480d1c80
40 0000000048000000 000007a989da8c80
41 0000000000000000 0000f41e71baac80
42 00000000f0000000 0000ff55e973fc80
43 0000000040000000 0000f71c2b416c80
44 0000000010000000 0000f4dde01c5c80
45 0000000000000000 000035ebe1371c80
46 00000000f0000000 0000412358f06c80
47 0000000040000000 000038e99abddc80
48 0000000010000000 000036ab4f98cc80
49 0000000000000000 0000f41e71baac80
50 00000000f0000000 0000ff55e973fc80
51 0000000040000000 0000f71c2b416c80
52 0000000010000000 0000f4dde01c5c80
53 0000000000000000 000035ebe1371c80
54 00000000f0000000 0000412358f06c80
55 0000000040000000 000038e99abddc80
56 0000000010000000 000036ab4f98cc80
57 0000000000000000 00006e61b00bfc80
58 00000000f0000000 0000799927c54c80
59 0000000040000000 0000715f6992bc80
60 0000000010000000 00006f211e6dac80
61 0000000000000000 000035ebe1371c80
62 00000000f0000000 0000412358f06c80
63 0000000040000000 000038e99abddc80
0:mon> e
cpu 0x0: Vector: 700 (Program Check) at [c00000000257b280]
    pc: c000000000305ea4: .skb_to_sgvec+0x288/0x2ec
    lr: d0000000006305f0: .esp_output+0x350/0x4e4 [esp4]
    sp: c00000000257b500
   msr: 8000000000029032
  current = 0xc000000042320b00
  paca    = 0xc000000000414380
    pid   = 2007, comm = ssh
kernel BUG in skb_to_sgvec at net/xfrm/xfrm_algo.c:611!
0:mon>

=============================================================================
0000000000000120 <.skb_to_sgvec>:
 120:   7c 08 02 a6     mflr    r0
 124:   fa a1 ff a8     std     r21,-88(r1)
 128:   fb 21 ff c8     std     r25,-56(r1)
 12c:   fb 61 ff d8     std     r27,-40(r1)
 130:   fb 81 ff e0     std     r28,-32(r1)
 134:   fb c1 ff f0     std     r30,-16(r1)
 138:   fb e1 ff f8     std     r31,-8(r1)
 13c:   fa c1 ff b0     std     r22,-80(r1)
 140:   fa e1 ff b8     std     r23,-72(r1)
 144:   fb 01 ff c0     std     r24,-64(r1)
 148:   fb 41 ff d0     std     r26,-48(r1)
 14c:   fb a1 ff e8     std     r29,-24(r1)
 150:   f8 01 00 10     std     r0,16(r1)
 154:   f8 21 ff 31     stdu    r1,-208(r1)
 158:   eb c2 00 00     ld      r30,0(r2)
 15c:   7c 7f 1b 78     mr      r31,r3
 160:   7c 99 23 78     mr      r25,r4
 164:   7c bb 2b 78     mr      r27,r5
 168:   7c dc 33 78     mr      r28,r6
 16c:   3a a0 00 00     li      r21,0
 170:   80 1f 00 88     lwz     r0,136(r31)
 174:   81 3f 00 8c     lwz     r9,140(r31)
 178:   3b 00 00 00     li      r24,0
 17c:   7c 09 00 50     subf    r0,r9,r0
 180:   7c 1a 07 b4     extsw   r26,r0
 184:   7c 1b d0 50     subf    r0,r27,r26
 188:   7c 00 07 b4     extsw   r0,r0
 18c:   2f 80 00 00     cmpwi   cr7,r0,0
 190:   40 9d 00 a4     ble-    cr7,234 <.skb_to_sgvec+0x114>
 194:   7f 9c 00 00     cmpw    cr7,r28,r0
 198:   7f 8a e3 78     mr      r10,r28
 19c:   40 9d 00 08     ble-    cr7,1a4 <.skb_to_sgvec+0x84>
 1a0:   7c 0a 03 78     mr      r10,r0
 1a4:   e8 1f 00 d8     ld      r0,216(r31)
 1a8:   3d 20 40 00     lis     r9,16384
 1ac:   e9 7e 80 18     ld      r11,-32744(r30)
 1b0:   7d 4a 07 b4     extsw   r10,r10
 1b4:   38 e0 00 00     li      r7,0
 1b8:   79 29 07 c6     rldicr  r9,r9,32,31
 1bc:   7c 1b 02 14     add     r0,r27,r0
 1c0:   7c 00 4a 14     add     r0,r0,r9
 1c4:   78 09 d9 60     rldicl  r9,r0,27,37
 1c8:   78 08 84 02     rldicl  r8,r0,48,16
 1cc:   78 00 46 02     rldicl  r0,r0,40,24
 1d0:   79 29 1f 24     rldicr  r9,r9,3,60
 1d4:   7d 29 58 2a     ldx     r9,r9,r11
 1d8:   2f a9 00 00     cmpdi   cr7,r9,0
 1dc:   41 9e 00 0c     beq-    cr7,1e8 <.skb_to_sgvec+0xc8>
 1e0:   78 00 1c 28     rldic   r0,r0,3,48
 1e4:   7c e9 02 14     add     r7,r9,r0
 1e8:   e8 07 00 00     ld      r0,0(r7)
 1ec:   79 0b 36 64     rldicr  r11,r8,6,57
 1f0:   7d 2a e0 50     subf    r9,r10,r28
 1f4:   7d 3c 07 b4     extsw   r28,r9
 1f8:   78 00 07 64     rldicr  r0,r0,0,61
 1fc:   2f bc 00 00     cmpdi   cr7,r28,0
 200:   7c 00 5a 14     add     r0,r0,r11
 204:   f8 19 00 00     std     r0,0(r25)
 208:   e8 1f 00 d8     ld      r0,216(r31)
 20c:   91 59 00 0c     stw     r10,12(r25)
 210:   7c 1b 02 14     add     r0,r27,r0
 214:   54 00 04 3e     clrlwi  r0,r0,16
 218:   90 19 00 08     stw     r0,8(r25)
 21c:   40 9e 00 0c     bne-    cr7,228 <.skb_to_sgvec+0x108>
 220:   3b 00 00 01     li      r24,1
 224:   48 00 01 a4     b       3c8 <.skb_to_sgvec+0x2a8>
 228:   7c 0a da 14     add     r0,r10,r27
 22c:   3b 00 00 01     li      r24,1
 230:   7c 1b 07 b4     extsw   r27,r0
 234:   3a c0 00 00     li      r22,0
 238:   3a e0 00 10     li      r23,16
 23c:   48 00 00 ac     b       2e8 <.skb_to_sgvec+0x1c8>
 240:   40 b8 00 18     bge+    cr6,258 <.skb_to_sgvec+0x138>
 244:   e8 7e 80 20     ld      r3,-32736(r30)
 248:   e8 9e 80 28     ld      r4,-32728(r30)
 24c:   e8 be 80 30     ld      r5,-32720(r30)
 250:   48 00 00 01     bl      250 <.skb_to_sgvec+0x130>
 254:   60 00 00 00     nop
 258:   e8 1f 00 e8     ld      r0,232(r31)
 25c:   7b a9 26 e4     rldicr  r9,r29,4,59
 260:   7b 0a 2e a4     rldicr  r10,r24,5,58
 264:   39 18 00 01     addi    r8,r24,1
 268:   7c b9 52 14     add     r5,r25,r10
 26c:   7d 29 02 14     add     r9,r9,r0
 270:   7d 60 ba 14     add     r11,r0,r23
 274:   3a f7 00 10     addi    r23,r23,16
 278:   a0 09 00 22     lhz     r0,34(r9)
 27c:   38 cb 00 08     addi    r6,r11,8
 280:   7c 00 d2 14     add     r0,r0,r26
 284:   7c 07 07 b4     extsw   r7,r0
 288:   7c 1b 38 50     subf    r0,r27,r7
 28c:   7c 00 07 b4     extsw   r0,r0
 290:   2f 80 00 00     cmpwi   cr7,r0,0
 294:   7c 09 03 78     mr      r9,r0
 298:   7f 00 e0 00     cmpw    cr6,r0,r28
 29c:   40 9d 00 48     ble-    cr7,2e4 <.skb_to_sgvec+0x1c4>
 2a0:   7d 18 07 b4     extsw   r24,r8
 2a4:   40 99 00 08     ble-    cr6,2ac <.skb_to_sgvec+0x18c>
 2a8:   7f 89 e3 78     mr      r9,r28
 2ac:   e8 0b 00 08     ld      r0,8(r11)
 2b0:   7d 29 07 b4     extsw   r9,r9
 2b4:   7d 69 e0 50     subf    r11,r9,r28
 2b8:   7c 19 51 2a     stdx    r0,r25,r10
 2bc:   7d 7c 07 b4     extsw   r28,r11
 2c0:   7d 69 da 14     add     r11,r9,r27
 2c4:   2f bc 00 00     cmpdi   cr7,r28,0
 2c8:   a0 06 00 08     lhz     r0,8(r6)
 2cc:   91 25 00 0c     stw     r9,12(r5)
 2d0:   7c 00 da 14     add     r0,r0,r27
 2d4:   7d 7b 07 b4     extsw   r27,r11
 2d8:   7c 1a 00 50     subf    r0,r26,r0
 2dc:   90 05 00 08     stw     r0,8(r5)
 2e0:   41 9e 00 e8     beq-    cr7,3c8 <.skb_to_sgvec+0x2a8>
 2e4:   7c fa 3b 78     mr      r26,r7
 2e8:   e8 7f 00 e8     ld      r3,232(r31)
 2ec:   7e dd 07 b4     extsw   r29,r22
 2f0:   7c 1c da 14     add     r0,r28,r27
 2f4:   3a d6 00 01     addi    r22,r22,1
 2f8:   38 c0 02 3c     li      r6,572
 2fc:   7f 00 d0 00     cmpw    cr6,r0,r26
 300:   a1 23 00 04     lhz     r9,4(r3)
 304:   7f 89 e8 00     cmpw    cr7,r9,r29
 308:   41 9d ff 38     bgt+    cr7,240 <.skb_to_sgvec+0x120>
 30c:   eb a3 00 10     ld      r29,16(r3)
 310:   2f bd 00 00     cmpdi   cr7,r29,0
 314:   41 9e 00 94     beq-    cr7,3a8 <.skb_to_sgvec+0x288>
 318:   7c 1b e2 14     add     r0,r27,r28
 31c:   38 c0 02 55     li      r6,597
 320:   7f 80 d0 00     cmpw    cr7,r0,r26
 324:   40 bc 00 18     bge+    cr7,33c <.skb_to_sgvec+0x21c>
 328:   e8 9e 80 28     ld      r4,-32728(r30)
 32c:   e8 be 80 30     ld      r5,-32720(r30)
 330:   e8 7e 80 20     ld      r3,-32736(r30)
 334:   48 00 00 01     bl      334 <.skb_to_sgvec+0x214>
 338:   60 00 00 00     nop
 33c:   80 1d 00 88     lwz     r0,136(r29)
 340:   7d 5a d8 50     subf    r10,r26,r27
 344:   7b 0b 2e a4     rldicr  r11,r24,5,58
 348:   7f a3 eb 78     mr      r3,r29
 34c:   7d 45 07 b4     extsw   r5,r10
 350:   7c 99 5a 14     add     r4,r25,r11
 354:   7c 00 d2 14     add     r0,r0,r26
 358:   7c 00 07 b4     extsw   r0,r0
 35c:   7d 3b 00 50     subf    r9,r27,r0
 360:   7c 1a 03 78     mr      r26,r0
 364:   7d 3f 07 b4     extsw   r31,r9
 368:   2f 9f 00 00     cmpwi   cr7,r31,0
 36c:   7f e6 fb 78     mr      r6,r31
 370:   7f 1f e0 00     cmpw    cr6,r31,r28
 374:   40 9d 00 2c     ble-    cr7,3a0 <.skb_to_sgvec+0x280>
 378:   41 99 00 38     bgt-    cr6,3b0 <.skb_to_sgvec+0x290>
 37c:   48 00 00 01     bl      37c <.skb_to_sgvec+0x25c>
 380:   7c 1f e0 50     subf    r0,r31,r28
 384:   7d 3f da 14     add     r9,r31,r27
 388:   7c 63 c2 14     add     r3,r3,r24
 38c:   7c 1c 07 b4     extsw   r28,r0
 390:   7d 3b 07 b4     extsw   r27,r9
 394:   7c 78 07 b4     extsw   r24,r3
 398:   2f bc 00 00     cmpdi   cr7,r28,0
 39c:   41 9e 00 2c     beq-    cr7,3c8 <.skb_to_sgvec+0x2a8>
 3a0:   eb bd 00 00     ld      r29,0(r29)
 3a4:   4b ff ff 6c     b       310 <.skb_to_sgvec+0x1f0>
 3a8:   0b 1c 00 00     tdnei   r28,0
 3ac:   48 00 00 1c     b       3c8 <.skb_to_sgvec+0x2a8>
 3b0:   7c 15 c2 14     add     r0,r21,r24
 3b4:   7f 39 5a 14     add     r25,r25,r11
 3b8:   7d 5b 07 b4     extsw   r27,r10
 3bc:   7f bf eb 78     mr      r31,r29
 3c0:   7c 15 07 b4     extsw   r21,r0
 3c4:   4b ff fd ac     b       170 <.skb_to_sgvec+0x50>
 3c8:   38 21 00 d0     addi    r1,r1,208
 3cc:   7c 75 c2 14     add     r3,r21,r24
 3d0:   e8 01 00 10     ld      r0,16(r1)
 3d4:   7c 63 07 b4     extsw   r3,r3
 3d8:   ea a1 ff a8     ld      r21,-88(r1)
 3dc:   ea c1 ff b0     ld      r22,-80(r1)
 3e0:   ea e1 ff b8     ld      r23,-72(r1)
 3e4:   eb 01 ff c0     ld      r24,-64(r1)
 3e8:   eb 21 ff c8     ld      r25,-56(r1)
 3ec:   eb 41 ff d0     ld      r26,-48(r1)
 3f0:   eb 61 ff d8     ld      r27,-40(r1)
 3f4:   7c 08 03 a6     mtlr    r0
 3f8:   eb 81 ff e0     ld      r28,-32(r1)
 3fc:   eb a1 ff e8     ld      r29,-24(r1)
 400:   eb c1 ff f0     ld      r30,-16(r1)
 404:   eb e1 ff f8     ld      r31,-8(r1)
 408:   4e 80 00 20     blr

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
  2006-08-30 16:36 IPSec kernel oops on ppc64 Joy Latten
@ 2006-08-31  0:57 ` Paul Mackerras
  2006-08-31  1:59 ` Herbert Xu
  1 sibling, 0 replies; 8+ messages in thread
From: Paul Mackerras @ 2006-08-31  0:57 UTC (permalink / raw)
  To: Joy Latten; +Cc: jmorris, herbert, netdev, anton, linuxppc-dev, gcwilson, davem

Joy Latten writes:

> The good news is that the pings worked great!
> So perhaps ESP is working ok with ICMP.
> 
> But when I tried to do sftp, I still got the oops.
> I don't think TCP and ESP are working.

You're hitting the BUG_ON(len) at line 611 of net/xfrm/xfrm_algo.c.
Is that the same thing that happened without the patch to memcpy, or
was that a different oops?

Paul.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
  2006-08-30 16:36 IPSec kernel oops on ppc64 Joy Latten
  2006-08-31  0:57 ` Paul Mackerras
@ 2006-08-31  1:59 ` Herbert Xu
  2006-08-31  3:22   ` Paul Mackerras
  1 sibling, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2006-08-31  1:59 UTC (permalink / raw)
  To: Joy Latten; +Cc: jmorris, netdev, anton, linuxppc-dev, gcwilson, paulus, davem

On Wed, Aug 30, 2006 at 11:36:26AM -0500, Joy Latten wrote:
> 
> I tried the patch on the following:
> linux-2.6.17 + patch-2.6.18-rc1
> 
> The good news is that the pings worked great!
> So perhaps ESP is working ok with ICMP.
> 
> But when I tried to do sftp, I still got the oops.
> I don't think TCP and ESP are working.

Interesting.  We were previously off by 28 bytes, now we're off by 8 :)

Could you please do a test by deleting the defines for
__HAVE_ARCH_MEMMOVE and __HAVE_ARCH_MEMCPY from include/asm-powerpc
to see if using the generic routines help?

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
  2006-08-31  1:59 ` Herbert Xu
@ 2006-08-31  3:22   ` Paul Mackerras
  2006-08-31  3:53     ` Herbert Xu
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Mackerras @ 2006-08-31  3:22 UTC (permalink / raw)
  To: Herbert Xu
  Cc: jmorris, netdev, anton, linuxppc-dev, gcwilson, Joy Latten, davem

Herbert Xu writes:

> Interesting.  We were previously off by 28 bytes, now we're off by 8 :)

You missed a couple of 'beqlr' instructions (branch if equal to LR).
I'd be interested to know if it still fails with the patch below.

Thanks,
Paul.

diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S
index fd66acf..7173ba9 100644
--- a/arch/powerpc/lib/memcpy_64.S
+++ b/arch/powerpc/lib/memcpy_64.S
@@ -11,6 +11,7 @@ #include <asm/ppc_asm.h>
 
 	.align	7
 _GLOBAL(memcpy)
+	std	r3,48(r1)	/* save destination pointer for return value */
 	mtcrf	0x01,r5
 	cmpldi	cr1,r5,16
 	neg	r6,r3		# LS 3 bits = # bytes to 8-byte dest bdry
@@ -38,7 +39,7 @@ _GLOBAL(memcpy)
 	stdu	r9,16(r3)
 	bdnz	1b
 3:	std	r8,8(r3)
-	beqlr
+	beq	3f
 	addi	r3,r3,16
 	ld	r9,8(r4)
 .Ldo_tail:
@@ -53,7 +54,8 @@ _GLOBAL(memcpy)
 2:	bf	cr7*4+3,3f
 	rotldi	r9,r9,8
 	stb	r9,0(r3)
-3:	blr
+3:	ld	r3,48(r1)	/* return dest pointer */
+	blr
 
 .Lsrc_unaligned:
 	srdi	r6,r5,3
@@ -115,7 +117,7 @@ _GLOBAL(memcpy)
 5:	srd	r12,r9,r11
 	or	r12,r8,r12
 	std	r12,24(r3)
-	beqlr
+	beq	4f
 	cmpwi	cr1,r5,8
 	addi	r3,r3,32
 	sld	r9,r9,r10
@@ -167,4 +169,5 @@ _GLOBAL(memcpy)
 3:	bf	cr7*4+3,4f
 	lbz	r0,0(r4)
 	stb	r0,0(r3)
-4:	blr
+4:	ld	r3,48(r1)	/* return dest pointer */
+	blr

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
  2006-08-31  3:22   ` Paul Mackerras
@ 2006-08-31  3:53     ` Herbert Xu
  2006-08-31  4:25       ` Paul Mackerras
  0 siblings, 1 reply; 8+ messages in thread
From: Herbert Xu @ 2006-08-31  3:53 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: jmorris, netdev, anton, linuxppc-dev, gcwilson, Joy Latten, davem

Hi Paul:

On Thu, Aug 31, 2006 at 01:22:07PM +1000, Paul Mackerras wrote:
> 
> You missed a couple of 'beqlr' instructions (branch if equal to LR).
> I'd be interested to know if it still fails with the patch below.

Yes that'd do it.

BTW, did you see the "cmpldi r1,..." stuff in the code?  That's a typo,
right?

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
  2006-08-31  3:53     ` Herbert Xu
@ 2006-08-31  4:25       ` Paul Mackerras
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Mackerras @ 2006-08-31  4:25 UTC (permalink / raw)
  To: Herbert Xu
  Cc: jmorris, netdev, anton, linuxppc-dev, gcwilson, Joy Latten, davem

Herbert Xu writes:

> BTW, did you see the "cmpldi r1,..." stuff in the code?  That's a typo,
> right?

Yes it is a typo, but fixing it is lower priority since both r1 and
cr1 equal 1.

Paul.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: IPSec kernel oops on ppc64
@ 2006-08-31 14:55 Joy Latten
  0 siblings, 0 replies; 8+ messages in thread
From: Joy Latten @ 2006-08-31 14:55 UTC (permalink / raw)
  To: paulus; +Cc: jmorris, herbert, netdev, anton, linuxppc-dev, gcwilson, davem

It works! I applied the patch to 
linux-2.6.17 + patch-2.6.17-rc1
and tried icmp, tcp and udp as well as sftp with 
ipsec and they all worked. 

Thanks!!!!

Regards,
Joy

>Herbert Xu writes:
>
>> Interesting.  We were previously off by 28 bytes, now we're off by 8 :)
>
>You missed a couple of 'beqlr' instructions (branch if equal to LR).
>I'd be interested to know if it still fails with the patch below.
>
>Thanks,
>Paul.
>
>diff --git a/arch/powerpc/lib/memcpy_64.S b/arch/powerpc/lib/memcpy_64.S
>index fd66acf..7173ba9 100644
>--- a/arch/powerpc/lib/memcpy_64.S
>+++ b/arch/powerpc/lib/memcpy_64.S
>@@ -11,6 +11,7 @@ #include <asm/ppc_asm.h>
> 
> 	.align	7
> _GLOBAL(memcpy)
>+	std	r3,48(r1)	/* save destination pointer for return value */
> 	mtcrf	0x01,r5
> 	cmpldi	cr1,r5,16
> 	neg	r6,r3		# LS 3 bits = # bytes to 8-byte dest bdry
>@@ -38,7 +39,7 @@ _GLOBAL(memcpy)
> 	stdu	r9,16(r3)
> 	bdnz	1b
> 3:	std	r8,8(r3)
>-	beqlr
>+	beq	3f
> 	addi	r3,r3,16
> 	ld	r9,8(r4)
> .Ldo_tail:
>@@ -53,7 +54,8 @@ _GLOBAL(memcpy)
> 2:	bf	cr7*4+3,3f
> 	rotldi	r9,r9,8
> 	stb	r9,0(r3)
>-3:	blr
>+3:	ld	r3,48(r1)	/* return dest pointer */
>+	blr
> 
> .Lsrc_unaligned:
> 	srdi	r6,r5,3
>@@ -115,7 +117,7 @@ _GLOBAL(memcpy)
> 5:	srd	r12,r9,r11
> 	or	r12,r8,r12
> 	std	r12,24(r3)
>-	beqlr
>+	beq	4f
> 	cmpwi	cr1,r5,8
> 	addi	r3,r3,32
> 	sld	r9,r9,r10
>@@ -167,4 +169,5 @@ _GLOBAL(memcpy)
> 3:	bf	cr7*4+3,4f
> 	lbz	r0,0(r4)
> 	stb	r0,0(r3)
>-4:	blr
>+4:	ld	r3,48(r1)	/* return dest pointer */
>+	blr

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-08-31 15:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-30 16:36 IPSec kernel oops on ppc64 Joy Latten
2006-08-31  0:57 ` Paul Mackerras
2006-08-31  1:59 ` Herbert Xu
2006-08-31  3:22   ` Paul Mackerras
2006-08-31  3:53     ` Herbert Xu
2006-08-31  4:25       ` Paul Mackerras
  -- strict thread matches above, loose matches on Subject: below --
2006-08-31 14:55 Joy Latten
     [not found] <200608282225.k7SMPF80022173@faith.austin.ibm.com>
     [not found] ` <20060829013023.GA5865@gondor.apana.org.au>
2006-08-30 11:09   ` Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).