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 */
next 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.