Hi:
Do you build DevicePathDxe with MdeModulePkg.dsc? You may
notice that PcdDevicePathSupportDevicePathFromText and
PcdDevicePathSupportDevicePathToText are set to false, in this case, no
protocols will be installed by this driver. You may set both to TRUE in
MdeModulePkg.dsc, rebuild DevicePathDxe and try again. By the way, "dh -p
DpathToText" means to search DevicePathToTextProtocol in system, not searching
the DevicePathDxe driver.
Thanks
Elvin
From: duck wilson [mailto:duck.54...@gmail.com]
Sent: Friday, October 12, 2012 7:00 PM
To: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] Help with EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
Elvin and Liming, thanks for the sanity check and info.
I ran "dh -p DpathToText" and sure enough the driver does not exist.
I manually loaded the DevicePathDxe with "load DevicePathDxe.efi" and get a
"success" message,
but that did not resolve the problem. Here again I am not sure if it is me or
the firmware. When I run
my simple test program after manually loading the driver I still get
EFI_NOT_FOUND. Also
"dh -p DpathToText" continues to report the driver as non-existent. But when I
run "dh" I find the
following handle:
EA: Image (\/DevicePathDxe.efi)
So although the driver loaded successfully and has a handle, somehow
DpathToText is still not available.
I am not sure what the problem is after manually loading the driver. I do know
that the firmware in this
motherboard has one quirk. When the shell "drivers" command is run the system
locks up hard and
requires power-cycling to get it going again.
Your thoughts?
(Oh yes, I really need to get an emulation environment running...)
On Fri, Oct 12, 2012 at 3:44 AM, Li, Elvin
<elvin...@intel.com<mailto:elvin...@intel.com>> wrote:
Hello:
I think your code has no problem, it can run on my board with
success.
You cannot use guid command to check if a protocol a installed
in your system, shell will add some known GUIDs into output result even they
are not installed. You can use "dh -p DpathToText" command to see if
DevicePathToText is installed. I think your BIOS does not include
MdeModulePkg\Universal\DevicePathDxe module to install this protocol.
Thanks
Elvin
From: duck wilson [mailto:duck.54...@gmail.com<mailto:duck.54...@gmail.com>]
Sent: Friday, October 12, 2012 2:12 PM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: [edk2] Help with EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
Greetings,
I am having difficulty in getting an interface instance with both
LocateHandleBuffer
and LocateProtocol for the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL, in both cases the
result is EFI_NOT_FOUND. My build environment is UDK2010.SR1.UP1 with no changes
other than the patch for GCC 4.7 on openSUSE 12.2. The hardware platform is
X86_64
with UEFI 2.0 firmware. I am currently testing using the platform firmware (not
emulation).
Since I am new to UEFI/EDK2 I would like to believe the problem is moi, but
after
too many hours I am beginning to believe it is the platform firmware. Any help
would be much appreciated.
To reduce the problem to simplest form I created an application that does
nothing
more than a LocateProtocol call and print the result (also did the same exercise
with LocateHandleBuffer). The program source and inf files are listed below. The
program was added to MdeModulePkg/Application/Locate. MdeModulePkg.dsc was
changed
to add the new component then the program was built with:
build -m MdeModulePkg/Application/Locate/Locate.inf
Got a clean build with no problem. Copied Locate.efi to the EFI partition.
Booted
into the EFI shell. Run the program and get the not found result.
Running the shell GUID command reveals that the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
is registered and the guid is correct. At this point I am stumped.
TIA!
Locate.c
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/UefiApplicationEntryPoint.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/DevicePathToText.h>
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *Interface;
Status = gBS->LocateProtocol (
&gEfiDevicePathToTextProtocolGuid,
NULL,
(VOID **) &Interface
);
if (EFI_ERROR (Status)) {
Print (L"LocateProtocol error: %r\n", Status);
}
else {
Print (L"DevicePathToTextProtocol found.\n");
}
return EFI_SUCCESS;
}
Locate.inf
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = Locate
FILE_GUID = fa7cd993-abf6-4333-85e6-493ba95661d0
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
ENTRY_POINT = UefiMain
[Sources]
Locate.c
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
UefiApplicationEntryPoint
UefiBootServicesTableLib
UefiLib
[Protocols]
gEfiDevicePathToTextProtocolGuid
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel