Opened 10 years ago

Last modified 2 years ago

#4385 assigned bug

blocking boot on powerbook G4

Reported by: rayman Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: System/Boot Loader Version: R1/pre-alpha1
Keywords: Cc: planche2k@…
Blocked By: Blocking: #5160
Has a Patch: no Platform: PowerPC

Description

on powerbook G4 without Hard drive and a USB flash drive with haiku image ( hrev32480 ) blocking boot after partition detect.

see screenshot attached

Attachments (3)

bitmap_clip.jpg (446.1 KB ) - added by rayman 10 years ago.
devices.cpp (4.7 KB ) - added by kallisti5 10 years ago.
bitmap_clip2.jpg (308.4 KB ) - added by rayman 10 years ago.

Download all attachments as: .zip

Change History (15)

by rayman, 10 years ago

Attachment: bitmap_clip.jpg added

comment:1 by kallisti5, 10 years ago

It looks like we are locking up calling of_path here. Not sure why of_path would be locking up as its fairly basic.

by kallisti5, 10 years ago

Attachment: devices.cpp added

comment:2 by kallisti5, 10 years ago

sorry, function is of_open(path) not of_path.

boot/platform/openfirmware/network.cpp: fHandle = of_open(device); boot/platform/openfirmware/devices.cpp: int kernel = of_open(name); boot/platform/openfirmware/devices.cpp: int handle = of_open(sBootPath); boot/platform/openfirmware/devices.cpp: int handle = of_open(path); kernel/arch/ppc/arch_platform.cpp: fRTC = of_open(kernelArgs->platform_args.rtc_path); kernel/platform/openfirmware/openfirmware.c:of_open(const char *nodeName)

of_open calls gCallOpenFirmware... where the heck is gCallOpenFirmware defined?

/develop/haiku/src$ grep -R "CallOpenFirmware" * | grep -v svn system/kernel/platform/openfirmware/openfirmware.c:static int (*gCallOpenFirmware)(void *) = 0; system/kernel/platform/openfirmware/openfirmware.c: gCallOpenFirmware = openFirmwareEntry; system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED)

system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED
args.args[numArgs])
args.args[numArgs])

system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED)

system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED
args.handle == 0)

system/kernel/platform/openfirmware/openfirmware.c: gCallOpenFirmware(&args); system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: return gCallOpenFirmware(&args); system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: if (gCallOpenFirmware(&args) == OF_FAILED) system/kernel/platform/openfirmware/openfirmware.c: gCallOpenFirmware(&args); system/kernel/platform/openfirmware/openfirmware.c: gCallOpenFirmware(&args);

comment:3 by kallisti5, 10 years ago

Sorry for the last post.. freaking trac. If any trac admins see the last post.. feel free to delete it :)

of_open calls gCallOpenFirmware.. where the heck is gCallOpenFirmware defined?

/develop/haiku/src$ grep -R "CallOpenFirmware" * | grep -v svn
system/kernel/platform/openfirmware/openfirmware.c:static int (*gCallOpenFirmware)(void *) = 0; 
system/kernel/platform/openfirmware/openfirmware.c:	gCallOpenFirmware = openFirmwareEntry;
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED || args.args[numArgs])
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED || args.args[numArgs])
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED || args.handle == 0)
system/kernel/platform/openfirmware/openfirmware.c:	gCallOpenFirmware(&args);
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	return gCallOpenFirmware(&args);
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	if (gCallOpenFirmware(&args) == OF_FAILED)
system/kernel/platform/openfirmware/openfirmware.c:	gCallOpenFirmware(&args);
system/kernel/platform/openfirmware/openfirmware.c:	gCallOpenFirmware(&args);

comment:4 by kallisti5, 10 years ago

Mailing list answered that FYI:

src/system/kernel/arch/ppc/arch_platform.cpp initializes that via

status_t
PPCOpenFirmware::Init(struct kernel_args *kernelArgs)
{
        return of_init(
                (int(*)(void*))kernelArgs->platform_args.openfirmware_entry);
}

HTH,
Rene

Thanks Rene!

comment:5 by kallisti5, 10 years ago

hey rayman, a quick note.

Booting off of a Haiku PPC root image on a USB drive works on my G4 Quicksilver, but does not work at all on my G3 (not detected). If possible, please try burning the Haiku root image to a cd and booting from the bootloader via tftp (instructions here: http://unixzen.com/index.php?blog/category/Haiku-Dev.html) and let us know the results.

Thanks!

by rayman, 10 years ago

Attachment: bitmap_clip2.jpg added

comment:6 by rayman, 10 years ago

hi kallisti5,

no problem, just time to reconfigure the tftpd on dano and boot powerbook with your instructions .... good for tftpboot ... but no for CD ... see last picture ... I had not put second test with usb drive because it's same result.

comment:7 by andreasf, 10 years ago

Cc: planche2k@… added

comment:8 by andreasf, 10 years ago

Blocking: 5160 added

(In #5160) This appears to be a duplicate of #4385. of_open does not return.

comment:9 by scottmc, 8 years ago

Blocking: 7665 added

comment:10 by pulkomandy, 5 years ago

Blocking: 7665 removed

comment:11 by pulkomandy, 5 years ago

Milestone: R1Unscheduled

comment:12 by axeld, 2 years ago

Owner: changed from axeld to nobody
Status: newassigned
Note: See TracTickets for help on using tickets.