Re: [Etherboot-developers] UNDI driver
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: Marty C. <md...@et...> - 2003-05-29 15:17:35
|
On Wednesday, May 28, 2003, at 09:24 PM, Michael Brown wrote:
> I suspect this means that PXENV_UNDI_SET_STATION_ADDRESS isn't properly
> implemented. You can try commenting out the call as follows:
> int eb_pxenv_undi_set_station_address ( void ) {
> - return undi_call ( PXENV_UNDI_SET_STATION_ADDRESS );
> + return 1; /* undi_call ( PXENV_UNDI_SET_STATION_ADDRESS ); */
> }
> PXE spec requires that we make this call, so it may be a case of "make
> the
> call, ignore failures and continue".
Success! With this patch both the 3Com and the Intel cards boot from
floppy using the UNDI driver.
>> Chaining didn't go so well for me. I wasn't able to get it to work.
>> PXE loader for etherboot
>> 0x27FK low memory
>> PXENV+ unloaded
>> ROM segment 0x0000 length 0x0000 reloc 0x00020000
>> Etherboot 5.1.8 (GPL) Tagged ELF for [UNDI]
>> Relocating _text from: [0000c070,0001b780) to [07eb08f0,07ec0000)
>> Boot from (N)etwork (D)isk (F)loppy or from (L)ocal?
>> Probing pci nic...
>> [UNDI]Hunting for PnP BIOS... found $PnP at f000:2c30...ok
>> Hunting for pixies...found !PXE at 0009d7a0...ok
>> It hangs here.
> Hmmm, it looks as though the PXE loader is unloading the stack but
> leaving
> the empty shell of the !PXE structure resident in memory, so that we
> pick
> it up on a scan and try to use memory that has already been freed.
> Two-stage fix:
> 1. Possibly perform further validity checks on the !PXE structure,
> although we're already checking the signature and checksum.
> 2. PXE loader should trash the UNDI code segment if it unloads the PXE
> stack.
I think we're pretty close on this, and with some debugging we should
be able to get it going.
Vasil and Peter, could you possibly make a version of (or patch for)
pxeprefix.S for 5.1.8 that would implement strategy 2 above? I'm going
to try to invalidate the checksum, but my assembler is rusty, and it
will take a me a little while to get back up to speed. Many thanks for
your help.
> You might get it to work if you define PXELOADER_KEEP_UNDI when
> compiling
> pxeprefix.S; this should prevent the PXE loader from unloading the PXE
> stack. I haven't tested this, just an idea.
I tried this, and it got a bit farther on some cards, but on others it
hung.
I suspect the Etherboot UNDI driver is getting confused by the pieces
of PXE and UNDI structure hanging around in memory. The other thing
that comes to mind is so other machine state that is confusing at
startup for Etherboot such as register contents or hooked INTs.
> I am off to Manchester for the next two days, but I'll take a look at
> the
> weekend.
Thanks for replying before you left.
Have a nice trip!
Marty
--
Try: http://rom-o-matic.net/ to make Etherboot images instantly.
Name: Marty Connor
US Mail: Entity Cyber, Inc.; P.O. Box 391827;
Cambridge, MA 02139; USA
Voice: (617) 491-6935; Fax: (617) 491-7046
Email: md...@et...
Web: http://www.etherboot.org/
|