public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Tian, Feng" <feng.tian@intel.com>
To: Saqib Khan <saqib.khan2011@gmail.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Tian, Feng" <feng.tian@intel.com>
Subject: Re: stuck on LoadImage while loading image from usb
Date: Fri, 30 Sep 2016 01:23:31 +0000	[thread overview]
Message-ID: <7F1BAD85ADEA444D97065A60D2E97EE566E248A8@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <CAF=YJJ_eojJygAq7F1KXLd--vo2JVNqwiBgfyxrhBPtsCxWt3g@mail.gmail.com>

In your code, there are several problems.
1. For your case, you couldn't simply locate all BlockIo instances. It's because some of these BlockIo instances may belong to other removable devices, some may point to physical partition rather than logical partition.
2. The logic below is incorrect. It means TRUE
        if(!BlkIo->Media->RemovableMedia || BlkIo->Media->RemovableMedia)
3. Why don't you directly locate all SimpleFileSystem protocol instances and then find out Hello.efi? It's more simple.
4. The hang you found should be due to a wrong device path pass down to LoadImage().

Thanks
Feng

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Saqib Khan
Sent: Thursday, September 29, 2016 7:41 PM
To: edk2-devel@lists.01.org
Subject: [edk2] stuck on LoadImage while loading image from usb

Hi ,

I am trying to load an EFI from another EFI, it stuck when LoadImage is called both EFI are located on USB .

Here is code snippet


"
    UINTN NumberFileSystemHandles;
    EFI_HANDLE *FileSystemHandles;
    UINTN Index;
    EFI_BLOCK_IO* BlkIo;
    EFI_DEVICE_PATH_PROTOCOL *FilePath;
    EFI_HANDLE    NewHandle;

    UINTN         ExitDataSizePtr;

    EFI_BOOT_LOGO_PROTOCOL          *BootLogo;
    EFI_STATUS    Status;




    gBS->LocateHandleBuffer(ByProtocol,
                            &gEfiBlockIoProtocolGuid,
                            NULL,
                            &NumberFileSystemHandles,
                            &FileSystemHandles);

    for(Index = 0; Index<NumberFileSystemHandles; ++Index) {

        Status = gBS -> HandleProtocol(FileSystemHandles[Index],
                                        &gEfiBlockIoProtocolGuid,
                                        (VOID**) &BlkIo);

        Print(L"after HandleProtocol %x - %r\n",FileSystemHandles[Index], Status);
        if(!EFI_ERROR(Status)) {


            //check if it is usb
            if(!BlkIo->Media->RemovableMedia ||
BlkIo->Media->RemovableMedia)
            {



                    FilePath = FileDevicePath(FileSystemHandles[Index],
                                            L"Hello.efi");

                    Status = gBS->LoadImage(
                        FALSE,
                        gImageHandle,
                        FilePath,
                        NULL,
                        0,
                        &NewHandle);
                    if (EFI_ERROR(Status)) {
                        if (NewHandle != NULL) {
                            gBS->UnloadImage(NewHandle);
                        }


                        //return (Status);
            }


    }
"

can any one help me what I am doing wrong here?

--
Regards
Saqib
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


      reply	other threads:[~2016-09-30  1:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-29 11:41 stuck on LoadImage while loading image from usb Saqib Khan
2016-09-30  1:23 ` Tian, Feng [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7F1BAD85ADEA444D97065A60D2E97EE566E248A8@SHSMSX101.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox