diff options
author | Andrey Borzenkov <arvidjaar@mail.ru> | 2006-03-25 03:07:07 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 08:22:52 -0800 |
commit | 2c3ca07d2f691a463b715c83122c87f57c2a7b7c (patch) | |
tree | 4aa00f81b79c6a5cb33631836d020ca32d787e20 /arch/i386 | |
parent | 9871728b756646e0d758a966ba00f2c0ff812817 (diff) | |
download | linux-2c3ca07d2f691a463b715c83122c87f57c2a7b7c.tar.gz linux-2c3ca07d2f691a463b715c83122c87f57c2a7b7c.tar.bz2 linux-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/i386')
-rw-r--r-- | arch/i386/boot/edd.S | 2 |
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 |