[Bug 255072] boot (legacy): no progress beyond 'BIOS DRIVE D: is disk1'

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 23 Jan 2022 19:15:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255072

--- Comment #36 from spell@itl.ua ---
Seems caught it.

The crash occurs inside bd_edd_io(), wich calls BTX-owned int 31h which in turn
calls BIOS-owned int 13h, and it comes this last int is the one who do fail.
The matter why this is so difficult to catch it is it crashes randomly. With no
obvious differences in environment it may succeed or crash, approximately 99/1.

11.2 loader crashes too, though very rarely.
The rule is: more int 13h during loader run - more crash chance.
By default 11.2 loader does not enter zfs probing stage and so requests only
two or three int 13h per disk. With zfs probing (which is on by default in
12.3) the count of these requests is about a hundred, so the chance to crash is
much bigger.

Didn't try all the functions of int 13h but at least CMD_READ_LBA, CMD_READ_CHS
and one of CMD_CHECK_EDD, CMD_EXT_PARAM lead to the crash.

These are my tests that proof this statement:

12.3 loader: I've added for(i=0; i<100; i++) with identical bd_edd_io() calls
right after the original bd_edd_io() call, and the crash occurs inside of this
bunch of calls (every time on different i value).

11.2 loader: The same with bd_int13probe(). The loader crashes every time on
this or that i value.

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