[Bug 176748] [libi386] [patch] BTX Loader i386 incorrectly probes EDD, possibly resulting division by zero

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jul 11 18:18:12 UTC 2014


John Baldwin <jhb at FreeBSD.org> changed:

           What    |Removed                     |Added
                 CC|                            |jhb at FreeBSD.org

--- Comment #2 from John Baldwin <jhb at FreeBSD.org> ---
Created attachment 144581
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=144581&action=edit

This patch is not correct.  The '48h' function is always required if EDD is
present and is part of the 'Fixed Disk Access' subset as defined in EDD 3.0.

The part of the parameter block conditional on the 'EDD' subset returned by
'48h' is the DPTE pointer (edd_params_seg and edd_params_off in 'struct
edd_params').  The boot code does not use that.  In addition, while there is a
flag in the 'flags' field (bit 2) that determines if the geometry returned in
'struct edd_params' is correct, that flag only covers the 'cylinders', 'heads',
and 'sectors_per_track'.  The BIOS is always required to populate 'sectors' and
'sector_size' with valid values.

Instead, it seems your BIOS is just broken, but that can be worked around by
ignoring sector counts of 0.

You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-bugs mailing list