[syslinux] [PATCH 9/9] Workaround for a buggy get info BIOS

Frediano Ziglio frediano.ziglio at citrix.com
Wed Oct 3 07:26:14 PDT 2012


This issue drive parameters only one time to avoid to have disk read failure.
This happened just on a specific machine, probably the BIOS is buggy but
the fix didn't have any regression.

Signed-off-by: Frediano Ziglio <frediano.ziglio at citrix.com>
---
 core/adv.inc |   35 ++++++++++++++++++-----------------
 1 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/core/adv.inc b/core/adv.inc
index a714800..ab29fde 100644
--- a/core/adv.inc
+++ b/core/adv.inc
@@ -351,6 +351,23 @@ adv_read_write:
 		jne .noedd
 		test cl,1
 		jz .noedd
+
+		push 512
+		sub sp, 14h
+		push 0
+		push 1ah
+		mov si,sp
+		mov ah,48h			; EDD get drive parameters
+		mov dl,[ADVDrive]
+		push ds
+		push ss
+		pop ds
+		int 13h
+		pop ds
+		add sp,18h
+		pop ax
+		mov [ADVSsz], ax
+
 		mov si,.ebios
 .noedd:
 
@@ -375,23 +392,6 @@ adv_read_write:
 
 		extern xfer_buf_seg
 .ebios:
-		pusha
-		sub sp,1ch
-		push 1eh
-		mov si,sp
-		mov ah,48h			; EDD get drive parameters
-		mov dl,[ADVDrive]
-		push ds
-		push ss
-		pop ds
-		mov word [si+18h], 512
-		int 13h
-		mov ax, [si+18h]
-		pop ds
-		mov [ADVSsz], ax
-		add sp,1eh
-		popa
-
 		mov cx,adv_retries
 .eb_retry:
 		; Form DAPA on stack
@@ -450,6 +450,7 @@ adv_read_write:
 		; copy it back
 		pusha
 		push ds
+		cld
 		mov si, di
 		mov di, bx
 		push xfer_buf_seg
-- 
1.7.5.4




More information about the Syslinux mailing list