> On Oct 5, 2016, at 1:53 PM, Daniil Egranov <daniil.egra...@arm.com> wrote:
> 
> 
> 
> On 10/05/2016 02:48 PM, Andrew Fish wrote:
>>> On Oct 5, 2016, at 12:24 PM, Daniil Egranov <daniil.egra...@arm.com> wrote:
>>> 
>>> I have the same ASSERT issue on Juno platform even the EnglishDxe.inf is 
>>> included to the platform build. If UefiShellLib has such dependency on the 
>>> protocol then according to EDKII Module Writer's Guide you need to specify 
>>> the dependency on protocol in the module .inf to ensure the drivers proper 
>>> load sequence.
>>> 
>>> 8.6 Dependency Expressions
>>> A dependency expression specifies the protocols that the DXE driver 
>>> requires to
>>> execute. In EDK II, it is specified in the [Depex] section of INF file.
>>> 
>> The Dependency Expression is for DXE Drivers that are dispatched by the DXE 
>> Core. A UEFI Driver from an option ROM or an Application does not get 
>> dispatched by the dispatch and the Depex will not help. The Depex ends up 
>> being a section in the FV and it has nothing to do with the PE/COFF image of 
>> the an application or option ROM.
>> 
>> IMHO the shell should try as hard as possible to function and should not 
>> ASSERT if some newer Protocol is missing.
>> 
>> Thanks,
>> 
>> Andre wFish
> I had to put a context of the ASSERT message in the original message to make 
> it more clear:
> 
> add-symbol-file 
> /home/user1/workspace/juno_16.09/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe/DEBUG/ArmJunoDxe.dll
>  0xF8AB9000
> Loading driver at 0x000F8AB8000 EntryPoint=0x000F8AB9048 ArmJunoDxe.efi
> 
> ASSERT_EFI_ERROR (Status = Not Found)
> ASSERT [ArmJunoDxe] 
> /home/danegr01/workspace/juno_16.09/uefi/edk2/ShellPkg/Library/UefiShellLib/UefiShellLib.c(305):
>  !EFI_ERROR (Status)
> 
> If driver includes a module which has dependency on one of the protocols, 
> should the driver know about this dependency? Probably not. It should be 
> inherited from the module. Adding [Depex] to UefiShellLib corrected 
> dispatching ArmJunoDxe and EnglishDxe by the Dxe Core.
> 

Daniil,

Sorry, I was assuming the UefiShellLib only supported UEFI Applications. Thats 
what I get for not looking at the code :(, my bad. 

https://github.com/tianocore/edk2/blob/master/ShellPkg/Library/UefiShellLib/UefiShellLib.inf#L23
 
<https://github.com/tianocore/edk2/blob/master/ShellPkg/Library/UefiShellLib/UefiShellLib.inf#L23>
  LIBRARY_CLASS                  = ShellLib|UEFI_APPLICATION UEFI_DRIVER 
DXE_RUNTIME_DRIVER DXE_DRIVER

Given the library supports DXE_RUNTIME_DRIVER and DXE_DRIVER I think you are 
right it should publish a Depex if it has a hard dependency. 

I'm guessing that your DXE Driver is dispatching prior UEFI Driver that 
publishes the protocol. 

Thanks,

Andrew Fish


>> 
>> 
>>> The following dependency in UefiShellLib.inf fixes ASSERT problem:
>>> 
>>> [Depex]
>>>  gEfiUnicodeCollation2ProtocolGuid
>>> 
>>> 
>>> Thanks,
>>> 
>>> Daniil
>>> 
>>> 
>>> On 10/05/2016 11:02 AM, Shah, Tapan wrote:
>>>> It's possible. But I think gEfiUnicodeCollation2ProtocolGuid protocol is 
>>>> necessary for even other Shell libraries other than UefiShellLib in order 
>>>> to have Shell parser and other command line processing to work properly. 
>>>> That's why I added ASSERT if UefiShellLib fails to locate the protocol.
>>>>  Reference platform should have EnglishDxe module to have this protocol 
>>>> installed properly.
>>>> 
>>>>   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
>>>> 
>>>> -----Original Message-----
>>>> From: Carsey, Jaben [mailto:jaben.car...@intel.com]
>>>> Sent: Wednesday, October 05, 2016 10:41 AM
>>>> To: Supreeth Venkatesh <supreeth.venkat...@arm.com>; edk2-devel-01 
>>>> <edk2-devel@lists.01.org>; Shah, Tapan <tapands...@hpe.com>
>>>> Cc: Leif Lindholm <leif.lindh...@arm.com>; Carsey, Jaben 
>>>> <jaben.car...@intel.com>
>>>> Subject: RE: Assert in ShellPkg with latest tianocore edk2 source on the 
>>>> Reference Platform
>>>> 
>>>> Tapan,
>>>> 
>>>> Could this be a side effect of your patch?  Should we allow the 
>>>> UefiShellLib to continue without this protocol and then return an error 
>>>> only when the OpenFile is called?
>>>> 
>>>> Also, it looks like we never properly initialize 
>>>> mUnicodeCollationProtocol.  We check for NULL in Constructor, but nothing 
>>>> else...
>>>> 
>>>> -Jaben
>>>> 
>>>>> -----Original Message-----
>>>>> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
>>>>> Supreeth Venkatesh
>>>>> Sent: Tuesday, October 04, 2016 3:51 PM
>>>>> To: edk2-devel-01 <edk2-devel@lists.01.org>
>>>>> Cc: Leif Lindholm <leif.lindh...@arm.com>
>>>>> Subject: [edk2] Assert in ShellPkg with latest tianocore edk2 source
>>>>> on the Reference Platform
>>>>> Importance: High
>>>>> 
>>>>> All,
>>>>> 
>>>>> Recently, I updated to latest edk2 master (yesterday's) and I am
>>>>> actually encountering assert in
>>>>> ShellPkg/Library/UefiShellLib/UefiShellLib.c
>>>>> 
>>>>> if (mUnicodeCollationProtocol == NULL) {
>>>>>     Status = gBS->LocateProtocol (&gEfiUnicodeCollation2ProtocolGuid,
>>>>> NULL, (VOID**)&mUnicodeCollationProtocol);
>>>>>     ASSERT_EFI_ERROR (Status);
>>>>>   }
>>>>> 
>>>>> It was working few weeks back and has now stopped working.
>>>>> It's probably because  the platform is unable to locate this protocol
>>>>> "UnicodeCollationProtocol".
>>>>> Is Anyone else facing the same issue?
>>>>> Does the new ShellPkg requires additional packages/infs to be included
>>>>> in the platform description file to work with latest changes  to get
>>>>> past this error?
>>>>> 
>>>>> Thanks,
>>>>> Supreeth
>>>>> IMPORTANT NOTICE: The contents of this email and any attachments are
>>>>> confidential and may also be privileged. If you are not the intended
>>>>> recipient, please notify the sender immediately and do not disclose
>>>>> the contents to any other person, use it for any purpose, or store or
>>>>> copy the information in any medium. Thank you.
>>>>> _______________________________________________
>>>>> edk2-devel mailing list
>>>>> edk2-devel@lists.01.org
>>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org <mailto:edk2-devel@lists.01.org>
> https://lists.01.org/mailman/listinfo/edk2-devel 
> <https://lists.01.org/mailman/listinfo/edk2-devel>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to