On Thu, Nov 06, 2014 at 10:41:35PM +0100, Kevin Wolf wrote:
The full 66 bytes of the EDD 3.x buffer were already filled, but the size field wasn't updated so that we would return that only the first 30 bytes of it are valid (like for 2.x). Fix the size field.
SeaBIOS has never set the size above 30, and looking at the EDD3 spec I think the current behavior is correct:
The caller sets this value to the maximum buffer size. If the length of this buffer is less than 30 bytes, this function does not return the pointer to DPT extension. If the buffer size is 30 or greater on entry, it shall be set to 30 on exit. If the buffer size is between 26 and 29, it shall be set to 26 on exit. If the buffer size is less than 26 on entry an error is returned.
-Kevin