[OpenBIOS] Dictionary size limit per device instance
Asif Haswarey
asif.haswarey at qlogic.com
Wed Aug 29 00:06:41 CEST 2007
Ok, I found out what the problem is!
It's the FCode-Number limit, ie. 0x0fff.
For details please look at:
OpenFirmware IEEE-1275 (1994) spec. section 2.3.43.
If I got this right, I am allowed to define/declare only 0x0fff number of
constants and/or functions, variables, defers etc. for which the
tokenizer assigns a FCode-Number in the final tokenized FCode image.
Please look at the constant symbol FCODE_LIMIT in nextfcode.h
in fcode-utils-1.0.2 suite at:
http://www.openbios.org/viewvc/fcode-utils.tar.gz?view=tar&root=OpenBIOS&pathrev=113
Now given that today we have complex feature rich PCI based
plugin cards, I can see FCode images of size 50K+ in order to
support the various features. I don't expect to see a revision of the
original OpenFirmware IEEE-1275 (1994) spec., but should we reconsider this
FCode-Number limitation?
Moreover, I am actually running into this limitation for one of our PCI-E
plugin cards!
_____________
Äsif Haswaréy
QLogic Corporation
FCode Driver Development
-----Original Message-----
From: openbios-bounces at openbios.org [mailto:openbios-bounces at openbios.org] On Behalf Of David L. Paktor
Sent: Wednesday, August 22, 2007 7:30 PM
To: The OpenBIOS Mailinglist
Subject: Re: [OpenBIOS] Dictionary size limit per device instance
Asif Haswarey wrote:
>> With that arrangement, the amount of dictionary space available to plug-in device drivers was virtually unlimited!
>>
>
> Weel, I ran into this problem while testing (QLogic iSCSI) FCode I had developed for the SPARC.
> I experimented with a dummy fcode consisting of only constant declarations.
> The FCode failed to get interpreted when the total tokenized size
> reached just a little above 50KB (that's kilo-bytes). Unfortunately I system OBP would not let me use the "here"
> word to find out the exact size of the dictionary space my dummy FCode
> used up. So I figured the dictionary space available for my FCode is
> basically a portion of the overall dictionary space available to the
> system. In short, every device FCode has a limit of dictionary space available to it.
>
> Is my understand correct? If so, then this is what my question is about concerning OpenBIOS.
>
Well, it's not an inherent characteristic of Open Firmware, nor of OBP.
It might depend on the
platform where you were running your test. If it was one of the E{3..6}{0,5}00 servers, that would be consistent. Incidentally, what happened when you hit the limit?
As for seeing "here" from FCode:
defer my_here
' noop to my_here
" here" $find if to my_here then
( you might need a "drop" after the "if"; I forgot whether $find returns just the XT or the "immediate" indicator, too...)
Then you can rock'n'roll with my_here to show you where you are...
--
David L. Paktor dlpaktor at netscape.net
--
OpenBIOS http://openbios.org/
Mailinglist: http://lists.openbios.org/mailman/listinfo
Free your System - May the Forth be with you
More information about the OpenBIOS
mailing list