I am attempting to get through the logistics of getting Linuxbios working on an Arima HDAMA board. I have run into a few problems, some of which I have been able to solve, and some of which have me stumped.
I'm compiling everything on a stock SuSE 8.2 Professional release with the stock compilers on an Intel-based laptop (I ran into problems earlier trying to make the Linuxbios native on the Arima board, as there are some in-line assembly code issues that still need to be resolved).
I've been able to create a linuxbios.rom using the latest code from sourceforge (earlier today). I changed raminit.c to accommodate 200Mhz registered memory (this case is missing in raminit.c), as this is the memory that I have. I downloaded etherboot 3.0 (5.3.1) from www.etherboot.org and compiled ide_disk.zelf (using the -DCONFIG_X86_64 option), and then used ide_disk.zelf as the payload in creating linuxbios.rom.
I programmed a FLASH part with linuxbios.rom and turned on the machine. It goes through what looks like reasonable startup stuff, finds the etherboot payload, loads it, and tries to run it. It then appears to go back and reboot before anything interesting is reported happening in etherboot, and then repeats this cycle forever.
I don't like the looks of the irq_routing_table checksum error, but I'm not sure if it is a problem or not, at this point. I notice that during compilation that the table has been set to be short compared to the initializers and gets a warning. Increasing the size, and making the compile errors go away does not seem to get rid of the checksum issue during run time.
The last part of the output before loading etherboot follows:
------------------------------------------------ Output to serial port Setting up local apic... apic_id: 16777216 done. CPU #1 Initialized secondary_cpu_init 1/1 All AP CPUs stopped Checking IRQ onsistent IRQ routing table size /usr/src/freebios2/src/arch/i386/boot/pirq_routing.c: 29:check_pirq_routing_table() - irq_routing_table located at: 0x0000b8e0 /usr/src/freebios2/src/arch/i386/boot/pirq_routing.c: 37:check_pirq_routing_table() - checksum is: 0x35 but should be: 0x48 /usr/src/freebios2/src/arch - checksum error in irq routing table done. Copying IRQ routing tables to 0xf0000...done. Verifing priq routing tables copy at 0xf0000...succeed Wrote the mp table end at: 00000020 - 00000224 Wrote linuxbios table at: 00000500 - 00000af0 checksum 4540
Welcome to elfboot, the open sourced starter. January 2002, Eric Biederman. Version 1.3
Found ELF candiate at offset 0 Loading Etherboot version: 5.3.1 Dropping non PT_LOAD segment New segment addr 0x20000 size 0x18817 offset 0xb0 filesize 0x3cea (cleaned up) New segment addr 0x20000 size 0x18817 offset 0xb0 filesize 0x3cea Loading Segment: addr: 0x0000000000020000 memsz: 0x0000000000018817 filesz: 0x0000000000003cea Clearing Segment: addr: 0x0000000000023cea memsz: 0x0000000000014b2d Jumping to boot code at 0x20000 Copying LinuxBIOS to ram. Jumping to LinuxBIOS. LinuxBIOS-1.1.4.0Fallback Tue Oct 7 16:22:20 PDT 2003 rebooting... ------------------------------------------------ End of output
I'd appreciate any advice on what I might be doing wrong. I tried to use the ide_disk.zelf from YH that was sent out yesterday (below), but I was not able to get it to work at all (the decoded file was not in ELF format, and was not recognized by Linuxbios as a valid ELF file.) I'd like to get another copy of tg3--ide_disk.zelf, if possible.
From: YhLu YhLu@tyan.com To: Stefan Reinauer stepan@suse.de Cc: linuxbios@clustermatic.org Subject: re: K8 MTRR reboot on Solo Date: Mon, 6 Oct 2003 10:37:26 -0700
This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible.
------_=_NextPart_000_01C38C30.8253BA70 Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: quoted-printable
I enabled it, and use X86-64 bin to make elf image with mkelfimage 2.5.
Please try my zelf instead.
Regards
YH.
I'm not sure what "use X86-64 bin to make elf image with mkelfimage 2.5" means above. Is this critical, or is the zelf created by the etherboot code acceptable?
Also, I would like to get memtest86 to work as a payload too, but I'm not sure what I need to do to make that work. I was able to make the modifications necessary to get it to run on the Opteron when loaded from the stock Arima Phoenix BIOS.
Any assistance or advice on these problems appreciated. I'm sure I am overlooking some things here.
I apologize for the long-windedness of all this.
Regards,
Craig Forney Opus Innovations LLC
* Craig C Forney cforney@opus.com [031008 09:45]:
I'm compiling everything on a stock SuSE 8.2 Professional release with the stock compilers on an Intel-based laptop (I ran into problems earlier trying to make the Linuxbios native on the Arima board, as there are some in-line assembly code issues that still need to be resolved).
Compiling natively is possible by adding the following 2 lines to the target Config.lb:
uses CC option CC="gcc -m32"
I've been able to create a linuxbios.rom using the latest code from sourceforge (earlier today). I changed raminit.c to accommodate 200Mhz registered memory (this case is missing in raminit.c), as this is the memory that I have.
Can you provide a patch? This sounds like a must-have in the freebios2 tree.
I programmed a FLASH part with linuxbios.rom and turned on the machine. It goes through what looks like reasonable startup stuff, finds the etherboot payload, loads it, and tries to run it. It then appears to go back and reboot before anything interesting is reported happening in etherboot, and then repeats this cycle forever.
Did you change the etherboot config file to build for LinuxBIOS? src/arch/i386/config
I don't like the looks of the irq_routing_table checksum error, but I'm not sure if it is a problem or not, at this point.
No, etherboot does not need the pirq table iirc.
Stefan
oops, forgot to say this:
- don't worry about the IRQ table - be sure to have your kernel boot SMP or with I/O APIC support for uniprocessors
ron
Stefan,
Thanks for your help! Comments and patch for raminit.c for Opteron follows.
Craig
-----Original Message----- From: Stefan Reinauer [mailto:stepan@suse.de] Sent: Wednesday, October 08, 2003 3:53 AM To: Craig C Forney Cc: YhLu@tyan.com; linuxbios@clustermatic.org Subject: Re: Hdama + etherboot problems
- Craig C Forney cforney@opus.com [031008 09:45]:
I'm compiling everything on a stock SuSE 8.2 Professional
release with
the stock compilers on an Intel-based laptop (I ran into problems earlier trying to make the Linuxbios native on the Arima board, as there are some in-line assembly code issues that still need to be resolved).
Compiling natively is possible by adding the following 2 lines to the target Config.lb:
uses CC option CC="gcc -m32"
Thanks!! That hadn't occurred to me, but makes sense.
I've been able to create a linuxbios.rom using the latest code from sourceforge (earlier today). I changed raminit.c to accommodate 200Mhz registered memory (this case is missing in
raminit.c), as this
is the memory that I have.
Can you provide a patch? This sounds like a must-have in the freebios2 tree.
I've never created a patch, but I think this works ... I verified the rdpreamble value in the AMD docs.
---Begin patch *** raminit.c.orig Fri Oct 10 00:42:25 2003 --- raminit.c Fri Oct 10 00:42:36 2003 *************** *** 2063,2068 **** --- 2063,2072 ---- /* 166Mhz, 7.5ns */ rdpreamble = ((7 << 1)+1); } + else if (divisor == ((5 << 1)+0)) { + /* 200Mhz, 7ns */ + rdpreamble = ((7 << 1)+1); + } } else { int slots; ---End patch
I programmed a FLASH part with linuxbios.rom and turned on the machine. It goes through what looks like reasonable startup stuff, finds the etherboot payload, loads it, and tries to run it.
It then
appears to go back and reboot before anything interesting
is reported
happening in etherboot, and then repeats this cycle forever.
Did you change the etherboot config file to build for LinuxBIOS? src/arch/i386/config
This was my problem ... Things are much better now!!! Thanks!!!
I don't like the looks of the irq_routing_table checksum error, but I'm not sure if it is a problem or not, at this point.
No, etherboot does not need the pirq table iirc.
Stefan
-- Architecture Team SuSE Linux AG
the first and most useful thing to do is set MAXIMUM_CONSOLE_LOGLEVEL and DEFAULT_CONSOLE_LOGLEVEL to 10 in the target config.lb.
Then send the output again.
Also, since you modified raminit.c, I think you should try an unmodified version first.
ron
Ron,
It turns out the problem was with not setting the LINUXBIOS CONFIG variable properly. Seems obvious now, wasn't earlier. I'm learning (slowly) how this fits together.
Craig
-----Original Message----- From: ron minnich [mailto:rminnich@lanl.gov] Sent: Wednesday, October 08, 2003 9:14 AM To: Craig C Forney Cc: YhLu@tyan.com; stepan@suse.de; linuxbios@clustermatic.org Subject: Re: Hdama + etherboot problems
the first and most useful thing to do is set MAXIMUM_CONSOLE_LOGLEVEL and DEFAULT_CONSOLE_LOGLEVEL to 10 in the target config.lb.
Then send the output again.
Also, since you modified raminit.c, I think you should try an unmodified version first.
The problem with raminit.c caused LinuxBIOS to stop during memory configuration. I posted a patch in a previous post that appears pretty safe, and seems to work fine.
ron