[OpenBIOS] Sparc64 OpenBIOS

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Thu Nov 19 10:50:43 CET 2009


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.

-- 
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs



More information about the OpenBIOS mailing list