<div>Hi Alexandre,</div><div>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?</div><div>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?</div><div>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?</div><div>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.</div><div>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.</div><div>5.PCI_vm_windows7_x64_under_uefishell.txt was created when i run command "pci" under uefi shell.</div><div>6.snponly_boot_failed_under_uefishell.jpg when I run under command: </div><div>fs0:snponly.efi</div><div>      ipxe:chain http://boot.ipxe.org/demo/boot.php</div><div>          </div><div><br></div><div>5.Could you help to review two attach documents and point out my mistakes?</div><div>Thanks for your great greate support.</div><div><br></div><div><br></div><div><br></div><div><div style="color:#909090;font-family:Arial Narrow;font-size:12px">------------------</div><div style="font-size:14px;font-family:Verdana;color:#000;">Best Regards,<div>Daniel Li </div></div></div><div> </div><div><includetail><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Alexandre Rames"<arames@solarflare.com>;</div><div><b>Date: </b> Fri, Sep 14, 2012 05:04 PM</div><div><b>To: </b> "Daniel Li"<354225989@qq.com>; <wbr></div><div><b>Cc: </b> "ipxe-devel"<ipxe-devel@lists.ipxe.org>; <wbr></div><div><b>Subject: </b> Re: [ipxe-devel] UEFI SCT patch</div></div><div><br></div>
  
    
  
  
    <div class="moz-cite-prefix">For info I attached a screenshot of the
      driver loading. It was compiled with<br>
      DEBUG=efi_init,efi_snp,efi_pci,efi_driver_health,netdevice,sfc9000<br>
      <br>
      On 14/09/12 09:59, Alexandre Rames wrote:<br>
    </div>
    <blockquote cite="mid:5052F20C.70304@solarflare.com" type="cite">
      
      <div class="moz-cite-prefix">Hello Daniel,<br>
        <br>
        <br>
        <br>
        On 13/09/12 14:48, Daniel Li wrote:<br>
      </div>
      <blockquote cite="mid:tencent_71F736237160EB45749F6506@qq.com" type="cite">
        
        <div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; ">Hi Alexandre,</div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; ">Thanks for your quickly reply.Did you
            built a *.efi and detected device under uefi enviroment?Did
            you network boot succeed?</div>
        </div>
      </blockquote>
      <br>
      Yes. I can detect my pci device (UEFI 'pci' command), and load the
      driver. On a real UEFI machine I can successfully PXE boot.<br>
      <br>
      I am not sure if that makes a difference with your command I see
      in the screenshot, but I use a command like <br>
      fs0:\> load <driver name>.efidrv<br>
      to load the driver. Not a simple invocation of a *.efi file.<br>
      From what I mentioned in my previous email yours may be:<br>
      ipxe/src $ ls bin-x86_64-efi/*.efidrv<br>
      bin-x86_64-efi/82579lm.efidrv<br>
      Check the output of 'pci' in your UEFI shell (see previous email).<br>
      <br>
      <blockquote cite="mid:tencent_71F736237160EB45749F6506@qq.com" type="cite">
        <div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; ">I have debug this issue more than one
            week,but i can't find the root cause,my deubg information
            like following figure.</div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; ">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.</div>
        </div>
      </blockquote>
      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.<br>
      <blockquote cite="mid:tencent_71F736237160EB45749F6506@qq.com" type="cite">
        <div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; "><font color="#ff0000">BTW,Could you
              tell me whether ipxe is supported in uefi enviroment,if
              not,could you tell me your plan.</font></div>
        </div>
      </blockquote>
      I don't really understand the question here. You can compile a
      UEFI driver for you card if it is supported in iPXE.<br>
      <blockquote cite="mid:tencent_71F736237160EB45749F6506@qq.com" type="cite">
        <div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; "><br>
          </div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; "><img src="cid:3DCF9E21@A4DE5A16.BEA25450.bin" style="border-top-style: none; border-right-style: none;
              border-bottom-style: none; border-left-style: none;
              border-width: initial; border-color: initial;
              vertical-align: middle; "></div>
          <div style="font-family: 'lucida Grande', Verdana;
            line-height: 23px; ">
            <div style="color: rgb(144, 144, 144); font-family: 'Arial
              Narrow'; font-size: 12px; ">------------------</div>
          </div>
        </div>
        <div><br>
        </div>
        <div>
          <div style="color:#909090;font-family:Arial
            Narrow;font-size:12px">------------------</div>
          <div style="font-size:14px;font-family:Verdana;color:#000;">Best

            Regards,
            <div>Daniel Li </div>
          </div>
        </div>
        <div> </div>
      </blockquote>
      Alexandre<br>
      <blockquote cite="mid:tencent_71F736237160EB45749F6506@qq.com" type="cite">
        <div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div style="font-size: 12px;font-family: Arial
              Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div>
            <div style="font-size: 12px;background:#efefef;padding:8px;">
              <div><b>From: </b> "Alexandre Rames"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:arames@solarflare.com"><arames@solarflare.com></a>;</div>
              <div><b>Date: </b> Thu, Sep 13, 2012 08:39 PM</div>
              <div><b>To: </b> "Daniel Li"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:354225989@qq.com"><354225989@qq.com></a>;
                <wbr></div>
              <div><b>Cc: </b> "ipxe-devel"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:ipxe-devel@lists.ipxe.org"><ipxe-devel@lists.ipxe.org></a>;
                <wbr></div>
              <div><b>Subject: </b> Re: [ipxe-devel] UEFI SCT patch</div>
            </div>
            <div><br>
            </div>
            <div class="moz-cite-prefix">My patch will potentially fix
              some errors reported by <a moz-do-not-send="true" href="http://www.uefi.org/specs/">SCT</a>. It probably
              won't fix your problem.<br>
              <br>
              I have little experience with UEFI or iPXE, but here are a
              few suggestions:<br>
              <br>
              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:<br>
              $ cd <ipxe_repo>/src/<br>
              $ grep -RHIin 8086 drivers/net/ | grep -i 2000<br>
              $ grep -RHIin 8086 drivers/net/ | grep -i 2001<br>
              $ grep -RHIin 8086 drivers/net/ | grep -i 2625<br>
              <br>
              I could build a efi-driver for the last device your
              mention:<br>
              <br>
              Commands:<br>
              $ cd <ipxe_repo>/src/<br>
              $ grep -RHIin 8086 drivers/net/ | grep -i 1502<br>
              gives me:<br>
              ./intel.c:926:    PCI_ROM ( 0x8086, 0x1502, "82579lm",
              "82579LM", 0 )<br>
              <br>
              So I could build your UEFI driver with the command:<br>
              $ make bin-x86_64-efi/82579lm.efidrv -j6<br>
              (replace efidrv with efirom to build a rom)<br>
              <br>
              <br>
              I am wondering if your other devices are supported. Maybe
              the way I am looking for devices is not appropriate
              though.<br>
              <br>
              Here is an example procedure to load the driver built
              previously (very verbose).<br>
              <br>
              cd to the filesystem<br>
              > fs0:<br>
              Check that your device exist. Here look for your device
              0x8086, 0x1502<br>
              > pci<br>
              Check what drivers are loaded. Write down the index of the
              last driver loaded.<br>
              > drivers<br>
              List devices. Write down the index of the last device<br>
              > devices<br>
              Load your driver manually (this is the file compiled
              previously)<br>
              > load driver\82579lm.efidrv<br>
              Now check if your driver is loaded<br>
              > drivers<br>
              and if your device is present.<br>
              > devices<br>
              <br>
              If that does not work maybe try to enable debug in some
              iPXE files.<br>
              For example:<br>
              make bin-x86_64-efi/82579lm.efidrv -j6
              DEBUG=intel,efi_snp,efi_init<br>
              Enabling debug in files related to your device may give
              you some useful info.<br>
              <br>
              Hope this helps,<br>
              <br>
              Alexandre<br>
              <br>
              On 13/09/12 12:54, Daniel Li wrote:<br>
            </div>
            <blockquote cite="mid:tencent_49A6ED8A6B8AE85A6386FC46@qq.com" type="cite">
              <div>Hi Alexandre,</div>
              <div>Could you tell me which issue was be fixed by your
                patch?</div>
              <div><br>
              </div>
              <div>I have some issue like following about ipxe with
                uefi,I think you are good well with uefi.</div>
              <div><br>
              </div>
              <div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; ">Our
                      product will import ipxe,but efi file can't found
                      network device,I built efi file according to the
                      below steps.<o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">1.I have undef PXE_STACK and  PXE_MENU in
                      src\config\general.h.</span><span style="font-family: Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">2.Built EFI version as vendor/product
                      specific:</span><span style="font-family: Verdana,
                      sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">$ make bin-x86-64/10222000.efi
                      bin-x86-64/10222001.efi
                      bin-x86-64/10222625.efi.(computer vendor is 1022
                      ,device id is 2001).</span><span style="font-family: Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">$make bin-x86-64-efi/80861502(computer
                      vendor is 8086,device id is 1502).</span><span style="font-family: Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">3.insert usb drive and enter uefi shell.</span><span style="font-family: Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">4.fs0:</span><span style="font-family:
                      Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">5.run above efi file.</span><span style="font-family: Verdana, sans-serif; "><o:p></o:p></span></p>
                </div>
                <div style="font-family: 'lucida Grande', Verdana;
                  line-height: 23px; ">
                  <p class="MsoNormal" style="line-height: 17.25pt;
                    margin-top: 0in; margin-right: 0in; margin-left:
                    0in; margin-bottom: 0.0001pt; font-size: 12pt;
                    font-family: 'Times New Roman', serif; "><span style="font-family: Verdana, sans-serif; color:
                      red; ">6.All commands are Show the tip </span><span style="font-size: 14.5pt; font-family: Tahoma,
                      sans-serif; color: red; ">"No more network
                      devices".</span></p>
                </div>
              </div>
              <div><br>
              </div>
              <div>
                <div style="color:#909090;font-family:Arial
                  Narrow;font-size:12px">------------------</div>
                <div style="font-size:14px;font-family:Verdana;color:#000;">Best


                  Regards,
                  <div>Daniel Li </div>
                </div>
              </div>
              <div> </div>
              <div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div style="font-size: 12px;font-family: Arial
                  Narrow;padding:2px 0 2px 0;">------------------
                  Original ------------------</div>
                <div style="font-size:
                  12px;background:#efefef;padding:8px;">
                  <div><b>From: </b> "Alexandre Rames"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:arames@solarflare.com"><arames@solarflare.com></a>;</div>
                  <div><b>Date: </b> Thu, Sep 13, 2012 06:15 PM</div>
                  <div><b>To: </b> "ipxe-devel"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:ipxe-devel@lists.ipxe.org"><ipxe-devel@lists.ipxe.org></a>;
                    <wbr></div>
                  <div><b>Subject: </b> [ipxe-devel] UEFI SCT patch</div>
                </div>
                <div><br>
                </div>
                Hello,<br>
                <br>
                I recently started working on our UEFI driver, and some
                of my changes <br>
                may be useful for iPXE upstream.<br>
                <br>
                So here is a first patch dealing with NIC independent
                code. Can you have <br>
                a look and let me know if it needs some modifications.<br>
                It includes:<br>
                  - changes to be more UEFI compliant and pass SCT tests
                (most changes <br>
                in efi_snp.c)<br>
                  - initial support for the driver health protocol<br>
                  - initial support for the firmware management protocol<br>
                <br>
                You'll probably want to verify the additional checks for
                UEFI versions:<br>
                  - I added the DRIVER_EFI_SUPPORTED_VERSION protocol,
                as required by <br>
                the UEFI spec.<br>
                " Provides information about the version of the EFI
                specification that a <br>
                driver is following. This<br>
                protocol is required for EFI drivers that are on PCI and
                other plug in <br>
                cards. "<br>
                - In efi_init.c I added a check for a minimal version of
                UEFI required <br>
                to use the driver. I am not sure you want to keep that.<br>
                <br>
                <br>
                Alexandre<br>
                <br>
              </div>
            </blockquote>
            <br>
          </div>
      </blockquote>
      <br>
    </blockquote>
    <br></includetail></div>