[OpenBIOS] Dictionary size limit per device instance

Asif Haswarey asif.haswarey at qlogic.com
Thu Aug 23 02:00:04 CEST 2007

> 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.


-----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 1:18 AM
To: The OpenBIOS Mailinglist
Subject: Re: [OpenBIOS] Dictionary size limit per device instance

Stefan Reinauer wrote:
> Dear Äsif
> * Asif Haswarey <asif.haswarey at qlogic.com> [070822 01:06]:
>> Does anyone happen to know what the dictionary size upper limit (for 
>> openbios) is hardcoded to per device instance?
> If I remember correctly there is no limit per device instance, but 
> during bootstrap the dictionary size is limited to 256k:
> kernel/bootstrap.c:#define DICTIONARY_SIZE (256*1024) /* 256k for the 
> dictionary */ and I think that value applies for the ports, too.
> It's just an arbitrary numbers, we chose it a couple of years ago when 
> 256k was the usual size of system flash roms, so the resulting 
> openbios would always fit in a such a small chip with LinuxBIOS and a 
> compressed OpenBIOS payload.
> Stefan

Well, Flash ROMs certainly have expanded since then!  I understand that sizes of 8 or 16 Meg are commonplace now, and that 4 Meg sizes are now considered obsolete (or at least, obsolescent) and that 8 Meg-gers are heading rapidly in that direction!

You might want to browse around the Sun sources.  What happened there, basically, was that, after the image in ROM was decompressed into memory and when FCode probing took place, the only real limits on dictionary size were the amount of physical memory and the difference between the start of the dictionary and the top of the address space!

There was a variable called LIMIT which marked the end of memory that was currently allocated for, and mapped to, the dictionary's address-space.
The word ALLOT had a clause that tested for the requested allotment going past LIMIT, and, if needed, would "just" allocate and map a large chunk of more memory that would last for a while....

With that arrangement, the amount of dictionary space available to plug-in device drivers was virtually unlimited!


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