On Sat, Jul 31, 2010 at 05:26:09PM +0200, Sebastian Herbszt wrote:
Fix data returned in the int13dpt structure.
[...]
- if (size < 66) {
- if (size < 74) { disk_ret(regs, DISK_RET_SUCCESS); return; }
This is not correct - the EDD v3.0 spec has a 66 byte structure. The link in the bochs bug is for a proposed EDD v4 spec - but that hasn't been ratified - see:
http://www.t13.org/Standards/Default.aspx?DocumentType=3
Should EDD v4 be ratified and we add support for it, we'd need to support both v3 and v4 calls.
You should be able to find the current spec by googling for "specsedd30.pdf".
To be honest though, in my tests, I didn't find any OSs that use anything beyond the basic EDD v1 calls. Indeed, if you look at the Bochs code you'll see that it has an incorrect checksum calculation for EDD v2 and EDD v3. (It uses "checksum = ~checksum" where it should do "checksum = -checksum").
-Kevin