[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to debug 'out of disk' error.
From: |
Vladimir 'φ-coder/phcoder' Serbinenko |
Subject: |
Re: How to debug 'out of disk' error. |
Date: |
Wed, 16 Mar 2011 23:16:05 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110303 Icedove/3.0.11 |
On 16.03.2011 23:00, Lennart Sorensen wrote:
> On Wed, Mar 16, 2011 at 09:19:12PM +0100, Vladimir 'φ-coder/phcoder'
> Serbinenko wrote:
>
>> Following may help:
>> === modified file 'grub-core/disk/i386/pc/biosdisk.c'
>> --- grub-core/disk/i386/pc/biosdisk.c 2011-01-04 14:42:47 +0000
>> +++ grub-core/disk/i386/pc/biosdisk.c 2011-03-16 20:17:57 +0000
>> @@ -80,6 +80,9 @@
>> regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
>>
>> grub_bios_interrupt (0x13, ®s);
>> + if (!(regs.flags & GRUB_CPU_INT_FLAGS_CARRY))
>> + return 0;
>> +
>> return (regs.eax >> 8) & 0xff;
>> }
>>
> I now got this:
>
> GRUB loading.
> Welcome to GRUB!
>
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
> int13_ext fixup due to CARRY flag
>
It's not really a fixup. Correct return on no error is CF=0 AH=0. Some
BIOSes in some other functions returned CF=0, AH!= 0 on no error so it
was a wild guess.
> Failed int13_ext call: ah=42, drive=80, dap= 6fe00 returned eax=8000
>
Error 0x80 according to
http://www.delorie.com/djgpp/doc/rbinter/it/34/2.html means timeout.
Following code would retry on timeout:
=== modified file 'grub-core/disk/i386/pc/biosdisk.c'
--- grub-core/disk/i386/pc/biosdisk.c 2011-01-04 14:42:47 +0000
+++ grub-core/disk/i386/pc/biosdisk.c 2011-03-16 22:13:12 +0000
@@ -72,6 +72,8 @@
grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap)
{
struct grub_bios_int_registers regs;
+ int tries = 4;
+ retry:
regs.eax = ah << 8;
/* compute the address of disk_address_packet */
regs.ds = (((grub_addr_t) dap) & 0xffff0000) >> 4;
@@ -80,6 +82,16 @@
regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
grub_bios_interrupt (0x13, ®s);
+ if (!(regs.flags & GRUB_CPU_INT_FLAGS_CARRY))
+ return 0;
+
+ if (((regs.eax >> 8) & 0xff) == 0x80 && tries)
+ {
+ grub_millisleep (10);
+ tries--;
+ goto retry;
+ }
+
return (regs.eax >> 8) & 0xff;
}
> error: hd0 out of disk.
> Entering rescue mode...
> grub rescue>
>
> I am now using 1.99-rc1. Here is the biosdisk.c with my changes.
>
>
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel
>
--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko
- Re: How to debug 'out of disk' error., (continued)
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/16
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/16
- Re: How to debug 'out of disk' error., Phillip Susi, 2011/03/16
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/16
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/16
- Re: How to debug 'out of disk' error., Vladimir 'φ-coder/phcoder' Serbinenko, 2011/03/16
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/16
- Re: How to debug 'out of disk' error.,
Vladimir 'φ-coder/phcoder' Serbinenko <=
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/17
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/17
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/17
- Re: How to debug 'out of disk' error., Vladimir 'φ-coder/phcoder' Serbinenko, 2011/03/17
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/17
- Re: How to debug 'out of disk' error., Vladimir 'φ-coder/phcoder' Serbinenko, 2011/03/17
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/17
- Re: How to debug 'out of disk' error., Grégoire Sutre, 2011/03/18
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/18
- Re: How to debug 'out of disk' error., Grégoire Sutre, 2011/03/18