Re: Patch to align virt and phys spaces on i386

Josh Lehan <[email protected]> Mon, 13 Mar 2006 12:33:12 -0800
Newsgroups gmane.network.etherboot.devel
Message-ID <[email protected]>
Marty Connor wrote:
> I want to get a fancy new motherboard that has an EFI BIOS (err, saying 
> EFI and BIOS is redundant?!) and stick a 3COM 3C905C with PXE, and an 
> Intel EEPRO100B, and an RTL8139 with an Etherboot 5.4.cvs ROM, and see 
> what happens when I try to load PXELINUX.

I actually tested something like this (but with old-fashioned BIOS, not 
EFI BIOS):

As for PXE, I believe it can only "see" one NIC at a time.  Has the PXE 
specification been updated to give boot code a way to access all of the 
different NIC cards in the system?

In my experience, PXELINUX is dependent on the PXE BIOS calls to 
send/receive packets, and so it can only go through the one NIC that the 
BIOS has seen.

All BIOS ROM implementations of PXE that I have observed, on systems 
with multiple PXE-capable cards, do PXE in series.  They try for a 
timeout/failure on one card, before proceeding to the next card's BIOS. 
   Does EFI now run multiple BIOS ROM's in parallel?

Assuming each PXE BIOS still runs serially, and the first card that 
found a valid network server would download PXELINUX and boot into it, 
giving PXELINUX access to only that card, via the PXE BIOS calls.

That's one of the problems with my "PXE-on-a-disk" Etherboot floppy/CD 
project: SYSLINUX first runs, and detects a single card with 
"ethersel.c32".  Even if ethersel could be enhanced to detect multiple 
cards, the PXE stack set up by Etherboot can still service only one card 
at a time, because it's a fundamental limitation of the PXE stack that 
it is only aware of one card.

If there's more than one card detected by an Etherboot driver, for 
instance multiple copies of the same model (for instance, my machine at 
home with 3 RTL8139's), then Etherboot will also serialize through each, 
I have noticed.  This is good.  Etherboot iterates through each card 
instance, and if it finds a valid server on any of them, boot succeeds. 
  It only fails out and returns control to the BIOS if none of them worked.

Right now, when this happens, the entire boot fails, as the BIOS gives 
up on the floppy/CD that Etherboot came from, and iterates to the next 
device.

So, the resulting effect is that the user is only allowed to use the 
"PXE-on-a-disk" to boot from the *first* NIC detected, whatever that 
happens to be (it varies on different systems!).

I'd love it if somehow SYSLINUX and Etherboot could cooperate somehow, 
to let Etherboot make a clean return into SYSLINUX, and tell 
ethersel.c32 to please try again, and search for PCI devices again, but 
exclude this card (and all previous cards tried) from the search.  This 
way, it would be possible to eventually iterate through all the cards on 
the system, and boot up from any of them.

Josh



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642