x86: fix ghost EDD devices in /sys again
authorAndrey Borzenkov <arvidjaar@newmail.ru>
Sat, 6 Sep 2008 08:40:21 +0000 (12:40 +0400)
committerIngo Molnar <mingo@elte.hu>
Sat, 6 Sep 2008 14:30:36 +0000 (16:30 +0200)
commit464f04c9e9b3b1c4f5ffb89c51d8ba2a2034c846
treeea736cae3f30e2e04c27c6c51e4ee3efffa8e2fe
parentd2f37384fc9957ad0162d5285a5660f0a86ef243
x86: fix ghost EDD devices in /sys again

> This is regression but old enough. Apparently I had for whatever reasons
> EDD turned off till recently. This is 2.6.27-rc5 just in case.
>
> In 2006 I fixed ghost devices due to buggy BIOS:
>
> http://marc.info/?l=linux-kernel&m=114087765422490&w=2
>
> Later edd.S has been rewritten in C, and apparently this patch has been
> lost:
>
> {pts/1}% ls /sys/firmware/edd
> int13_dev80/  int13_dev84/  int13_dev88/  int13_dev8c/
> int13_dev81/  int13_dev85/  int13_dev89/  int13_dev8d/
> int13_dev82/  int13_dev86/  int13_dev8a/  int13_dev8e/
> int13_dev83/  int13_dev87/  int13_dev8b/  int13_dev8f/
>
> But I have just a single disk. This is the same system BTW.

Some BIOSes do not always set CF on error before return from int13.
The patch adds additional check for status being zero (AH == 0).

This was fixed for edd.S in
http://marc.info/?l=linux-kernel&m=114087765422490&w=2, but lost
again when edd.S was rewritten in C.

Signed-off-by: Andrey Borzenkov <arvidjaar@mail.ru>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/boot/edd.c