x86/boot: Fix edd=off to skip mbr

When the fixes commit re-arranged the code, it made edd=off jump to the
mbr code instead of returning from the function.  Previously edd_done
was immediately before ret and skipped the MBR check.

Replace edd_done with .Ledd_mbr_sig for the start of the MBR checking,
and replace .Ledd_mbr_sig_skip with .Ledd_done to exit from the function.

edd=off jumps to .Ledd_done to return from the function, and internal
jumps go to .Ledd_mbr_sig to check edd=skipmbr.

Fixes: 5ec164fd61 ("x86/boot: re-arrange how/when we do disk I/O")
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit: 02e656f7c8
master date: 2025-10-16 10:25:27 +0200
This commit is contained in:
Jason Andryuk authored and Jan Beulich committed 2025-10-21 15:21:36 +02:00
1 parent aab88a3ef3
commit 8b29b6a484
1 file changed
+6 -6
+6 -6
View File
@@ -25,7 +25,7 @@
get_edd:
cmpb $2, bootsym(opt_edd) # edd=off ?
je edd_done
je .Ledd_done
# Do the BIOS Enhanced Disk Drive calls
# This consists of two calls:
@@ -48,7 +48,7 @@ edd_check_ext:
movb $0x41, %ah # 0x41 Check Extensions Present
movw $0x55AA, %bx # magic
int $0x13 # make the call
jc edd_done # no more BIOS devices
jc .Ledd_mbr_sig # no more BIOS devices
cmpw $0xAA55, %bx # is magic right?
jne edd_next # nope, next...
@@ -96,13 +96,13 @@ edd_legacy_done:
edd_next:
incb %dl # increment to next device
jz edd_done
jz .Ledd_mbr_sig
cmpb $EDD_INFO_MAX,bootsym(boot_edd_info_nr)
jb edd_check_ext
edd_done:
.Ledd_mbr_sig:
cmpb $1, bootsym(opt_edd) # edd=skipmbr ?
je .Ledd_mbr_sig_skip
je .Ledd_done
# Read the first sector of each BIOS disk device and store the 4-byte signature
.Ledd_mbr_sig_start:
@@ -160,7 +160,7 @@ edd_done:
jb .Ledd_mbr_sig_read
.Ledd_mbr_sig_done:
popw %es
.Ledd_mbr_sig_skip:
.Ledd_done:
ret
GLOBAL(boot_edd_info_nr)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.