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