On 2009/11/16 at 07:51, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk
wrote:
Hi Nick,
By default the OpenBIOS fcode evaluator creates headerless words, and so they won't appear in any wordlists which are visible to the system.
In order to make the words visible, you need to open up forth/admin/nvram.fs and change the value of fcode-debug? from false to true in the NVRAM variables section. If you then rebuild OpenBIOS, the words generated by the Fcode evaluator will then show up in the relevant package when you type "words".
I also figured out that for some of the words to become available I have to actually execute a real boot - not sure why.
Incidentally, I see that Blue Swirl has also committed the Forth source debugger over the weekend, so you should be able to do "debug do-boot" followed by "do-boot" and then step through the process to see where it fails.
Here's the output from "do-boot" once I turn on debugging for Solaris Nevada B127:
0 > do-boot : do-boot ( Empty ) 00000000ffe388e8: parse-bootargs ( Empty ) 00000000ffe388f0: halt? ( 0 ) 00000000ffe388f8: do?branch ( Empty ) 00000000ffe38948: get-bootdev ( Empty ) 00000000ffe38950: load-pkg ( Empty ) 00000000ffe38958: mount-root seek failed
Can't mount root Aborted. 0 >
Again, not sure why it can't mount-root, but that seems to be the issue. And, here's the output from a debug do-boot for Solaris 9:
0 > do-boot : do-boot ( Empty ) 00000000ffe36b30: sign-on FCode UFS Reader 1.12 00/07/17 15:48:16. ( Empty ) 00000000ffe36b38: real-devname ( Empty ) 00000000ffe36b40: halt? ( 0 ) 00000000ffe36b48: do?branch ( Empty ) 00000000ffe36b98: loader-base ( 6000 ) 00000000ffe36ba0: plat-booter$ ( 6000 ffe359f0 12 ) 00000000ffe36ba8: diagnostic-mode? ( 6000 ffe359f0 12 ffffffffffffffff ) 00000000ffe36bb0: do?branch ( 6000 ffe359f0 12 ) 00000000ffe36bc0: (") ( 6000 ffe359f0 12 ffe36bd0 9 ) 00000000ffe36be0: type Loading: ( 6000 ffe359f0 12 ) 00000000ffe36be8: 2dup ( 6000 ffe359f0 12 ffe359f0 12 ) 00000000ffe36bf0: type /platform//ufsboot ( 6000 ffe359f0 12 ) 00000000ffe36bf8: cr ( 6000 ffe359f0 12 ) 00000000ffe36c00: get-file ( ffffffffffffffff ) 00000000ffe36c08: do?branch ( Empty ) 00000000ffe36c18: loader-base ( 6000 ) 00000000ffe36c20: def-booter$ ( 6000 ffe359f0 17 ) 00000000ffe36c28: diagnostic-mode? ( 6000 ffe359f0 17 ffffffffffffffff ) 00000000ffe36c30: do?branch ( 6000 ffe359f0 17 ) 00000000ffe36c40: (") ( 6000 ffe359f0 17 ffe36c50 9 ) 00000000ffe36c60: type Loading: ( 6000 ffe359f0 17 ) 00000000ffe36c68: 2dup ( 6000 ffe359f0 17 ffe359f0 17 ) 00000000ffe36c70: type /platform/sun4u/ufsboot ( 6000 ffe359f0 17 ) 00000000ffe36c78: cr ( 6000 ffe359f0 17 ) 00000000ffe36c80: get-file ( ffffffffffffffff ) 00000000ffe36c88: do?branch ( Empty ) 00000000ffe36c98: (") ( ffe36ca8 11 ) 00000000ffe36cc0: type Boot load failed. ( Empty ) 00000000ffe36cc8: cr ( Empty ) 00000000ffe36cd0: exit ok
-Nick
HTH,
Mark.
-------- This e-mail may contain confidential and privileged material for the sole use of the intended recipient. If this email is not intended for you, or you are not responsible for the delivery of this message to the intended recipient, please note that this message may contain SEAKR Engineering (SEAKR) Privileged/Proprietary Information. In such a case, you are strictly prohibited from downloading, photocopying, distributing or otherwise using this message, its contents or attachments in any way. If you have received this message in error, please notify us immediately by replying to this e-mail and delete the message from your mailbox. Information contained in this message that does not relate to the business of SEAKR is neither endorsed by nor attributable to SEAKR.
[...]
I also figured out that for some of the words to become available I have to actually execute a real boot - not sure why.
The primary booter you are reading from blocks 1-15 of the boot partition create a bunch of words (most importantly, do-boot). It also creates a package, probably /package/hsfs-file-system
Here's the output from "do-boot" once I turn on debugging for Solaris Nevada B127:
0 > do-boot : do-boot ( Empty ) 00000000ffe388e8: parse-bootargs ( Empty ) 00000000ffe388f0: halt? ( 0 ) 00000000ffe388f8: do?branch ( Empty ) 00000000ffe38948: get-bootdev ( Empty ) 00000000ffe38950: load-pkg ( Empty ) 00000000ffe38958: mount-root seek failed
Can't mount root Aborted. 0 >
Again, not sure why it can't mount-root, but that seems to be the issue.
Yup. The seek failed indicates it wasn't able to read something it needed to read. So the next step is to do the above, only instead of calling mount-root, figure out what mount-root has in it, and execute those one-by-one at the ok prompt. Or use the debugger to single step through it.
Somewhere in there either you are coming up with some bad disk addresses, or the HBA driver is failing a read. The alternative would be to debug the HBA driver and see what disk reads you are being asked to do, and try to trace backwards.
Nick Couchman wrote:
00000000ffe38958: mount-root
Here you want to debug mount-root
seek failed
Can't mount root Aborted. 0 >
Again, not sure why it can't mount-root, but that seems to be the issue. And, here's the output from a debug do-boot for Solaris 9:
00000000ffe36ba0: plat-booter$ ( 6000 ffe359f0 12 )
Try debugging plat-booter$... It looks wrong to me.
00000000ffe36c70: type /platform/sun4u/ufsboot ( 6000 ffe359f0 17 ) 00000000ffe36c78: cr ( 6000 ffe359f0 17 ) 00000000ffe36c80: get-file ( ffffffffffffffff )
And get-file...
Stefan