aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/boot
diff options
context:
space:
mode:
authorAndrey Borzenkov <arvidjaar@mail.ru>2006-03-25 06:07:07 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-25 11:22:52 -0500
commit2c3ca07d2f691a463b715c83122c87f57c2a7b7c (patch)
tree4aa00f81b79c6a5cb33631836d020ca32d787e20 /arch/i386/boot
parent9871728b756646e0d758a966ba00f2c0ff812817 (diff)
[PATCH] Fix EDD to properly ignore signature of non-existing drives
Some BIOSes do not always set CF on error before return from int13. The patch adds additional check for status being zero (AH == 0). Signed-off-by: Andrey Borzenkov <arvidjaar@mail.ru> Cc: Matt Domsch <Matt_Domsch@dell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/boot')
-rw-r--r--arch/i386/boot/edd.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/i386/boot/edd.S b/arch/i386/boot/edd.S
index d8d69f2b911d..4b84ea216f2b 100644
--- a/arch/i386/boot/edd.S
+++ b/arch/i386/boot/edd.S
@@ -76,6 +76,8 @@ edd_mbr_sig_read:
76 popw %es 76 popw %es
77 popw %bx 77 popw %bx
78 jc edd_mbr_sig_done # on failure, we're done. 78 jc edd_mbr_sig_done # on failure, we're done.
79 cmpb $0, %ah # some BIOSes do not set CF
80 jne edd_mbr_sig_done # on failure, we're done.
79 movl (EDDBUF+EDD_MBR_SIG_OFFSET), %eax # read sig out of the MBR 81 movl (EDDBUF+EDD_MBR_SIG_OFFSET), %eax # read sig out of the MBR
80 movl %eax, (%bx) # store success 82 movl %eax, (%bx) # store success
81 incb (EDD_MBR_SIG_NR_BUF) # note that we stored something 83 incb (EDD_MBR_SIG_NR_BUF) # note that we stored something