diff options
author | Andrey Borzenkov <arvidjaar@mail.ru> | 2006-03-25 06:07:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-25 11:22:52 -0500 |
commit | 2c3ca07d2f691a463b715c83122c87f57c2a7b7c (patch) | |
tree | 4aa00f81b79c6a5cb33631836d020ca32d787e20 /arch/i386/boot | |
parent | 9871728b756646e0d758a966ba00f2c0ff812817 (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.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: | |||
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 |