[OpenBIOS] [RFC PATCH] ppc correctly replace &device; and &partition;

Stefan Assmann sassmann at suse.de
Wed Feb 4 13:48:30 CET 2009


Stefan Assmann wrote:
> Laurent Vivier wrote:

[snip]

>>>> +        } else {
>>>> +            /* FIXME: allow booting of SUSE media with following  
>>>> layout (fails without this workaround)
>>>> +             * Number  Start  End     Size    File system   
>>>> Name        Flags
>>>> +             * 1      512B   1535B   1024B                 
>>>> Apple       , , , , , , , , , , , , type=Apple_partition_map
>>>> +             * 2      8192B  4126MB  4126MB                
>>>> SU1110.001  , , , , , , , , , , , , type=Apple_HFS
>>>> +             */
>>>> +            if ( (buf = strstr(bootscript, (const char *) "1,\ 
>>>> \suseboot\\yaboot.ibm")) != NULL ) {
>>> what it is wrong here is we try to read a file from partition 1 which  
>>> is the partition map...
>>> I guess we should write a "modules/iso9660-parts.c" to override this  
>>> (as macintosh CD are hybrid: ISO9660 and HFS).
>> Something like that seems to work:
>>
>> Index: openbios-devel/modules/disk-label.c
>> ===================================================================
>> --- openbios-devel.orig/modules/disk-label.c	2009-02-04 12:51:53.000000000 +0100
>> +++ openbios-devel/modules/disk-label.c	2009-02-04 12:56:51.000000000 +0100
>> @@ -78,6 +78,19 @@
>>  		}
>>  	}
>>  
>> +        /* try to see if there is a filesystem without partition */
>> +
>> +	PUSH_ih( my_self() );
>> +	selfword("find-filesystem");
>> +	ph = POP_ph();
>> +	if( ph ) {
>> +		push_str( filename );
>> +		PUSH_ph( ph );
>> +		fword("interpose");
>> +	        success = 1;
>> +                goto out;
>> +	}
>> +
>>  	/* find partition handler */
>>  	seek_io( fd, 0 );
>>  	if( read_io(fd, block0, sizeof(block0)) != sizeof(block0) )
> 
> Nice! I'll try that and post an updated patch.

Almost there! Here comes the log I get with your patch applied. I guess
it worked for you because in your test yaboot was still loaded with
boot cd:0,\suseboot\yaboot.ibm

Here's my log:

>> =============================================================
>> OpenBIOS 1.0RC1 [Feb 4 2009 12:04]
>> Configuration device id QEMU version 1 machine id 2
>> CPUs: 1
>> Memory: 256M
>> UUID: 00000000-0000-0000-0000-000000000000
>> CPU type PowerPC,750
>> ELF - yaboot_startup: Entering boot, no path
>> ELF - try_bootinfo: Trying cd:0,ppc\bootinfo.txt
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ELF - try_bootinfo: got bootscript boot &device;:1,\suseboot\yaboot.ibm
>> ELF - try_bootinfo: fixed bootscript boot cd:1,\suseboot\yaboot.ibm
>> ELF - yaboot_startup: Entering boot, path cd:1,\suseboot\yaboot.ibm
>> ELF - try_path: Trying cd:1,\suseboot\yaboot.ibm 
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ELF - load_elf_rom: Loading '/suseboot/yaboot.ibm' from ''
>> ELF - load_elf_rom: filesz: 00013947 memsz: 00023FC8 p_offset: 00010000 p_vaddr 00040000
>> ELF - load_elf_rom: ELF ROM-section loaded at 00040000 (size 00023FC8)
>> ELF - load_elf_rom: filesz: 00000000 memsz: 00000000 p_offset: 00000000 p_vaddr 00000000
>> ELF - load_elf_rom: filesz: 0000002C memsz: 00000000 p_offset: 000000B4 p_vaddr 00000000
>> ELF - load_elf_rom: filesz: 00000044 memsz: 00000000 p_offset: 000000E0 p_vaddr 00000000
>> ELF - try_path: Transfering control to cd:1,\suseboot\yaboot.ibm 
>> ELF - transfer_control_to_elf: Starting ELF boot loader
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error

After that I see a message in the qemu window saying
bad seek: blk 00000001 c fffffc00

  Stefan

-- 
Stefan Assmann          | SUSE LINUX Products GmbH
Software Engineer       | Maxfeldstr. 5, D-90409 Nuernberg
Mail: sassmann at suse.de  | GF: Markus Rex, HRB 16746 (AG Nuernberg)



More information about the OpenBIOS mailing list