On 2009/11/17 at 08:12, Tarl Neustaedter Tarl.Neustaedter@Sun.COM wrote:
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.
Here's that output:
0 > mount-root : mount-root ( Empty ) 00000000ffe35d28: boot-dev$ ( ffe357a8 6 ) 00000000ffe35d30: fs-pkg$ ( ffe357a8 6 ffe317c0 10 ) 00000000ffe35d38: $open-package seek failed ( 0 ) 00000000ffe35d40: (lit) ( 0 ffe35728 ) 00000000ffe35d50: (to) ( Empty ) 00000000ffe35d58: fs-ih ( 0 ) 00000000ffe35d60: 0= ( ffffffffffffffff ) 00000000ffe35d68: do?branch ( Empty ) 00000000ffe35d78: (") ( ffe35d88 10 ) 00000000ffe35d98: die Can't mount root Aborted. 0 >
So, I added debug for "$open-package" which led to "open-package", which I also debugged - here's the output from mount-root after turning on all that debugging:
0 > mount-root : mount-root ( Empty ) 00000000ffe35d28: boot-dev$ ( ffe357a8 6 ) 00000000ffe35d30: fs-pkg$ ( ffe357a8 6 ffe317c0 10 ) 00000000ffe35d38: $open-package : $open-package ( ffe357a8 6 ffe317c0 10 ) 00000000ffe13690: find-package ( ffe357a8 6 ffe32558 ffffffffffffffff ) 00000000ffe13698: do?branch ( ffe357a8 6 ffe32558 ) 00000000ffe136a8: open-package : open-package ( ffe357a8 6 ffe32558 ) 00000000ffe13548: create-instance ( ffe357a8 6 ffe4ad30 ) 00000000ffe13550: dup ( ffe357a8 6 ffe4ad30 ffe4ad30 ) 00000000ffe13558: 0= ( ffe357a8 6 ffe4ad30 0 ) 00000000ffe13560: do?branch ( ffe357a8 6 ffe4ad30 ) 00000000ffe13588: >r ( ffe357a8 6 ) 00000000ffe13590: strdup ( ffe493a0 6 ) 00000000ffe13598: r@ ( ffe493a0 6 ffe4ad30 ) 00000000ffe135a0: >in.arguments ( ffe493a0 6 ffe4ad78 ) 00000000ffe135a8: 2! ( Empty ) 00000000ffe135b0: (lit) ( ffe135e0 ) 00000000ffe135c0: (lit) ( ffe135e0 4 ) 00000000ffe135d0: dobranch ( ffe135e0 4 ) 00000000ffe135e8: r@ ( ffe135e0 4 ffe4ad30 ) 00000000ffe135f0: (lit) ( ffe135e0 4 ffe4ad30 ffe13310 ) 00000000ffe13600: catch : open-package ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe2b238 ) 00000000ffe13548: create-instance ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b558 ) 00000000ffe13550: dup ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b558 ffe4b558 ) 00000000ffe13558: 0= ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b558 0 ) 00000000ffe13560: do?branch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b558 ) 00000000ffe13588: >r ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ) 00000000ffe13590: strdup ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ) 00000000ffe13598: r@ ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b558 ) 00000000ffe135a0: >in.arguments ( 1 ffe2fe38 ffe4b1d8 ffe4b548 0 0 ffe4b5a0 ) 00000000ffe135a8: 2! ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ) 00000000ffe135b0: (lit) ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 ) 00000000ffe135c0: (lit) ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 4 ) 00000000ffe135d0: dobranch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 4 ) 00000000ffe135e8: r@ ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 4 ffe4b558 ) 00000000ffe135f0: (lit) ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 4 ffe4b558 ffe13310 ) 00000000ffe13600: catch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffffffffffffffff 0 ) 00000000ffe13608: do?branch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffffffffffffffff ) 00000000ffe13628: do?branch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ) 00000000ffe13638: r> ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe4b558 ) 00000000ffe13640: dobranch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe4b558 ) 00000000ffe13668: (semis) [ Finished open-package ] seek failed ( 8006000 800 4 ffffffffffffffff ) 00000000ffe13608: do?branch ( 8006000 800 4 ) 00000000ffe13618: 3drop ( Empty ) 00000000ffe13620: false ( 0 ) 00000000ffe13628: do?branch ( Empty ) 00000000ffe13650: r> ( ffe4ad30 ) 00000000ffe13658: destroy-instance ( Empty ) 00000000ffe13660: false ( 0 ) 00000000ffe13668: (semis) [ Finished open-package ] ( 0 ) 00000000ffe136b0: dobranch ( 0 ) 00000000ffe136d0: (semis) [ Finished $open-package ] ( 0 ) 00000000ffe35d40: (lit) ( 0 ffe35728 ) 00000000ffe35d50: (to) ( Empty ) 00000000ffe35d58: fs-ih ( 0 ) 00000000ffe35d60: 0= ( ffffffffffffffff ) 00000000ffe35d68: do?branch ( Empty ) 00000000ffe35d78: (") ( ffe35d88 10 ) 00000000ffe35d98: die Can't mount root Aborted.
Based on that output, it's hard for me to tell what about "open-package'" failed
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.
I'm already headed down this path, so I'll stick there, now, unless you have some hints for going about debugging the HBA driver, which I would assume I would do from the Qemu source code side...
-Nick
-------- 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.
[...]
Based on that output, it's hard for me to tell what about "open-package'" failed
Yup. What I spot:
: mount-root ( Empty ) 00000000ffe35d28: boot-dev$ ( ffe357a8 6 ) 00000000ffe35d30: fs-pkg$ ( ffe357a8 6 ffe317c0 10 ) 00000000ffe35d38: $open-package : $open-package ( ffe357a8 6 ffe317c0 10 )
It looks like fs-pkg$ names the package it's opening. I'm guessing that's hsfs-file-system, but you should probably verify that's what is in that string (do a "2dup type" before calling $open-package). If that's correct, then rather than descending into open-package, you probably want to put a breakpoint at "open" in /packages/hsfs-file-system, which is where that will end up after much wandering around. Then proceed from there - you really don't want to trace through instance creation.
The reason you weren't able to see all that (which would have been overwhelming) is a bit further down:
00000000ffe135f0: (lit) ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffe135e0 4 ffe4b558 ffe13310 ) 00000000ffe13600: catch ( 1 ffe2fe38 ffe4b1d8 ffe4b548 ffffffffffffffff 0 )
That's basically a subroutine call to ffe13310, which it didn't show.
Oops. That wasn't very readable. I'm not sure what happened. Trying again:
What I spot:
0 > mount-root : mount-root ( Empty ) 00000000ffe35d28: boot-dev$ ( ffe357a8 6 ) 00000000ffe35d30: fs-pkg$ ( ffe357a8 6 ffe317c0 10 ) 00000000ffe35d38: $open-package
It looks like fs-pkg$ names the package it's opening. I'm guessing that's hsfs-file-system, but you should probably verify that's what is in that string (do a "2dup type" before calling $open-package). If that's correct, then rather than descending into open-package, you probably want to put a breakpoint at "open" in /packages/hsfs-file-system, which is where that will end up after much wandering around. Then proceed from there - you really don't want to trace through instance creation.