[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to debug 'out of disk' error.
From: |
Lennart Sorensen |
Subject: |
Re: How to debug 'out of disk' error. |
Date: |
Thu, 17 Mar 2011 14:40:14 -0400 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Thu, Mar 17, 2011 at 05:29:51PM +0100, Vladimir 'φ-coder/phcoder' Serbinenko
wrote:
> On 17.03.2011 17:09, Lennart Sorensen wrote:
> > On Wed, Mar 16, 2011 at 11:16:05PM +0100, Vladimir 'φ-coder/phcoder'
> > Serbinenko wrote:
> >
> >> 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;
> >> }
> >>
> > So that didn't make any difference to it.
> >
> > It just keeps returning 0x8000 in eax on every retry.
> >
> >
> Another wild guess:
> @@ -506,6 +520,8 @@ get_safe_sectors (grub_disk_addr_t secto
> grub_size_t size;
> grub_uint32_t offset;
>
> + return 1;
> +
> /* OFFSET = SECTOR % SECTORS */
> grub_divmod64 (sector, sectors, &offset);
No go either.
Here is what I see with some more debugging:
[snip]
int13_ext call: ah=42, drive=80, dap= 6fe00 (len=16 rsvd=0 blks=1
buf=1744830464 sec=2078)
int13_ext call: ah=42, drive=80, dap= 6fe00 (len=16 rsvd=0 blks=1
buf=1744830464 sec=2079)
int13_ext call: ah=42, drive=80, dap= 6fe00 (len=16 rsvd=0 blks=1
buf=1744830464 sec=72091664)
failed int13_ext call: ah=42, drive=80, dap= 6fe00 returned eax=8000
error: hd0 out of disk.
Entering rescue mode...
grub rescue>
Now it has no excuse for failing a call for sector 72091664 when the
drive has 156000000 or so sectors.
I imagine if I made a small boot partition (less than 8G), the stupid
thing would boot fine, but that's not acceptable on a brand new design.
I am going to try resizing the partition as a test.
--
Len Sorensen
- Re: How to debug 'out of disk' error., (continued)
- 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, 2011/03/16
- 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 <=
- 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
- Re: How to debug 'out of disk' error., Lennart Sorensen, 2011/03/18
- Re: How to debug 'out of disk' error., Vladimir 'φ-coder/phcoder' Serbinenko, 2011/03/16