Kevin O'Connor writes:
On Fri, May 20, 2022 at 03:19:03PM +0000, Lev Kujawski wrote:
In accord with the El Torito specification[1], SeaBIOS now signals failure (AH=1 and CF) whenever attempts are made to terminate disk emulation (0x4B) for non-emulated drives. The prior behavior of always returning success caused the Solaris 9 Device Configuration Assistant (DCA) diskette (d1_image) to fail to boot as it was unable to access the non-existent underlying drive.
References:
[1]: "CF - Clear if system released CF - Set if system not in emulation mode"
C. E. Stevens and S. Merkin, '"El Torito" Bootable CD-ROM Format Specification', Phoenix Technologies and IBM, 1994, p. 17.
Thanks.
I noticed a bit of "code movement" in this patch. Is the only functional change to return DISK_RET_EPARAM when 134b is invoked on a non-emulated drive?
Cheers, -Kevin
Hi Kevin,
I decided to separate out the El Torito termination handler because it seemed the cleanest way to deal with the following three cases:
a) CONFIG_CDROM_BOOT=n
Old behavior: Prints a debug message about an unimplemented call New behavior: Just return failure
b) CONFIG_CDROM_BOOT=y and CONFIG_CDROM_EMU=n
Old behavior: Unimplemented call again New behavior: Fill in the CD-ROM specification table (no emulation)
For example, the Solaris install CD does not use disk emulation but still expects to get this table from the BIOS.
c) CONFIG_CDROM_BOOT=y and CONFIG_CDROM_EMU=y
(As described in the patch)
Kind regards, Lev Kujawski