On Mon, 5 Jul 2004 scheng@msica.com wrote:
I am trying to use LinuxBIOS V2 + Filo to boot local Linux on hard disk (EPIA 800 board).
I found that LinuxBIOS executes an infinite loop in dumpnorth() function of freebios2/src/northbridge/via/vt8601/raminit.c .
The function is: void dumpnorth(device_t north) { uint8_t r, c; for(r = 0; r < 256; r += 16) { print_debug_hex8(r); print_debug(":"); for(c = 0; c < 16; c++) { print_debug_hex8(pci_read_config8(north, r+c)); print_debug(" "); } print_debug("\r\n"); } }
Since r is an unsigned char, it will never reach 256. To fix the problem, I simply added a line at the end of the loop: if( r >= 240 ) break;
thanks for the fix, did you do something like this:
void dumpnorth(device_t north) { uint8_t r, c; for(r = 0; ; r += 16) { print_debug_hex8(r); print_debug(":"); for(c = 0; c < 16; c++) { print_debug_hex8(pci_read_config8(north, r+c)); print_debug(" "); } print_debug("\r\n"); if (r >= 240) break; } }
(r and c are u8 because we're trying to use bytes whereever possible; this is rommcc-compiled)
Let me know if this works and I'll commit it.
By the way, I am still working on filo. In my machine, after elfboot passing control to filo, LinuxBIOS Fallback restarts again. Following is a piece of screenshot: ...... Loading Segment: addr: 0x0000000000100000 memsz: 0x00000000000240e0 filesz: 0x000000000000a048 Clearing Segment: addr: 0x000000000010a048 memsz: 0x000000000001a098 Loading Segment: addr: 0x00000000001240e0 memsz: 0x0000000000000048 filesz: 0x0000000000000048 Jumping to boot code at 0x107d28 .8(=±sioÿ.
This looks like baud rate troubles in part.
also, what does readelf -a of the filo show? your start address seems odd. David, what do you think?
ron