Hello,
I think the answers to your first three points should interest you, in
particular the 3rd.
Alexandre
On 15/09/12 16:46, Daniel Li wrote:
Hi Alexandre,
Thanks for your helpful reply,After review your attach file,I am very
very exicted,and then has some questions,could you help to answer again?
1.I can't found the file sfc9000.c in the ipxe project,what is the use
of this document?Is a new driver and could you tell me the driver
support machine,if you can send the file to me will best?
sfc9000 and similar files are code files for our NIC, equivalent to
other NIC specific files in src/drivers/net. You can totally ignore that.
2.You said you can successfully PXE boot On a real UEFI machine,did
you used the ipxe project?Did you run under uefi enviroment?could you
tell me the machine and your made script?which command has been
run?what method do you use to create image?as i know,if you run
"chain" or "sanboot" command under uefi shell,you should create a uefi
image format?
I used the iPXE based UEFI driver for my NIC. The PXE utility is part of
the host machine's software, accessible through the boot manager (F1
menu on boot on my machine).
So it seems this differs from the way you are trying to pxe boot. Have
you checked if your machine provides such a utility via the boot
manager? Note that if it does you need to make sure the driver is loaded
before starting it.
3.Your attach show that the *.efi which your built can detected the
network device,but after my bin-x86_64-efi/82579lm.efidrv can't detect
network device,as i know,the network device of my Thinkpad T420
machine is intel.
I detailed in my first email a procedure which I think can be used to
spot which uefi driver to use with your card.
I mentioned 82579lm.efidrv because you listed a device with "computer
vendor is 8086,device id is 1502".
I can't see a matching device in the output of 'pci' you attached, so
82579lm.efidrv is probably not what you need.
From the output of your 'pci' command attached, I found (following the
procedure in my first email):
ipxe/src/drivers/net $ grep -RHIin "8086" . | grep -i "100f"
./intel.c:844: PCI_ROM ( 0x8086, 0x100f, "82545em", "82545EM
(Copper)", 0 ),
*So you probably need to build this one:**
**$ make -C src bin-x86_64-efi/**82545em.efidrv*
*And then do check from your uefi that the driver is loaded and is
managing a device.**
**See my first email and (in your uefi shell) 'drivers -?'** and
'devices -?'**. (*The 'drivers' command has a column listing the number
of devices managed by the drivers.)
4.As i know ,the return error code EFI_UNSUPPORTED was showed when
call efi_create->openprotocol?(), because the controller handle is not
in the pci hand list.
I don't really understand what you mean by . Anyway if your device is
not managed by your driver it seems normal that the procedure stops at
one point. I'd be concerned about that only if it persists after your
driver successfully manages your device.
5.PCI_vm_windows7_x64_under_uefishell.txt was created when i run
command "pci" under uefi shell.
See answer to 3).
6.snponly_boot_failed_under_uefishell.jpg when I run under command:
fs0:snponly.efi
ipxe:chain http://boot.ipxe.org/demo/boot.php
I guess you need to load the correct driver before trying to start
snponly.efi
5.Could you help to review two attach documents and point out my mistakes?
Thanks for your great greate support.
As pointed before try in order:
- building the correct driver
- load it from the uefi shell and CHECK that it manages your device.
- then try pxe booting or other snp utilities.
------------------
Best Regards,
Daniel Li
Alexandre
------------------ Original ------------------
*From: * "Alexandre Rames"<[email protected]>;
*Date: * Fri, Sep 14, 2012 05:04 PM
*To: * "Daniel Li"<[email protected]>;
*Cc: * "ipxe-devel"<[email protected]>;
*Subject: * Re: [ipxe-devel] UEFI SCT patch
For info I attached a screenshot of the driver loading. It was
compiled with
DEBUG=efi_init,efi_snp,efi_pci,efi_driver_health,netdevice,sfc9000
On 14/09/12 09:59, Alexandre Rames wrote:
Hello Daniel,
On 13/09/12 14:48, Daniel Li wrote:
Hi Alexandre,
Thanks for your quickly reply.Did you built a *.efi and detected
device under uefi enviroment?Did you network boot succeed?
Yes. I can detect my pci device (UEFI 'pci' command), and load the
driver. On a real UEFI machine I can successfully PXE boot.
I am not sure if that makes a difference with your command I see in
the screenshot, but I use a command like
fs0:\> load <driver name>.efidrv
to load the driver. Not a simple invocation of a *.efi file.
From what I mentioned in my previous email yours may be:
ipxe/src $ ls bin-x86_64-efi/*.efidrv
bin-x86_64-efi/82579lm.efidrv
Check the output of 'pci' in your UEFI shell (see previous email).
I have debug this issue more than one week,but i can't find the root
cause,my deubg information like following figure.
The call flow is
efipci_supported()->efipci_create()->OpenProtocol(),unfortunately,OpenProtocol
return EFI_UNSUPPORTED error code and the log is "EFIPCI device
0x3dbf5398 is not a PCI device",I think ipxe can't enum the pci
device.Could you tell me the right step or ut pass machine. I get
the faile result after boot ipxe via uefi shell on Thinkpad T420 and
VMare 8.0,it's network device is intel.
If the steps I described previously don't work you may try to better
undestrand why EFI_UNSUPPORTED is returned. Check the parameters
provided to OpenProtocol; maybe list the protocols available on your
handle.
BTW,Could you tell me whether ipxe is supported in uefi
enviroment,if not,could you tell me your plan.
I don't really understand the question here. You can compile a UEFI
driver for you card if it is supported in iPXE.
------------------
------------------
Best Regards,
Daniel Li
Alexandre
------------------ Original ------------------
*From: * "Alexandre Rames"<[email protected]>;
*Date: * Thu, Sep 13, 2012 08:39 PM
*To: * "Daniel Li"<[email protected]>;
*Cc: * "ipxe-devel"<[email protected]>;
*Subject: * Re: [ipxe-devel] UEFI SCT patch
My patch will potentially fix some errors reported by SCT
<http://www.uefi.org/specs/>. It probably won't fix your problem.
I have little experience with UEFI or iPXE, but here are a few
suggestions:
The commands you listed don't work for me, and I could not find
matching vendor / device id for the first 3 devices you mention:
$ cd <ipxe_repo>/src/
$ grep -RHIin 8086 drivers/net/ | grep -i 2000
$ grep -RHIin 8086 drivers/net/ | grep -i 2001
$ grep -RHIin 8086 drivers/net/ | grep -i 2625
I could build a efi-driver for the last device your mention:
Commands:
$ cd <ipxe_repo>/src/
$ grep -RHIin 8086 drivers/net/ | grep -i 1502
gives me:
./intel.c:926: PCI_ROM ( 0x8086, 0x1502, "82579lm", "82579LM", 0 )
So I could build your UEFI driver with the command:
$ make bin-x86_64-efi/82579lm.efidrv -j6
(replace efidrv with efirom to build a rom)
I am wondering if your other devices are supported. Maybe the way I
am looking for devices is not appropriate though.
Here is an example procedure to load the driver built previously
(very verbose).
cd to the filesystem
> fs0:
Check that your device exist. Here look for your device 0x8086, 0x1502
> pci
Check what drivers are loaded. Write down the index of the last
driver loaded.
> drivers
List devices. Write down the index of the last device
> devices
Load your driver manually (this is the file compiled previously)
> load driver\82579lm.efidrv
Now check if your driver is loaded
> drivers
and if your device is present.
> devices
If that does not work maybe try to enable debug in some iPXE files.
For example:
make bin-x86_64-efi/82579lm.efidrv -j6 DEBUG=intel,efi_snp,efi_init
Enabling debug in files related to your device may give you some
useful info.
Hope this helps,
Alexandre
On 13/09/12 12:54, Daniel Li wrote:
Hi Alexandre,
Could you tell me which issue was be fixed by your patch?
I have some issue like following about ipxe with uefi,I think you
are good well with uefi.
Our product will import ipxe,but efi file can't found network
device,I built efi file according to the below steps.
1.I have undef PXE_STACK and PXE_MENU in src\config\general.h.
2.Built EFI version as vendor/product specific:
$ make bin-x86-64/10222000.efi bin-x86-64/10222001.efi
bin-x86-64/10222625.efi.(computer vendor is 1022 ,device id is 2001).
$make bin-x86-64-efi/80861502(computer vendor is 8086,device id is
1502).
3.insert usb drive and enter uefi shell.
4.fs0:
5.run above efi file.
6.All commands are Show the tip "No more network devices".
------------------
Best Regards,
Daniel Li
------------------ Original ------------------
*From: * "Alexandre Rames"<[email protected]>;
*Date: * Thu, Sep 13, 2012 06:15 PM
*To: * "ipxe-devel"<[email protected]>;
*Subject: * [ipxe-devel] UEFI SCT patch
Hello,
I recently started working on our UEFI driver, and some of my changes
may be useful for iPXE upstream.
So here is a first patch dealing with NIC independent code. Can you
have
a look and let me know if it needs some modifications.
It includes:
- changes to be more UEFI compliant and pass SCT tests (most changes
in efi_snp.c)
- initial support for the driver health protocol
- initial support for the firmware management protocol
You'll probably want to verify the additional checks for UEFI versions:
- I added the DRIVER_EFI_SUPPORTED_VERSION protocol, as required by
the UEFI spec.
" Provides information about the version of the EFI specification
that a
driver is following. This
protocol is required for EFI drivers that are on PCI and other plug in
cards. "
- In efi_init.c I added a check for a minimal version of UEFI required
to use the driver. I am not sure you want to keep that.
Alexandre
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel