<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hello,<br>
      <br>
      I think the answers to your first three points should interest
      you, in particular the 3rd.<br>
      <br>
      Alexandre<br>
      <br>
      On 15/09/12 16:46, Daniel Li wrote:<br>
    </div>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <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>
    </blockquote>
    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.<br>
    <br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <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>
    </blockquote>
    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).<br>
    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.<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <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>
    </blockquote>
    I detailed in my first email a procedure which I think can be used
    to spot which uefi driver to use with your card.<br>
    I mentioned 82579lm.efidrv because you listed a device with "<span
      style="font-family: Verdana,sans-serif;">computer vendor is
      8086,device id is 1502".<br>
      I can't see a matching device in the output of 'pci' you attached,
      so 82579lm.efidrv is probably not what you need.<br>
      <br>
      From the output of your 'pci' command attached, I found (following
      the procedure in my first email):<br>
      ipxe/src/drivers/net $ grep -RHIin "8086" . | grep -i "100f"<br>
      ./intel.c:844:    PCI_ROM ( 0x8086, 0x100f, "82545em", "82545EM
      (Copper)", 0 ),<br>
      <br>
      <b>So you probably need to build this one:</b><b><br>
      </b><b>$ make -C src bin-x86_64-efi/</b><span style="font-family:
        Verdana,sans-serif;"><b>82545em.efidrv</b><br>
        <br>
        <b>And then do check from your uefi that the driver is loaded
          and is managing a device.</b><b><br>
        </b><b>See my first email and (in your uefi shell)   'drivers
          -?'</b><b>  and 'devices -?'</b><b>. (</b>The 'drivers'
        command has a column listing the number of devices managed by
        the drivers.)<br>
      </span></span>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <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>
    </blockquote>
    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.<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <div>5.PCI_vm_windows7_x64_under_uefishell.txt was created when i
        run command "pci" under uefi shell.</div>
    </blockquote>
    See answer to 3).<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <div>6.snponly_boot_failed_under_uefishell.jpg when I run under
        command: </div>
      <div>fs0:snponly.efi</div>
      <div>      ipxe:chain <a class="moz-txt-link-freetext"
          href="http://boot.ipxe.org/demo/boot.php">http://boot.ipxe.org/demo/boot.php</a></div>
    </blockquote>
    I guess you need to load the correct driver before trying to start
    snponly.efi<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <div>          <br>
      </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>
    </blockquote>
    As pointed before try in order:<br>
    - building the correct driver<br>
    - load it from the uefi shell and CHECK that it manages your device.<br>
    - then try pxe booting or other snp utilities.<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <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 <br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Alexandre<br>
    <blockquote cite="mid:tencent_3F77E4BB5F2541B922E66C1C@qq.com"
      type="cite">
      <div>
        <div style="font-size:14px;font-family:Verdana;color:#000;"> </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"<a
                class="moz-txt-link-rfc2396E"
                href="mailto:arames@solarflare.com"><arames@solarflare.com></a>;</div>
            <div><b>Date: </b> Fri, Sep 14, 2012 05:04 PM</div>
            <div><b>To: </b> "Daniel Li"<a
                class="moz-txt-link-rfc2396E"
                href="mailto:354225989@qq.com"><354225989@qq.com></a>;
              <wbr></div>
            <div><b>Cc: </b> "ipxe-devel"<a
                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">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 moz-do-not-send="true"
                    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>
    </blockquote>
    <br>
    <br>
  </body>
</html>