Summary: | Can't boot after upgrade from 12-ALPHA10 to 12-STABLE(r342278) | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Oleh Hushchenkov <o.hushchenkov> | ||||||
Component: | misc | Assignee: | Toomas Soome <tsoome> | ||||||
Status: | Closed FIXED | ||||||||
Severity: | Affects Some People | CC: | o.hushchenkov, tsoome | ||||||
Priority: | --- | Keywords: | regression | ||||||
Version: | 12.0-STABLE | ||||||||
Hardware: | amd64 | ||||||||
OS: | Any | ||||||||
Attachments: |
|
Description
Oleh Hushchenkov
2018-12-28 12:34:31 UTC
Created attachment 200701 [details]
lsdev after r342618
After upgrade to r342618 it can boot, but have significant delay on query nonexistent fd-drives.
Created attachment 200703 [details]
boot error before latest loader updates
The issue is identified. This system does have buggy int13h ah=15h (read drive type), and even if we got error from ah=08, we did end up mis-detecting the drive present. For fix/workaround is, we only use ah=08 for floppy and we do not ignore return value from it. Since ah=08 does not report sector size, we do need to set it manually. (In reply to Toomas Soome from comment #4) https://reviews.freebsd.org/D18723 fixes issue and it will be good to see it commited. A commit references this bug: Author: tsoome Date: Sat Jan 5 07:20:00 UTC 2019 New revision: 342785 URL: https://svnweb.freebsd.org/changeset/base/342785 Log: With buggy int13 ah=15, we can mis-identify the floppy devices. We have no option than trust INT13 ah=08 return code during the init phase. PR: 234460 Reported by: Oleh Hushchenkov MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D18723 Changes: head/stand/i386/libi386/biosdisk.c (In reply to commit-hook from comment #6) Thank you! A commit references this bug: Author: tsoome Date: Sun Jan 13 07:12:51 UTC 2019 New revision: 342992 URL: https://svnweb.freebsd.org/changeset/base/342992 Log: With buggy int13 ah=15, we can mis-identify the floppy devices. We have no option than trust INT13 ah=08 return code during the init phase. PR: 234460 Reported by: Oleh Hushchenkov Changes: _U stable/12/ stable/12/stand/i386/libi386/biosdisk.c A commit references this bug: Author: kevans Date: Sun Apr 21 03:36:07 UTC 2019 New revision: 346476 URL: https://svnweb.freebsd.org/changeset/base/346476 Log: MFC r341253, r341328, r342619, r342626, r342707, r342785, r342865 r341253: The libstand's panic() appends its own '\n' to the message, so that users of the API don't need to supply one. r341328: loader: create separate lists for fd, cd and hd, merge bioscd with biosdisk Create unified block IO implementation in BIOS version, like it is done in UEFI side. Implement fd, disk and cd device lists, this will split floppy devices from disks and will allow us to have consistent, predictable device naming (modulo BIOS issues). r342619: loader: create bio_alloc and bio_free for bios bounce buffer We do have 16KB buffer space defined in pxe.c, move it to bio.c and implement bio_alloc()/bio_free() interface to make it possible to use this space for other BIOS calls (notably, from biosdisk.c). r342626: Add Copyright. r342707: i386_parsedev() needs to support fd devices r342785: With buggy int13 ah=15, we can mis-identify the floppy devices. We have no option than trust INT13 ah=08 return code during the init phase. r342865: biospci_write_config args were backwards biospci_write_config args swapped length and value to write. Some hardware coped just fine, while other hardware had issues. PR: 155441, 234460 Changes: _U stable/11/ stable/11/stand/common/interp_forth.c stable/11/stand/i386/libfirewire/firewire.c stable/11/stand/i386/libi386/Makefile stable/11/stand/i386/libi386/bio.c stable/11/stand/i386/libi386/bioscd.c stable/11/stand/i386/libi386/biosdisk.c stable/11/stand/i386/libi386/bootinfo32.c stable/11/stand/i386/libi386/devicename.c stable/11/stand/i386/libi386/libi386.h stable/11/stand/i386/libi386/pxe.c stable/11/stand/i386/loader/chain.c stable/11/stand/i386/loader/conf.c stable/11/stand/i386/loader/main.c stable/11/stand/libsa/arp.c stable/11/stand/libsa/assert.c stable/11/stand/libsa/bzipfs.c stable/11/stand/libsa/netif.c stable/11/stand/libsa/sbrk.c stable/11/stand/uboot/lib/copy.c stable/11/stand/uboot/lib/net.c |