svn commit: r302214 - head/sys/powerpc/aim ["set usefdt=1" gets farther if I unload first; result more interesting]

Mark Millard markmi at dsl-only.net
Wed Nov 16 23:47:58 UTC 2016


[I pondered some more and came up with another test with different
results: gets farther before crashing.]

On 2016-Nov-16, at 2:40 PM, Mark Millard <markmi at dsl-only.net> wrote:

> [Top post of a new "set usefdt=1" test on a different type of PowerMac.]
> 
> I now have the SSD at -r308247 of head and have also tried "set usefdt=1" at
> the loader prompt on a PowerMac7,2 (before it was a PowerMac11,3 that was
> tested).
> 
>> Ok set usefdt=1
>> Ok boot
> 
> still failed. (My SPRG0 PowerMac G5 boot-reliability hack is present in what
> I tested.)
> 
> It got another "Error -2 adding node" but was adding a CPU node (PPC970).
> It hung just after the "kernel entry at 0x100120" message (earlier than
> the prior report relative to the message outputs shown).
> 
> All I have access to for powerpc64 are a couple of PowerMac11,3's and the
> one PowerMac7,2 so those are all that I can test.
> 
> [The PowerMac11,3 test likely was using sc but this PowerMac7,2 was using
> vt --in case that might matter for something.]
> 
> If it is likely to make a difference I could try without the SPRG0 hack. But
> so far you have not reported that "set usefdt=1" would be likely to depend
> on such details.
> 
> Otherwise as far as I know there is no more that I have context to help with
> for this type of attempt to avoid depending on Apple's OpenFirmware in the
> kernel. So far the SPRG0 hack has been the most useful technique for booting
> reliably on PowerMac G5's. (And I've not been able to reproduce Jukka U.'s
> iicsmb_load="YES" in /boot/loader.conf problems so the run-time module
> loading issue is likely a distinct issue.)
> 
> ===
> Mark Millard
> markmi at dsl-only.net

On the PowerMac11,3 I've now tried at the loader prompt:

Ok unload
Ok set usefdt=1
Ok boot

(or autoboot). This does get farther in the boot sequence
(from hand written notes):

. . .
cpu3: dev=0xc7f0
random: unblocking device
random: entropy device external interface
kdb0 at kdbmux0

fatal kernel trap

exception = 0x700 (program)
     srr0 = 0x10c384
     srr1 = 0x9000000000081032
curthread = 0x12177a0
   pid = 0 comm = swapper

[thread pid 0 tid 100000]
stopped at .xpt_lock_buses: illegal instruction 0
db>

Multiple tries stopped at this same point with the same
text showing.

It is not far enough along to take input to the db> prompt.
But I could rebuild with an internal db script that executes
before the db> prompt appears.

objdump -d /boot/kernel/kernel shows:

. . .
  10c374:       4e 80 00 20     blr
  10c378:       00 00 00 00     .long 0x0
  10c37c:       00 00 00 01     .long 0x1
  10c380:       80 05 00 00     lwz     r0,0(r5)

000000000010c384 <.xpt_lock_buses>:
  10c384:       7c 08 02 a6     mflr    r0
  10c388:       f8 01 00 10     std     r0,16(r1)
  10c38c:       fb e1 ff f8     std     r31,-8(r1)
  10c390:       f8 21 ff 81     stdu    r1,-128(r1)
  10c394:       7c 3f 0b 78     mr      r31,r1
  10c398:       7d a4 6b 78     mr      r4,r13
  10c39c:       60 00 00 00     nop
  10c3a0:       e9 22 83 58     ld      r9,-31912(r2)
  10c3a4:       2b a9 00 04     cmpldi  cr7,r9,4
  10c3a8:       40 9e 00 44     bne     cr7,10c3ec <.xpt_lock_buses+0x68>
. . .

That does not match 0 as the encoding at 0x10c384, suggesting that the
code has not been correctly loaded and made available to the processor.



Older notes. . .

On 2016-Oct-18, at 5:30 PM, Mark Millard <markmi at dsl-only.net> wrote:

> [I've finally got a access to the powerpc's and powerpc64's, at least for a little bit. But other things may take much of my time.]
> 
> Nathan Whitehorn nwhitehorn at freebsd.org  wrote on Sun Jun 26 23:38:36 UTC 2016 [back in 11-CURRENT days]:
> 
>>> . . .
>>>> Author: nwhitehorn
>>>> Date: Sun Jun 26 18:43:42 2016
>>>> New Revision: 302214
>>>> URL:
>>>> https://svnweb.freebsd.org/changeset/base/302214
>>>> 
>>>> 
>>>> Log:
>>>> Enter 64-bit mode as early as possible in the 64-bit PowerPC boot sequence.
>>>> Most of the effect of setting MSR[SF] is that the CPU will stop ignoring
>>>> the high 32 bits of registers containing addresses in load/store
>>>> instructions. As such, the kernel was setting it only when it began to
>>>> need access to high memory. MSR[SF] also affects the operation of some
>>>> conditional instructions, however, and so setting it at late times could
>>>> subtly break code at very early times. This fixes use of the FDT mode in
>>>> loader, and FDT boot more generally, on 64-bit PowerPC systems.
>>>> 
>>>> Hardware provided by: IBM LTC
>>>> Approved by: re (kib)
>>>> 
>>>> Modified:
>>>> head/sys/powerpc/aim/aim_machdep.c
>>>> head/sys/powerpc/aim/locore64.S
>>> . . .
>> 
>> . . .
>> 
>> One thing it would be great to have some testing on after this change is 
>> the FDT layer in loader. If you set usefdt=1 from the loader prompt, 
>> loader will distill the OF device tree into an FDT and then stop Open 
>> Firmware completely before transferring control to FreeBSD. This should 
>> avoid any possible problems accessing Open Firmware from the kernel, as 
>> well as making boot a little faster.
>> -Nathan
> 
> I updated the old 2016-June-1 SSD contents to head's -r302214 and did
> buildworld and buildkernel and installed them, but with my PowerMac G5
> boot-hack still present. This was to be the first test if things went
> well for "set usefdst=1". They did not so no tests without the hack were
> made.
> 
> A normal boot works fine for -r203214 but use of "set usefdt=1" before
> "boot" fails.
> 
> A hand transcribed report of the visible "set usefdt=1" results are:
> 
>> Ok set usefdt=1
>> Ok boot
>> Booting...
>> Error -2 adding node /ht at 0,f2000000/pci at 8/macio at 7/i2c at 18000/i2c-bus at 0 (i2c-bus at 0), skipping
>> 
>> kernel entry at 0x100120
>> Invalid memory access at %SRR0: 00000000.00100120 %SRR1: 10000000.00083030
> 
> It then reports the Apple model and firmware version and and some other
> Apple text and gets stuck. (Power switch time.)
> 
> 
> Note: I've not updated /usr/ports so the modern binutils poewrpc64 issue
> is not involved:
> 
>> #svnlite info /usr/ports/ | grep "Re[lv]"
>> Relative URL: ^/head
>> Revision: 415874
>> Last Changed Rev: 415874
> 
>> # uname -apKU
>> FreeBSD FBSDG5C0 11.0-ALPHA5 FreeBSD 11.0-ALPHA5 #40 r302214M: Tue Oct 18 06:11:02 PDT 2016     root at FBSDG5C0:/usr/obj/xtoolchain/powerpc.powerpc64/usr/src/sys/GENERIC64vtsc-NODEBUG  powerpc powerpc64 1100120 1100120
> 
> devel/powrepc64-gcc was used to do the system builds and it is a libc++
> based build.
> 
>> # svnlite info /usr/src/ | grep "Re[lv]"
>> Relative URL: ^/head
>> Revision: 302214
>> Last Changed Rev: 302214
> 
>> # svnlite status /usr/src
>> ?       /usr/src/.snap
>> M       /usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
>> M       /usr/src/lib/csu/powerpc64/Makefile
>> ?       /usr/src/restoresymtable
>> ?       /usr/src/sys/arm/conf/RPI2-NODBG
>> M       /usr/src/sys/boot/ofw/Makefile.inc
>> M       /usr/src/sys/boot/powerpc/Makefile
>> M       /usr/src/sys/boot/powerpc/Makefile.inc
>> M       /usr/src/sys/boot/uboot/Makefile.inc
>> M       /usr/src/sys/conf/Makefile.powerpc
>> M       /usr/src/sys/conf/kern.mk
>> M       /usr/src/sys/conf/kmod.mk
>> ?       /usr/src/sys/powerpc/conf/GENERIC64-NODBG
>> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc
>> ?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODEBUG
>> ?       /usr/src/sys/powerpc/conf/GENERICvtsc
>> ?       /usr/src/sys/powerpc/conf/GENERICvtsc-NODEBUG
>> M       /usr/src/sys/powerpc/ofw/ofw_machdep.c
>> M       /usr/src/sys/powerpc/powerpc/exec_machdep.c
> 
> 
> 
> 
> ===
> Mark Millard
> markmi at dsl-only.net



===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-ppc mailing list