Hi Dandan,

This is also valuable input from your side, let me check this also.

Thanks for kind support

> On 04-Aug-2018, at 3:41 PM, Bi, Dandan <dandan...@intel.com> wrote:
> 
> Hi Prabin,
> 
> Here is a simple introduction of current performance infrastructure in latest 
> Edk2 code base.
> Hope it can have some help when you enable it.
> https://github.com/dandanbi/edk2/wiki/Performance-Infrastructure
> 
> 
> Thanks,
> Dandan
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of prabin 
> ca
> Sent: Saturday, August 04, 2018 1:20 PM
> To: Andrew Fish <af...@apple.com>
> Cc: edk2-devel <edk2-devel@lists.01.org>; Laszlo Ersek <ler...@redhat.com>
> Subject: Re: [edk2] PerformancePkg on multiple platform -
> 
> Hi Andrew,
> 
> I have already enabled that PCD in my DSC file, because of that its working 
> in some platform.
> 
> What I'm doing is building my DP.efi and DXE driver from that dsc file and 
> testing it from UEFI shell.
> 
> thanks for your help as well.
> 
>> On Sat, Aug 4, 2018 at 12:08 AM, Andrew Fish <af...@apple.com> wrote:
>> 
>> Prabin,
>> 
>> There is a PCD setting to configure performance collection.
>> 
>> PCDs are defined in the .DEC file and it looks like the default is 
>> zero and that means disabled.
>> MdePkg/MdePkg.dec
>> ...
>>  ## The mask is used to control PerformanceLib behavior.<BR><BR>
>>  #  BIT0 - Enable Performance Measurement.<BR>
>>  # @Prompt Performance Measurement Property.
>>  # @Expression  0x80000002 | (gEfiMdePkgTokenSpaceGuid.
>> PcdPerformanceLibraryPropertyMask & 0xFE) == 0
>>  gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyM
>> ask|0|UINT8|0x00000009
>> 
>> If you search the code you will see some platforms enabling 
>> performance measurement in their DSC files.
>> 
>> /Volumes/Case/UDK2018(vUDK2018)>git grep gEfiMdePkgTokenSpaceGuid.
>> PcdPerformanceLibraryPropertyMask -- *.dsc
>> BeagleBoardPkg/BeagleBoardPkg.dsc:272:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|1
>> EmbeddedPkg/EmbeddedPkg.dsc:175:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0
>> QuarkPlatformPkg/Quark.dsc:373:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> QuarkPlatformPkg/Quark.dsc:376:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x00
>> QuarkPlatformPkg/QuarkMin.dsc:334:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> QuarkPlatformPkg/QuarkMin.dsc:337:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x00
>> Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> Vlv2TbltDevicePkg/PlatformPkgIA32.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> Vlv2TbltDevicePkg/PlatformPkgX64.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> 
>> So I'd check that 1st. If that does not work I recommend adding 
>> -report-file=build.log to your build command. You can look at the 
>> given driver/app you care about and see what the PCD settings are and 
>> which instance of the PerformanceLib got linked.
>> 
>> Thanks,
>> 
>> Andrew Fish
>> 
>> On Aug 3, 2018, at 11:17 AM, Laszlo Ersek <ler...@redhat.com> wrote:
>> 
>> Hi Prabin,
>> 
>> On 08/03/18 09:29, prabin ca wrote:
>> 
>> Hi Team,
>> 
>> I’m new to uefi and edk. Currently I’m trying to get performance of my 
>> dxe driver using PerformancePkg of EDK source code.
>> 
>> I’m using perf_start and perf_end T respected check points, it’s hot 
>> build and tested well in 2/3 platform. It’s giving proper response.
>> 
>> But when I’m Checking with multiple platform, in some of platforms 
>> it’s not working and got hang in uefi she’ll itself.
>> 
>> Please help me to resolve asap, it will be really helpful.
>> 
>> 
>> I can only give you some hints, because thus far I have also failed to 
>> figure out how performance measurements should be enabled for a 
>> platform from scratch.
>> 
>> Earlier I thought that an interested platform should include modules 
>> from PerformancePkg. I got some good results that way; however:
>> 
>> - it wouldn't work for AARCH64, and so I filed  
>> <https://bugzilla.tianocore.org/show_bug.cgi?id=679>
>> 
>> - ultimately PerformancePkg was removed in commit 922c1e94e4bb  
>> completely. (And for that reason I now closed TianoCore#679 as
>> WONTFIX.)
>> 
>> Commit 922c1e94e4bb doesn't really give pointers for enabling 
>> performance measurements in a platform -- it refers the user to the DP 
>> shell command instead of the standalone DP application, but that's 
>> only for displaying the stats, not for recording them.
>> 
>> One document where I found information is the Intel whitepaper
>> 
>> A Tour Beyond BIOS
>> Implementing Profiling in with EDK II
>> 
>> (just google it). "Part III – Performance Profile" is relevant.
>> 
>> The first section of that talks about enabling ACPI FPDT (ACPI 
>> Firmware Performance Data Table) support in edk2, for exposing 
>> firmware performance data to the OS. Again, that's not about *recording* the 
>> stats.
>> 
>> The second section of the same chapter seems to describe how stats can 
>> be recorded however. AIUI, the DXE Core can provide the 
>> PERFORMANCE[_EX] protocols, if the DxeCorePerformanceLib instance is 
>> linked into it by the platform DSC file. In turn DXE modules can send 
>> measurements to the protocol via the PerformanceLib APIs / DxePerformanceLib 
>> instance.
>> 
>> In fact, the relevant library INF files have good documentation, we 
>> just have to know what to look at.
>> 
>> Recording stats in the PEI phase, via HOBs:
>> - MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
>> 
>> Recording stats in the DXE phase (protocol provider and consumer):
>> - MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>> - MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>> 
>> Recording stats in SMM (protocol provider and consumer):
>> - MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.inf
>> - MdeModulePkg/Library/SmmPerformanceLib/SmmPerformanceLib.inf
>> 
>> Fetching the collected stats (for display or otherwise):
>> - MdeModulePkg/Library/DxeSmmPerformanceLib/DxeSmmPerformanceLib.inf
>> 
>> "Do nothing" library instance for all module types:
>> - MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
>> 
>> 
>> Now obviously this doesn't explain why it works for you on some 
>> platforms and why it doesn't on others. You haven't shared much 
>> information about the platforms in question. I can make one guess: if 
>> the performance protocol provided by the platform's DXE Core
>> (DxeCorePerformanceLib) is incompatible with the DxePerformanceLib 
>> instance that is linked into your DXE driver, then communication 
>> between them will likely fail.
>> 
>> To my understanding, the performance protocol is not standard (PI or 
>> UEFI), so it's likely best if you build your DXE driver together with 
>> the DXE Core, on all platforms that you want to check. It's probably 
>> unsafe to link a DXE driver against DxePerformanceLib (rather than
>> BasePerformanceLibNull) and run it on a random platform.
>> 
>> Hopefully this helps a little.
>> Laszlo
>> _______________________________________________
>> 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

Reply via email to