gptzfsboot error using HP Smart Array P410i Controller

Christoph Hoffmann christoph_hoffmann at me.com
Tue Aug 16 14:41:55 UTC 2011


Hello John,

First with printf() before  
   dsk = malloc(sizeof(struct dsk));  

Attempting Boot From CD-ROM
Attempting Boot From Hard Drive (C:)
464: high_heap_size=0x300000; dsk=0x0; &bootinfo=0x8714    <--- the malloc() is next.
474: high_heap_size=0x300000; dsk=0xdf325000; &bootinfo=0x8714
probe_drive(): drive 0x80: type 0: unit 0: slice 1: part 0:
probe_drive(): drive 0x81: type 0: unit 1: slice 0: part 0:
                                                                                
BTX loader 1.00  BTX version is 1.02
Consoles: internal video/keyboard
BIOS drive A: is disk0
BIOS drive C: is disk1
BIOS drive D: is disk2


and now without printf() at line 464


Attempting Boot From CD-ROM
Attempting Boot From Hard Drive (C:)
474: high_heap_size=0x300000; dsk=0xdf325000; &bootinfo=0x86b4
probe_drive(): drive 0x0: type 0: unit 0: slice 0: part 0:
gptzfsboot: error 1 lba 32
gptzfsboot: error 1 lba 1
probe_drive(): drive 0x81: type 0: unit 1: slice 0: part 0:
gptzfsboot: No ZFS pools located, can't boot


Regards,

Christoph

--
Christoph Hoffmann

On Aug 16, 2011, at 3:48 PM, John Baldwin wrote:

> On Tuesday, August 16, 2011 9:14:08 am Christoph Hoffmann wrote:
>> Hello John,
>> 
>> Thank you very much indeed for your reply.
>> 
>> The pmbr.s passes the ARGS set to 0x900 to main() in zfsboot.c and
>> *(uint8_t *)PTOV(ARGS)) is 0x80. 
>> 
>> In zfsboot.c main(), before the line
>>  bootinfo.bi_version = BOOTINFO_VERSION;
>> gets executed we still keep the right value of the dsk->drive and just after
>> the execution, the dsk->drive is equal to zero.
>> 
>> Adding
>>   printf("hello\n");
>> before
>>   dsk = malloc(sizeof(struct dsk));
>> keeps the dsk->drive value assigned to 0x80 and the box will boot.
>> 
>> Any comments will be appreciated.
> 
> That is odd indeed.  Can you print out a few things:
> 
> 1) if high_heap_size is > 0
> 
> 2) the value of 'dsk' and '&bootinfo' (try this both with a printf
>   before the first call to malloc() and without).
> 
> -- 
> John Baldwin
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"



More information about the freebsd-current mailing list