Stefan Reinauer wrote:
Nothing _in_ OpenBIOS should be using client interface methods. If it did, we should fix that as we proceed.
With such a bug I wonder, however, how we could ever boot a client.
Yeah, that was one of my thoughts. Do we have a complete list of clients that have booted from OpenBIOS anywhere?
Attached patch should improve the behavior. It's untested though, possibly additional cleanup is needed after call-method...
Things get very slightly further, but it now throws an exception -21 (method not found):
Evaluating FCode... call-method : exception -21
seek failed
Can't mount root
byte-load: exception caught!
Here's the debug output with your patch applied:
: seek ( 8002000 800 8000 0 ffe4adc8 ) 00000000ffe28030: (") ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 ) 00000000ffe28048: call-method : call-method ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 ) 00000000ffe27db8: dup ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 4 ) 00000000ffe27dc0: 0= ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 0 ) 00000000ffe27dc8: do?branch ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 ) 00000000ffe27e18: dup ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 4 ) 00000000ffe27e20: >r ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 ) 00000000ffe27e28: dup ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 4 ) 00000000ffe27e30: cstrlen ( 8002000 800 8000 0 ffe4adc8 ffe28040 4 0 ) 00000000ffe27e38: rot ( 8002000 800 8000 0 ffe4adc8 4 0 ffe28040 ) 00000000ffe27e40: ?ihandle ( 8002000 800 8000 0 ffe4adc8 4 0 ffe28040 ) 00000000ffe27e48: (lit) ( 8002000 800 8000 0 ffe4adc8 4 0 ffe28040 ffe130d8 ) 00000000ffe27e58: catch ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27e60: dup ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ffffffffffffffdf ) 00000000ffe27e68: do?branch ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27e78: (") ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ffe27e88 c ) 00000000ffe27e98: type call-method ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27ea0: r@ ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf 4 ) 00000000ffe27ea8: dup ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf 4 4 ) 00000000ffe27eb0: cstrlen ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf 4 0 ) 00000000ffe27eb8: type ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27ec0: (") ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ffe27ed0 c ) 00000000ffe27ee0: type : exception ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27ee8: dup ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ffffffffffffffdf ) 00000000ffe27ef0: . -21 ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27ef8: cr ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27f00: r> ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf 4 ) 00000000ffe27f08: drop ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe27f10: (semis) [ Finished call-method ] ( 8002000 800 8000 0 ffe4adc8 9 ffffffffffffffdf ffe06d78 ffffffffffffffdf ) 00000000ffe28050: (semis) [ Finished seek ] seek failed
Can't mount root Aborted. 0 >
On first glance, it looks as if cstrlen is returning 0 which is probably stopping the method name from being set correctly.
HTH,
Mark.