[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PCI and Expansion ROM
-> However, your sentiment that because some BIOSes won't load a 64K ROM image,
-> that they are somehow broken seems like sour grapes to me. In the PCI 2.1
-> spec, section 6.3.3.1.1, pg. 203, it talks about what steps the system BIOS
-> should take when handling expansion ROMs. In step 2, it says, "... copy it
-> from ROM into the compatibility area of RAM (typically 0C0000h to 0E0000h) ..."
-> That means that there is only 128K of memory space available TOTAL for all
-> expansion ROMs in the system, so requesting half of that for your device
-> seems greedy. Later, the spec also states that if a VGA device with an
-> expansion ROM exists, that that ROM *MUST* (emphasis mine) be copied to
-> 0C0000h, further limiting available space for all other ROMs. If the BIOS
-> cannot find any memory space large enough for your ROM, then it's only course
-> of action is to not run you, correct?
Another course of action is to abolish vestigial Mess-DOS-isms such as
this whole section (6.3.3). Then people who are using real operating
systems on real computers won't keep tripping over incompatibilities
because they aren't using 80586s to emulate 8088s.
Those who wish to support Mess-DOS could use a Virtual Machine Manager
(VMM) (such as Linux or Windows) to map selected ROMs into what Mess-DOS
calls "high memory" (A0000h to 100000h).
->
-> As for high memory, I don't think that you really want to use high memory
-> (I'm assuming that by high memory, you're referring to the 64K-16 bytes above
-> 1 Meg that can be accessed in real mode with a segment of FFFFh) during ROM
-> time. After all, since the ROM is executing before any OS stuff is loaded,
-> when the OS does come it, it will take over high memory and trash anything
-> that you've got there, right?
Perhaps "high memory" means toward the top of actual memory, not at the
top of yet another vestigial Mess-DOS-ism?
->
-> However, there is some room for interpretation of what exactly "compatibility
-> area of RAM" where the ROMs get copied to really means. According to the spec,
-> it is "typically 0C0000h to 0E0000h", but is it really only that on x86 PC's?
Yes. See para 6.3.3, PCI SPec 2.1.
-> But, this issue #3 also clears up my confusion about why in your issue #2
-> you state the need to access the real physical ROM and not having Int15/Fun87
-> working. My personal opinion (and I'm warning you that I'm a hardware guy...)
-> is that breaking a ROM up into small segments and then having one portion of
-> your ROM directly load other parts seems to be on the fringe of the spirit of
-> PCI. A much better solution, in my mind, would be to simply try to make a
-> smaller ROM (which, I admit may not always be possible.)
An even better solution is to let 'em have any size ROM they want. This
means getting rid of vestigial Mess-DOS-isms, of course.
--
-- C^2
___ __ /___ ___
| / /_ _ \ |
| / / // / \ |
| \ / //_/ / |
|___\_ /____/___|
/
H E W L E T T
P A C K A R D
Charles Curley is not an employee of Hewlett Packard.
This message does not necessarily represent the opinion(s) of HP.
ˆ w