Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Sep 2020 14:41:18 -0500
From:      "Brandon Bergren" <bdragon@FreeBSD.org>
To:        "Mark Millard" <marklmi@yahoo.com>
Cc:        "FreeBSD PowerPC ML" <freebsd-ppc@freebsd.org>
Subject:   =?UTF-8?Q?Re:_head_-r365932_on_PowerMac_G5_(2_dual-core_sockets):_Crashe?= =?UTF-8?Q?s_before_login_prompt_if_powerd_is_enabled_in_/etc/rc.conf?=
Message-ID:  <9dc95f46-4a6c-44e2-b8aa-3af5bcc92579@www.fastmail.com>
In-Reply-To: <E23CF7F6-B69C-44C7-B356-4AB65E011268@yahoo.com>
References:  <52783D16-5DCA-45BC-9238-2518326454A1@yahoo.com> <6E99EE39-D2B8-415A-A5BF-823C0F0C22D6@yahoo.com> <cd9d2b72-219f-4550-a437-4ac3aa1da66d@www.fastmail.com> <AF27169A-00FC-4984-83C2-307EA885D7A1@yahoo.com> <11fe573a-24c3-47be-95ed-c601ec54f168@www.fastmail.com> <E23CF7F6-B69C-44C7-B356-4AB65E011268@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
OK, stuff using -O instead of -O2 is known to break G4 in early boot at =
the very least, and the function calls in that context are pretty proble=
matic in general.

Here's how it's supposed to look:
(gdb) disassemble read_scom
Dump of assembler code for function read_scom:
   0x0000000000b067f8 <+0>:	mfmsr   r4
   0x0000000000b067fc <+4>:	rldicl  r3,r4,48,1
   0x0000000000b06800 <+8>:	lis     r5,16512
   0x0000000000b06804 <+12>:	rotldi  r3,r3,16
   0x0000000000b06808 <+16>:	mtmsr   r3
   0x0000000000b0680c <+20>:	isync
   0x0000000000b06810 <+24>:	isync
   0x0000000000b06814 <+28>:	ori     r3,r5,33024
   0x0000000000b06818 <+32>:	mtspr   276,r3
   0x0000000000b0681c <+36>:	isync
   0x0000000000b06820 <+40>:	mfspr   r3,277
   0x0000000000b06824 <+44>:	mr      r4,r3
   0x0000000000b06828 <+48>:	rldicl  r3,r3,32,32
   0x0000000000b0682c <+52>:	mfspr   r5,276
   0x0000000000b06830 <+56>:	mtmsr   r4
   0x0000000000b06834 <+60>:	isync
   0x0000000000b06838 <+64>:	isync
   0x0000000000b0683c <+68>:	blr
   0x0000000000b06840 <+72>:	.long 0x0
   0x0000000000b06844 <+76>:	.long 0x0
   0x0000000000b06848 <+80>:	.long 0x0

Do you have any flags set in your make.conf / src.conf / the kernel conf=
ig file etc?

On Tue, Sep 22, 2020, at 2:15 PM, Mark Millard wrote:
>=20
>=20
> On 2020-Sep-22, at 12:00, Brandon Bergren <bdragon at FreeBSD.org> wro=
te:
>=20
> > Weird, that read_scom has the "inlines not being inlined" problem.
> >=20
> > Are you sure your local tree has my https://svnweb.freebsd.org/base/=
head/?view=3Drevision&revision=3D365441 fixes?
>=20
> # svnlite diff /usr/src/sys/conf/kern.pre.mk
> # svnlite info /usr/src
> Path: .
> Working Copy Root Path: /usr/src
> URL: https://svn.freebsd.org/base/head
> Relative URL: ^/head
> Repository Root: https://svn.freebsd.org/base
> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
> Revision: 365932
> Node Kind: directory
> Schedule: normal
> Last Changed Author: jrtc27
> Last Changed Rev: 365932
> Last Changed Date: 2020-09-20 16:20:18 -0700 (Sun, 20 Sep 2020)
>=20
> But it used -O instead of -O2 . . .
>=20
> # Meta data file=20
> /usr/obj/powerpc64vtsc_clang/powerpc.powerpc64/usr/src/powerpc.powerpc=
64/sys/GENERIC64vtsc-NODBG/pcr.o.meta
> CMD cc -target powerpc64-unknown-freebsd13.0=20
> --sysroot=3D/usr/obj/powerpc64vtsc_clang/powerpc.powerpc64/usr/src/pow=
erpc.powerpc64/tmp -B/usr/obj/powerpc64vtsc_clang/powerpc.powerpc64/usr/=
src/powerpc.powerpc64/tmp/usr/bin -c -O -pipe  -g -nostdinc  -I. -I/usr/=
src/sys -I/usr/src/sys/contrib/ck/include -I/usr/src/sys/contrib/libfdt =
-D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common=
    -msoft-float -fPIC -fno-omit-frame-pointer -fdebug-prefix-map=3D./ma=
chine=3D/usr/src/sys/powerpc/include -mno-altivec -msoft-float -mabi=3De=
lfv2 -ffreestanding -fwrapv -fstack-protector -gdwarf-2 -Wall -Wredundan=
t-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpoin=
ter-arith -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=3D__freebsd=
_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown=
-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-erro=
r-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sig=
n -Wno-error-shift-negative-value -Wno-address-of-packed-member -Wno-for=
mat-zero-length     -std=3Diso9899:1999   /usr/src/sys/powerpc/cpufreq/p=
cr.c
> CMD ctfconvert -L VERSION -g pcr.o
> CWD=20
> /usr/obj/powerpc64vtsc_clang/powerpc.powerpc64/usr/src/powerpc.powerpc=
64/sys/GENERIC64vtsc-NODBG
> TARGET pcr.o
> OODATE offset.inc assym.inc
>=20
>=20
> > On Tue, Sep 22, 2020, at 1:55 PM, Mark Millard wrote:
> >>=20
> >>=20
> >> On 2020-Sep-22, at 08:58, Brandon Bergren <bdragon@FreeBSD.org> wro=
te:
> >>=20
> >>> In theory, this would also crash if you did "sysctl dev.cpu.0.freq=
".
> >>=20
> >> Yep, that dies with a backtrace but not taking input to
> >> the db> prompt.
> >>=20
> >> The call stack looks to have the same sequence.
> >>=20
> >> Different srr0 and lr values were listed when I tried
> >> that:
> >>=20
> >> srr0=3D0x8004'4000'0000'0000 (0xc004'4000'0000'0000)
> >> . . .
> >> lr  =3D0x8004'4000'0000'0000 (0xc004'4000'0000'0000)
> >>=20
> >>=20
> >>> You sure the lack of a backtrace isn't just that you are using a n=
odebug config?
> >>=20
> >> Back when I was using the FireWire based debugging I
> >> discovered that it continued to report material after
> >> the monitor updates stopped. I learned to not use
> >> the last message on screen to guess where it was
> >> having a problem, other than "sometime after the
> >> last message shown".
> >>=20
> >>> Could you please disassemble read_scom?
> >>=20
> >> Sure:
> >>=20
> >> 0000000000ad7f24 <read_scom> addis   r2,r12,132
> >> 0000000000ad7f28 <read_scom+0x4> addi    r2,r2,220
> >> 0000000000ad7f2c <read_scom+0x8> mflr    r0
> >> 0000000000ad7f30 <read_scom+0xc> std     r31,-8(r1)
> >> 0000000000ad7f34 <read_scom+0x10> std     r0,16(r1)
> >> 0000000000ad7f38 <read_scom+0x14> stdu    r1,-64(r1)
> >> 0000000000ad7f3c <read_scom+0x18> mr      r31,r1
> >> 0000000000ad7f40 <read_scom+0x1c> std     r29,40(r31)
> >> 0000000000ad7f44 <read_scom+0x20> std     r30,48(r31)
> >> 0000000000ad7f48 <read_scom+0x24> bl      0000000000ad7e58 <mfmsr>
> >> 0000000000ad7f4c <read_scom+0x28> mr      r30,r3
> >> 0000000000ad7f50 <read_scom+0x2c> rldicl  r3,r3,48,1
> >> 0000000000ad7f54 <read_scom+0x30> rotldi  r3,r3,16
> >> 0000000000ad7f58 <read_scom+0x34> bl      0000000000ad7e6c <mtmsr>
> >> 0000000000ad7f5c <read_scom+0x38> bl      0000000000ad7e84 <isync>
> >> 0000000000ad7f60 <read_scom+0x3c> lis     r3,16512
> >> 0000000000ad7f64 <read_scom+0x40> ori     r3,r3,33024
> >> 0000000000ad7f68 <read_scom+0x44> mtspr   276,r3
> >> 0000000000ad7f6c <read_scom+0x48> bl      0000000000ad7e84 <isync>
> >> 0000000000ad7f70 <read_scom+0x4c> mfspr   r29,277
> >> 0000000000ad7f74 <read_scom+0x50> mr      r30,r29
> >> 0000000000ad7f78 <read_scom+0x54> rldicl  r29,r29,32,32
> >> 0000000000ad7f7c <read_scom+0x58> mfspr   r3,276
> >> 0000000000ad7f80 <read_scom+0x5c> mr      r3,r30
> >> 0000000000ad7f84 <read_scom+0x60> bl      0000000000ad7e6c <mtmsr>
> >> 0000000000ad7f88 <read_scom+0x64> bl      0000000000ad7e84 <isync>
> >> 0000000000ad7f8c <read_scom+0x68> mr      r3,r29
> >> 0000000000ad7f90 <read_scom+0x6c> ld      r30,48(r31)
> >> 0000000000ad7f94 <read_scom+0x70> ld      r29,40(r31)
> >> 0000000000ad7f98 <read_scom+0x74> addi    r1,r1,64
> >> 0000000000ad7f9c <read_scom+0x78> ld      r0,16(r1)
> >> 0000000000ad7fa0 <read_scom+0x7c> mtlr    r0
> >> 0000000000ad7fa4 <read_scom+0x80> ld      r31,-8(r1)
> >> 0000000000ad7fa8 <read_scom+0x84> blr
> >>=20
> >>=20
> >>> On Tue, Sep 22, 2020, at 12:46 AM, Mark Millard via freebsd-ppc wr=
ote:
> >>>>=20
> >>>>=20
> >>>> On 2020-Sep-21, at 21:34, Mark Millard <marklmi at yahoo.com> wro=
te:
> >>>>=20
> >>>>> This was discovered while doing a head -r363590 -> -r365932
> >>>>> upgrade to FreeBSD. (A non-debug system context.)
> >>>>>=20
> >>>>> It first showed up only having updated the kernel. It still
> >>>>> shows up after updating world as well. It is now running:
> >>>>>=20
> >>>>> # uname -apKU
> >>>>> FreeBSD FBSDG5L2 13.0-CURRENT FreeBSD 13.0-CURRENT #16 r365932M:=
 Sun Sep 20 19:57:07 PDT 2020     root@FBSDFHUGE:/usr/obj/powerpc64vtsc_=
clang/powerpc.powerpc64/usr/src/powerpc.powerpc64/sys/GENERIC64vtsc-NODB=
G  powerpc powerpc64 1300115 1300115
> >>>>>=20
> >>>>> but with /etc/rc.conf having powerd disabled:
> >>>>>=20
> >>>>> #powerd_enable=3D"YES"
> >>>>>=20
> >>>>> The crash now is now silent, not getting to the db> prompt
> >>>>> and not showing any messages or backtrace.
> >>>>>=20
> >>>>> Prior to world being updated it crashed with a traceback.
> >>>>> A quick summary from a camera picture:
> >>>>>=20
> >>>>> fatal kernel trap:
> >>>>> . . .
> >>>>> pid =3D 1126, comm =3D powerd
> >>>>> . . .
> >>>>> kernel PGM trap by 0: . . .
> >>>>> at pcr_get+0x4c
> >>>>> at CPUFREQ_DRV_GET+0x78
> >>>>> at cpufreq_get_frequency+0x20
> >>>>> at cpufreq_get_level+0x2c
> >>>>> at cf_get_method+0x20c
> >>>>> at CPUFREQ_GET+0x78
> >>>>> at cpufreq_curr_sysctl+0x70
> >>>>> at sysctl_root_handler_locked+0x10c
> >>>>> at sysctl_root+0x26c
> >>>>> at userland_sysctl+0x14c
> >>>>> at sys___sysctl+0x8c
> >>>>> at syscallenter+0x188
> >>>>> at syscall+0x60
> >>>>> at trap+0x498
> >>>>> at powerpc_interrrupt+0x110
> >>>>> user SC trap . . .
> >>>>>=20
> >>>>> After this I tried to make a dump and then proceeded
> >>>>> with disabling powerd in /etc/rc.conf and doing the
> >>>>> world update.
> >>>>>=20
> >>>>> Unfortunately, while a dump was written, the core.txt
> >>>>> file from the -r365932 world boot that processed the
> >>>>> dump reported "invalid corefile" all over the place.
> >>>>>=20
> >>>>> With powerpd disabled the G5 seems to be operational.
> >>>>> But turning powerd back on in /etc/rc.conf and rebooting
> >>>>> prevents the boot from completing, no messages, no
> >>>>> db> prompt. So I now leave powerd disabled.
> >>>>=20
> >>>> Some additional low-level information:
> >>>>=20
> >>>> For exception 0x700 (program) the screen picture
> >>>> shows (but I've added ' use):
> >>>>=20
> >>>> srr0=3D0x0 (0x4000'0000'0000'0000)
> >>>> . . .
> >>>> lr  =3D0x0 (0x4000'0000'0000'0000)
> >>>>=20
> >>>> The kernel PGM trap notice does report:
> >>>>=20
> >>>> ctr=3D0xc000'0000'00ad'7ad4
> >>>> (the start of pcr_get but with the 0xc
> >>>> prefix)
> >>>>=20
> >>>> I'll remind of the pcr_get+0x4c report in the summary.
> >>>>=20
> >>>> objdump for /boot/kernel/kernel reports:
> >>>>=20
> >>>> 0000000000ad7ad4 <pcr_get> addis   r2,r12,132
> >>>> 0000000000ad7ad8 <pcr_get+0x4> addi    r2,r2,1324
> >>>> 0000000000ad7adc <pcr_get+0x8> cmpldi  r4,0
> >>>> 0000000000ad7ae0 <pcr_get+0xc> beq     0000000000ad7b48 <pcr_get+=
0x74>
> >>>> 0000000000ad7ae4 <pcr_get+0x10> mflr    r0
> >>>> 0000000000ad7ae8 <pcr_get+0x14> std     r31,-8(r1)
> >>>> 0000000000ad7aec <pcr_get+0x18> std     r0,16(r1)
> >>>> 0000000000ad7af0 <pcr_get+0x1c> stdu    r1,-64(r1)
> >>>> 0000000000ad7af4 <pcr_get+0x20> mr      r31,r1
> >>>> 0000000000ad7af8 <pcr_get+0x24> std     r29,40(r31)
> >>>> 0000000000ad7afc <pcr_get+0x28> mr      r29,r3
> >>>> 0000000000ad7b00 <pcr_get+0x2c> li      r3,-1
> >>>> 0000000000ad7b04 <pcr_get+0x30> std     r30,48(r31)
> >>>> 0000000000ad7b08 <pcr_get+0x34> mr      r30,r4
> >>>> 0000000000ad7b0c <pcr_get+0x38> std     r3,32(r4)
> >>>> 0000000000ad7b10 <pcr_get+0x3c> std     r3,24(r4)
> >>>> 0000000000ad7b14 <pcr_get+0x40> std     r3,16(r4)
> >>>> 0000000000ad7b18 <pcr_get+0x44> std     r3,8(r4)
> >>>> 0000000000ad7b1c <pcr_get+0x48> std     r3,0(r4)
> >>>> 0000000000ad7b20 <pcr_get+0x4c> bl      0000000000ad7f2c <read_sc=
om+0x8>
> >>>> 0000000000ad7b24 <pcr_get+0x50> rldicl  r3,r3,8,62
> >>>> 0000000000ad7b28 <pcr_get+0x54> li      r4,10000
> >>>> 0000000000ad7b2c <pcr_get+0x58> stw     r4,0(r30)
> >>>> 0000000000ad7b30 <pcr_get+0x5c> cmpldi  r3,1
> >>>> 0000000000ad7b34 <pcr_get+0x60> beq     0000000000ad7b50 <pcr_get=
+0x7c>
> >>>> 0000000000ad7b38 <pcr_get+0x64> cmpldi  r3,2
> >>>> 0000000000ad7b3c <pcr_get+0x68> bne     0000000000ad7b58 <pcr_get=
+0x84>
> >>>> 0000000000ad7b40 <pcr_get+0x6c> li      r3,2500
> >>>> 0000000000ad7b44 <pcr_get+0x70> b       0000000000ad7b54 <pcr_get=
+0x80>
> >>>> 0000000000ad7b48 <pcr_get+0x74> li      r3,22
> >>>> 0000000000ad7b4c <pcr_get+0x78> blr
> >>>> 0000000000ad7b50 <pcr_get+0x7c> li      r3,5000
> >>>> 0000000000ad7b54 <pcr_get+0x80> stw     r3,0(r30)
> >>>> 0000000000ad7b58 <pcr_get+0x84> std     r29,16(r30)
> >>>> 0000000000ad7b5c <pcr_get+0x88> ld      r30,48(r31)
> >>>> 0000000000ad7b60 <pcr_get+0x8c> ld      r29,40(r31)
> >>>> 0000000000ad7b64 <pcr_get+0x90> addi    r1,r1,64
> >>>> 0000000000ad7b68 <pcr_get+0x94> ld      r0,16(r1)
> >>>> 0000000000ad7b6c <pcr_get+0x98> li      r3,0
> >>>> 0000000000ad7b70 <pcr_get+0x9c> mtlr    r0
> >>>> 0000000000ad7b74 <pcr_get+0xa0> ld      r31,-8(r1)
> >>>> 0000000000ad7b78 <pcr_get+0xa4> blr
> >=20
>=20
> --=20
>  Brandon Bergren
>  bdragon@FreeBSD.org
>=20
> =3D=3D=3D
> Mark Millard
> marklmi at yahoo.com
> ( dsl-only.net went
> away in early 2018-Mar)
>=20
>

--=20
  Brandon Bergren
  bdragon@FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9dc95f46-4a6c-44e2-b8aa-3af5bcc92579>