[ipxe-devel] Using iPXE with UNDI driver

soze.ks soze.ks at gmail.com
Tue Sep 6 14:51:54 UTC 2011


Lantz, Philip <philip.lantz at ...> writes:

> 
> > On Friday 01 Jul 2011 19:23:29 Lantz, Philip wrote:
> > > > Under EFI, iPXE can either use a built-in iPXE driver (i.e. something
> > > > under drivers/net), or use an existing EFI network device via an EFI SNP
> > > > interface. Your driver needs to provide an EFI SNP interface, or rely
> > > > upon components that consume an EFI UNDI interface and provide an EFI 
SNP
> > > > interface.
> > >
> > > I suspected this -- thanks for confirming it -- and I have tried loading 
an
> > > SNP interface on top of my UNDI driver before running iPXE, but iPXE still
> > > doesn't find it. Do you have any more suggestions for why this might
> > > happen? Can you point me toward the code in iPXE that is supposed to
> > > locate the SNP interface and connect to it?
> 
> > It's in drivers/net/efi/snponly.c.  From a quick look at the code, it seems 
as
> > though it will only attach to the SNP from which the iPXE binary was loaded
> > (i.e. it's the functional equivalent of arch/i386/drivers/net/undionly.c).
> >
> > It should be possible to create an iPXE EFI driver that will attach to any 
SNP
> > device within the system and call snpnet_probe().  You could model this on 
the
> > code in interface/efi/efi_pci.c, which attaches to any PCI device within the
> > system and calls pci_probe().
> 
> Thanks! This is what I did. I changed snpbus_probe to call LocateHandle to 
find a handle that supports SNP
> and it now connects to my driver.
> 
> > > After I got some debugging output enabled, iPXE prints
> > >      EFIPCI DRIVER_SUPPORTED 0x3de92f90 (0x0)
> > >      EFIPCI device 0x3de92f90 is not a PCI device
> > > In fact, 0x3de92f90 isn't even a valid handle; as far as I know, EFI
> > > handles are small integers, not memory addresses.
> 
> > UefiBaseType.h:  typedef VOID * EFI_HANDLE;
> >
> > (Type checking?  Who needs type checking?  Let's make one of the most
> > frequently used EFI data types transparently cast to or from any pointer
> > type!)
> 
> I'm with you there. (Though with the frequency of casts in the EDK code, it 
hardly matters.)
> 
> I still don't understand why the 'dh' command only lists handles with small 
integer values. But it doesn't
> matter to me now--that code isn't part of snponly.
> 
> I appreciate the assistance.
> 
> Philip
> 

basically I'm trying to get the same result as Philip.
I boot from a USB key on a Mac.
I can get the shell ipxe but I can not go any further: "No more network 
devices".
"ifstat" shows no interface available.
"Forcedeth" should support my network card but it appears that no appeal to this 
driver is done.
I need help to change the snpbus_probe. My network card is an Nvidia card (MCP89 
10DE0D7D).
I will rebuild the ipxe.efi with debbugs options to see if I get the same 
message as Philip.

Thank you for your help.





More information about the ipxe-devel mailing list