Date: Tue, 16 Aug 2011 16:41:50 +0200 From: Christoph Hoffmann <christoph_hoffmann@me.com> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: gptzfsboot error using HP Smart Array P410i Controller Message-ID: <DA5CE78B-5AAB-4DFC-B9EE-BFCF45AFC16F@me.com> In-Reply-To: <201108160948.07719.jhb@freebsd.org> References: <E040B3A9-9B62-4545-ADC9-5CE3A9217024@me.com> <201108151212.07874.jhb@freebsd.org> <7BD5F062-A7B0-4D05-989F-F23C9353E7D8@me.com> <201108160948.07719.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DA5CE78B-5AAB-4DFC-B9EE-BFCF45AFC16F>