Ron asked:
What I see from CVS and version that works for me( as of Jul-2003 )
Dave Ashley, what do you think?
I think Ron Minnich needs to get involved + get my patch working solidly with the current version of linux bios :^). I'm using my version based on that July snapshot of linuxbios, from my point of view it is rock solid. So the question of stability when applying my patch to the latest version isn't really something I can offer much help on, I haven't been updating my version of linuxbios as changes have been made.
However my guess is it is related to the vgabios callbacks I implemented. The docs I have (CLE266 bios porting guide as I recall) talk about what callbacks have to be implemented. I'm not implementing all of them. I didn't even understand the docs completely, and there are INT calls that being used that aren't even mentioned. The way to address that might be to run the bios emulator on the original vgabios and see how *it* sets up the registers for the callbacks.
I had a problem where if the motherboard got hot, the vga bios would just hang. I never figured out the cause, I hacked around it. Once an INT comes in with an invalid number, I pop out of the vgabios mode. That is a real hack where I restore the stack pointer to its original value before switching into 16 bit mode, or something...I don't recall exactly. It's in my patch. But if anything changed related to invoking the vga bios, my hack will probably be broken.
As I recall now that I think about it, I had to push more registers at some point than the code originally pushed. I can't even remember the context but I think it was vga related. I recall posting to this mailing list about it, I think Eric B. had some comment about already fixing this in V2. It was some really subtle problem as I recall...In thinking more about it I think this was related to V2 of linuxbios and I was using an older compiler to build it and my compiler was not making use of some register to store a local variable, so it wasn't push/poping it, so when calling the vgabios and it ended up trashing the register it was never preserved. This was V2 but perhaps it applies to V1 as well...
At any rate I think the best thing I can do to contribute is to get an epia-m into Ron's hands, and this is already accomplished. I don't think I've really helped any though just now :^(...
All I can say though is linuxbios works perfectly well for my needs.
-Dave