All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olaf Hering <olh@suse.de>
To: linuxppc-dev@ozlabs.org,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH] processes stuck forever in __do_get_xsec
Date: Sat, 25 Feb 2006 11:27:31 +0100	[thread overview]
Message-ID: <20060225102730.GA17550@suse.de> (raw)


64bit processes loop forever in __do_get_xsec, r8 is loaded, but r4 is compared.
Also, gdb doesnt understand __do_get_xsec and __get_datapage.

No idea if my change is correct.

(gdb) info registers
r0             0x1      1
r1             0xfffff8587c0    17592178018240
r2             0x40000661448    4398053200968
r3             0x102000 1056768
r4             0x4400116315df5  1196273318321653
r5             0x14cb69f61f48246        93650487927407174
r6             0x4400116315df2  1196273318321650
r7             0x3      3
r8             0x3644   13892
r9             0x4ae52fab6fd92  1317571323690386
r10            0x0      0
r11            0xfffff8588b0    17592178018480
r12            0x40000599648    4398052382280
r13            0x400000321c0    4398046716352
r14            0xfffff85c644    17592178034244
r15            0x400000c0de8    4398047301096
r16            0x67     103
r17            0x23     35
r18            0x338    824
r19            0x0      0
r20            0x4      4
r21            0x1017b350       269988688
r22            0x102604c0       270927040
r23            0xfffff858950    17592178018640
r24            0x101f35a0       270480800
r25            0x40000249598    4398048908696
r26            0xfffff85c5d0    17592178034128
r27            0x0      0
r28            0x40000223928    4398048753960
r29            0x35ac5  219845
r30            0x0      0
r31            0xfffff8588b0    17592178018480
pc             0x1005f4 1050100
cr             0x48022224       1208099364
lr             0x100464 1049700
ctr            0x100450 1049680
xer            0x0      0

(gdb) bt
#0  0x00000000001005f4 in __kernel_clock_getres ()
#1  0x0000000000100464 in __kernel_gettimeofday ()
#2  0x0000040000599648 in .__gettimeofday_internal () from /lib64/power5/libc.so.6
#3  0x00000400002acef4 in .rpmswNow () from /usr/lib64/librpmio-4.4.so
#4  0x00000400002acf74 in .rpmswExit () from /usr/lib64/librpmio-4.4.so
#5  0x000004000014f244 in .rpmdbAdd () from /usr/lib64/librpmdb-4.4.so
#6  0x0000040000072f80 in .rpmpsmStage () from /usr/lib64/librpm-4.4.so
#7  0x0000040000074254 in .rpmpsmStage () from /usr/lib64/librpm-4.4.so
#8  0x00000400000739ec in .rpmpsmStage () from /usr/lib64/librpm-4.4.so
#9  0x0000040000074254 in .rpmpsmStage () from /usr/lib64/librpm-4.4.so
#10 0x00000400000732d8 in .rpmpsmStage () from /usr/lib64/librpm-4.4.so
#11 0x000004000009fed4 in .rpmtsRun () from /usr/lib64/librpm-4.4.so
#12 0x0000040000089208 in .rpmInstall () from /usr/lib64/librpm-4.4.so
#13 0x0000000010004f30 in ?? ()
#14 0x220004224d502053 in ?? ()
#15 0x000004000003d010 in ?? () from /usr/lib64/librpm-4.4.so
#16 0x0000000000000000 in ?? ()

(gdb) disassemble __kernel_gettimeofday
Dump of assembler code for function __kernel_gettimeofday:
0x0000000000100450 <__kernel_gettimeofday+0>:   mflr    r12
0x0000000000100454 <__kernel_gettimeofday+4>:   mr      r11,r3
0x0000000000100458 <__kernel_gettimeofday+8>:   mr      r10,r4
0x000000000010045c <__kernel_gettimeofday+12>:  bl      0x10063c <__kernel_clock_getres+136>
0x0000000000100460 <__kernel_gettimeofday+16>:  bl      0x1005f4 <__kernel_clock_getres+64>
0x0000000000100464 <__kernel_gettimeofday+20>:  lis     r7,15
0x0000000000100468 <__kernel_gettimeofday+24>:  ori     r7,r7,16960
0x000000000010046c <__kernel_gettimeofday+28>:  rldicl  r5,r4,44,20
0x0000000000100470 <__kernel_gettimeofday+32>:  rldicr  r6,r5,20,43
0x0000000000100474 <__kernel_gettimeofday+36>:  std     r5,0(r11)
0x0000000000100478 <__kernel_gettimeofday+40>:  subf    r0,r6,r4
0x000000000010047c <__kernel_gettimeofday+44>:  mulld   r0,r0,r7
0x0000000000100480 <__kernel_gettimeofday+48>:  rldicl  r0,r0,44,20
0x0000000000100484 <__kernel_gettimeofday+52>:  cmpldi  r10,0
0x0000000000100488 <__kernel_gettimeofday+56>:  std     r0,8(r11)
0x000000000010048c <__kernel_gettimeofday+60>:  beq-    0x1004a0 <__kernel_gettimeofday+80>
0x0000000000100490 <__kernel_gettimeofday+64>:  lwz     r4,88(r3)
0x0000000000100494 <__kernel_gettimeofday+68>:  lwz     r5,92(r3)
0x0000000000100498 <__kernel_gettimeofday+72>:  stw     r4,0(r10)
0x000000000010049c <__kernel_gettimeofday+76>:  stw     r5,4(r10)
0x00000000001004a0 <__kernel_gettimeofday+80>:  mtlr    r12
0x00000000001004a4 <__kernel_gettimeofday+84>:  crclr   so
0x00000000001004a8 <__kernel_gettimeofday+88>:  li      r3,0
0x00000000001004ac <__kernel_gettimeofday+92>:  blr

(gdb) disassemble __kernel_clock_getres
Dump of assembler code for function __kernel_clock_getres:
0x00000000001005b4 <__kernel_clock_getres+0>:   cmpwi   r3,0
0x00000000001005b8 <__kernel_clock_getres+4>:   cmpwi   cr1,r3,1
0x00000000001005bc <__kernel_clock_getres+8>:   cror    eq,eq,4*cr1+eq
0x00000000001005c0 <__kernel_clock_getres+12>:  bne-    0x1005e8 <__kernel_clock_getres+52>
0x00000000001005c4 <__kernel_clock_getres+16>:  li      r3,0
0x00000000001005c8 <__kernel_clock_getres+20>:  cmplwi  r4,0
0x00000000001005cc <__kernel_clock_getres+24>:  crclr   so
0x00000000001005d0 <__kernel_clock_getres+28>:  beqlr   
0x00000000001005d4 <__kernel_clock_getres+32>:  lis     r5,152
0x00000000001005d8 <__kernel_clock_getres+36>:  ori     r5,r5,38528
0x00000000001005dc <__kernel_clock_getres+40>:  std     r3,0(r4)
0x00000000001005e0 <__kernel_clock_getres+44>:  std     r5,8(r4)
0x00000000001005e4 <__kernel_clock_getres+48>:  blr
0x00000000001005e8 <__kernel_clock_getres+52>:  li      r0,247
0x00000000001005ec <__kernel_clock_getres+56>:  sc      
0x00000000001005f0 <__kernel_clock_getres+60>:  blr
0x00000000001005f4 <__kernel_clock_getres+64>:  ld      r8,80(r3)
0x00000000001005f8 <__kernel_clock_getres+68>:  andi.   r0,r4,1
0x00000000001005fc <__kernel_clock_getres+72>:  bne-    0x1005f4 <__kernel_clock_getres+64>
0x0000000000100600 <__kernel_clock_getres+76>:  xor     r0,r4,r4
0x0000000000100604 <__kernel_clock_getres+80>:  add     r3,r3,r0
0x0000000000100608 <__kernel_clock_getres+84>:  mftb    r7
0x000000000010060c <__kernel_clock_getres+88>:  ld      r9,48(r3)
0x0000000000100610 <__kernel_clock_getres+92>:  subf    r7,r9,r7
0x0000000000100614 <__kernel_clock_getres+96>:  ld      r5,64(r3)
0x0000000000100618 <__kernel_clock_getres+100>: mulhdu  r7,r7,r5
0x000000000010061c <__kernel_clock_getres+104>: ld      r6,72(r3)
0x0000000000100620 <__kernel_clock_getres+108>: add     r4,r6,r7
0x0000000000100624 <__kernel_clock_getres+112>: xor     r0,r4,r4
0x0000000000100628 <__kernel_clock_getres+116>: add     r3,r3,r0
0x000000000010062c <__kernel_clock_getres+120>: ld      r0,80(r3)
0x0000000000100630 <__kernel_clock_getres+124>: cmpld   r0,r8
0x0000000000100634 <__kernel_clock_getres+128>: bne-    0x1005f4 <__kernel_clock_getres+64>
0x0000000000100638 <__kernel_clock_getres+132>: blr
0x000000000010063c <__kernel_clock_getres+136>: mflr    r0
0x0000000000100640 <__kernel_clock_getres+140>: bcl-    20,4*cr7+so,0x100648 <__kernel_datapage_offset+4>


Signed-off-by: Olaf Hering <olh@suse.de>

 arch/powerpc/kernel/vdso64/gettimeofday.S |    1 +
 1 files changed, 1 insertion(+)

Index: linux-2.6.16-rc4-olh/arch/powerpc/kernel/vdso64/gettimeofday.S
===================================================================
--- linux-2.6.16-rc4-olh.orig/arch/powerpc/kernel/vdso64/gettimeofday.S
+++ linux-2.6.16-rc4-olh/arch/powerpc/kernel/vdso64/gettimeofday.S
@@ -225,6 +225,7 @@ V_FUNCTION_BEGIN(__do_get_xsec)
   .cfi_startproc
 	/* check for update count & load values */
 1:	ld	r8,CFG_TB_UPDATE_COUNT(r3)
+	mr	r4,r8
 	andi.	r0,r4,1			/* pending update ? loop */
 	bne-	1b
 	xor	r0,r4,r4		/* create dependency */

             reply	other threads:[~2006-02-25 10:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-25 10:27 Olaf Hering [this message]
2006-02-25 21:09 ` [PATCH] processes stuck forever in __do_get_xsec Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060225102730.GA17550@suse.de \
    --to=olh@suse.de \
    --cc=benh@kernel.crashing.org \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.