aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAndrey Borzenkov <arvidjaar@mail.ru>2006-03-25 03:07:07 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-25 08:22:52 -0800
commit2c3ca07d2f691a463b715c83122c87f57c2a7b7c (patch)
tree4aa00f81b79c6a5cb33631836d020ca32d787e20 /arch
parent[PATCH] kernel/params.c: make param_array() static (diff)
downloadlinux-dev-2c3ca07d2f691a463b715c83122c87f57c2a7b7c.tar.xz
linux-dev-2c3ca07d2f691a463b715c83122c87f57c2a7b7c.zip
[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')
-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:
popw %es
popw %bx
jc edd_mbr_sig_done # on failure, we're done.
+ cmpb $0, %ah # some BIOSes do not set CF
+ jne edd_mbr_sig_done # on failure, we're done.
movl (EDDBUF+EDD_MBR_SIG_OFFSET), %eax # read sig out of the MBR
movl %eax, (%bx) # store success
incb (EDD_MBR_SIG_NR_BUF) # note that we stored something