[openbeos] Re: Boot failure with Quad-core

  • From: Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Fri, 05 Jan 2007 20:44:15 +0100

On 2007-01-05 at 22:14:51 [+0100], Larry Baydak <lbaydak@xxxxxxxxxx> wrote:
> 
> I have recently set up a new  Quad-Core machine - hoping that Haiku
> would
> run on it - but no such luck.
> 
> First  - I did  a fresh recompile of the Haiku source  ( rev 19698 ).
> 
>   I have an older machine - Where I run BeOS 5.03 - and do Haiku
> compiles.
>   I list the hardware specs of my old machine here for reference.
>      - Pentium IV
>      - Intel D845EBG2  motherboard. ( Intel 845E chipset. )
>      - 768 Mb Ram.
>      - ATI Radeon video card.
> 
> Second - I set up the Haiku on its own hard disk.
>    The generated Haiku image boots successfully on the older hardware.
>     So I know its a good image.
>      
> Third -  The 'Haiku' image is on a disk caddy - so I can easily swap
> that disk over
>             to the new  machine.  However - on the new machine - I do
> not even get
>             the "Haiku" splash screen to appear.
> 
> Here are the particulars of the new machine.
>     Processor : Intel Core 2 Extreme  (Quad Core)
>     MotherBoard : D975XBX2,   Using Intel 975X  chipset.
>     Ram : 1 Gb
>     Video : Nvidia 7600GS, Express, 256 Mb
>     Disk 1 : 80 Gb, IDE2,   3 partitions are set up.
>     Disk 2 : SATA (disconnected for now)
> 
> I enabled the serial debugging feature and captured some information
> from
> the aborted boot of Haiku on the new machine. This message should have
> an attached file containing the serial debug information.
> 
> I note from the serial debugging information that the boot loader
> attempts
> to explore the partitions present on the disk.
> So - fyi - the Haiku was installed on the first partition of an 80Gb
> disk.

Yep, the boot loader seems to recognize the partition fine and even loads 
the kernel from it. The "unhandled pheader" messages can be ignored, IIRC. 
Since there are no more messages it appears the boot load freezes or runs 
into an endless loop somehow. Otherwise, in case of error, a respective 
error message would be printed or, if everything goes fine, a message that 
the kernel is going to be started.

> I hope that somebody will find this experiment with a Quad Core
> interesting
> enough to perhaps assist me in finding a solution.

Sure. If you feel confident enough to add a few dprintf()s to the boot 
loader, that would help tremendously to track down the problem. I'd start 
in src/system/boot/loader/main.cpp. Line 75 features the call to 
load_kernel() whose output is the last we've seen. So after the while loop 
(i.e. in line 93) I'd add something like:

        dprintf("kernel loaded\n");

The next dprintf() would go after the register_boot_file_system() into line 
99. In line 101 platform_switch_to_logo() is invoked, which should show the 
Haiku boot screen. According to your report the boot loader doesn't get 
that far, but to be sure, I'd add another dprintf() in the next line.

Build and test the image. From which of your messages appear and which do 
not you can deduce in which function the loader gets stuck. Probably in 
register_boot_file_system() or platform_switch_to_logo(). The former lives 
in src/system/boot/loader/main.cpp, the latter in 
src/system/boot/platform/bios_ia32/video.cpp. You can use the same 
dprintf() technique there to track down the problem further.

If you're not confident with the C syntax better place your dprintf()s only 
into empty lines or after or before '{' or '}'. If you don't feel 
comfortable with all that, just get back to the list and we can provide you 
with the modified source files -- it will just take a bit longer if we have 
to that several times.

CU, Ingo

Other related posts: