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().
 
> 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!)

Michael
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to