Stefan Reinauer wrote:
Dear Äsif
- Asif Haswarey asif.haswarey@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!