On 07/07/2011 09:19 AM, Lantz, Philip wrote:
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.
Hi Philip,
Can you give me a hint how you modify snpbus_probe to call LocateHandle,
I have got a similar situation in my side, and your approach seems
promising.
Thanks in advance
Weiwei
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
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo/ipxe-devel