Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jul 2014 18:18:12 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 176748] [libi386] [patch] BTX Loader i386 incorrectly probes EDD, possibly resulting division by zero
Message-ID:  <bug-176748-8-DQHhEZQI1J@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-176748-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-176748-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=176748

John Baldwin <jhb@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jhb@FreeBSD.org

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

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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-176748-8-DQHhEZQI1J>