Given the code in that constructor, I would say that you are EFI 2.0 compliant,
but that is not enough for this library. I copied the constructor below, which
just returns an error.
EFI_STATUS
EFIAPI
HandleParsingLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid,
gImageHandle, UefiHandleParsingLibStrings, NULL);
if (mHandleParsingHiiHandle == NULL) {
return (EFI_DEVICE_ERROR);
}
return (EFI_SUCCESS);
}
From: Thomas Rognon [mailto:[email protected]]
Sent: Tuesday, March 12, 2013 1:45 PM
To: [email protected]
Subject: Re: [edk2] Driver dependencies
Awesome, thanks. I'll read those now.
Right now, one of my test machine is asserting after calling
HandleParsingLibConstructor. This machine has far fewer drivers than my
development machine, so I still haven't figured out what I'm missing yet.
Here's more detailed info:
Here is the debug output:
ASSERT_EFI_ERROR (Status = Device Error)
ASSERT c:\...\AutoGen.c(368) !EFI_ERROR (Status)
Here is the code that is asserted on in AutoGen.c:
VOID
EFIAPI
ProcessLibraryConstructorList (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
...
Status = HandleParsingLibConstructor (ImageHandle, SystemTable);
ASSERT_EFI_ERROR (Status);
...
}
Here is the output of "drivers" on my test machine:
T D
D Y C I
R P F A
V VERSION E G G #D #C DRIVER NAME IMAGE NAME
== ======== = = = == == =================================== ===================
1C 00000010 ? - - - - Usb Wdm Driver TDTUsbWdm
1E 00000010 ? - - - - PCI Serial Driver PciSerial
1F 00000001 ? - - - - AMI Tekoa IDE-R Controller Driver IDER
3B 00000001 B - - 1 1 AMI SB Driver SBDXE
41 00000010 B - - 1 3 AMI Generic LPC Super I/O Driver CORE_DXE
4B 00010000 D - - 2 - AMI File System Driver FileSystem
4D 00020101 B - - 1 17 <UNKNOWN> PciBus
4E 00000001 D - - 2 - AMI SB IDE Controller Driver SBIDE
4F 00000001 ? - - - - <UNKNOWN> SBAHCI
51 00000001 ? - - - - AMI AHCI BUS Driver AHCI
57 00000010 ? - - - - <UNKNOWN> BIOSBLKIO
58 00000024 B - - 1 1 BIOS[INT10] Video Driver CsmVideo
59 00000010 ? - - - - <UNKNOWN> <UNKNOWN>
5B 00010001 ? - - - - AMI ISO9660 File System Driver FsIso9660
5F 00000010 ? - - - - AMI Terminal Driver Terminal
67 00000010 D - - 2 - NTFS File System Driver 394D7D54-2346-4CF5
80 00000088 D - - 2 - AMI USB2.0 Driver UHCD
82 00000088 B - - 2 5 USB bus UHCD
83 00000001 D - - 1 - USB Keyboard driver UHCD
84 00000002 D - - 1 - USB Mouse driver UHCD
85 00000001 D - - 1 - USB Mass Storage driver UHCD
94 00000010 D - - 7 - <UNKNOWN> CORE_DXE
95 00000010 D - - 1 - <UNKNOWN> CORE_DXE
96 00000010 B - - 3 3 <UNKNOWN> CORE_DXE
98 00000010 B - - 2 5 <UNKNOWN> CORE_DXE
99 00000010 D - - 2 - AMI PS/2 Driver CORE_DXE
9A 00000010 ? - - - - AMI Floppy Driver CORE_DXE
9B 00000001 B - - 2 1 AMI IDE BUS Driver CORE_DXE
Here is the output of "ver" on my test machine:
EFI Specification Revision : 2.0
EFI Vendor : American Megatrends
EFI Revision : 4.635
On Tue, Mar 12, 2013 at 3:16 PM, Andrew Fish
<[email protected]<mailto:[email protected]>> wrote:
Thomas,
The edk2 is an example of a UEFI implementation, but many can exist.
I think you should read UEFI 2.3.1 (http://www.uefi.org/specs/) section 2.6 to
understand what a UEFI system is required to do.
I'd also point that something like a Firmware Volume is not UEFI, but PI (UEFI
Platform Initialization Specification
1.2.1<http://www.uefi.org/specs/platform_agreement>). A UEFI system is not
required to implement PI.
Also in the UEFI world some things have gotten obsoleted over time, so there
may be a way to fallback to and older version gracefully. If you let the list
know some of the protocols you are depending on we may be able to give you some
advice on the list.
Andrew Fish
On Mar 12, 2013, at 1:03 PM, Thomas Rognon
<[email protected]<mailto:[email protected]>> wrote:
I haven't yet come across a computer that has all, or even most, of the drivers
included in edk2. This is a problem because my UEFI application depends on
some of these drivers.
I need to deploy my application as efi files and not interfere with the
vendor's firmware volumes, so creating my own firmware volumes and replacing
the vendor firmware volumes is not an option.
My solution is to have copies of all the required drivers for my application
alongside of my application and have a script load them all and then start my
application.
My problem is finding what drivers are needed and in what order they need to be
loaded. It's been very hit and miss so far. Half of the time, the drivers
won't even load, they will crash the computer (I'm assuming because they
require other drivers to be present first).
Does anyone know a good way to figure out what drivers are required and in what
order for an arbitrary application? Also, even though most UEFI systems don't
--provide-- all of the edk2 drivers, are all UEFI systems guaranteed to
--support-- all of the edk2 drivers?
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________
edk2-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
edk2-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel