From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x233.google.com (mail-it0-x233.google.com [IPv6:2607:f8b0:4001:c0b::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E2FD882170 for ; Thu, 23 Feb 2017 09:30:06 -0800 (PST) Received: by mail-it0-x233.google.com with SMTP id d9so5412406itc.0 for ; Thu, 23 Feb 2017 09:30:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+jXaAL7IjIVV71iYhDw3Y3xCwpXhemvnRDDjlpVHnOc=; b=AVwCf1KTyMwS6sFEWu5ytm0m7jK7dTaiDA5PtxDfpvJIx2dBxIyoFAgh+5K/FTeRq9 B2DIKHI4vP/kZckQiZERM0WOO4SUmdmGlALK90PtoCQrpW8F4UZbnb7U6vjk4nw7Y3mn JefAtGP4feuLoV2L4o2zGFkM/ixsBz0zxDRl0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+jXaAL7IjIVV71iYhDw3Y3xCwpXhemvnRDDjlpVHnOc=; b=dQ83D+uG4rkikGrwlHmThOrswFy5mJFQ+IKi6zR51ic7MgZf/x1sd+rohABwyn8Ld0 /U7bFI+fbpf1pZkMIXHSzf9HyN0sh/mKKRcJxY1NzaHAIuPb/T/tJ4B4mPtKOaISyrSh /JN6wb/mZcgpNw06wBe8eg2IdRJYgAamG4YszI7oQhnYnuP82xY84bEfWdwcPVRD1gkS soH6STrIP9ICZghIC/mpyjrcbnZLCzc0+aJW+ehx2qrXDcQeMoKKUj+zqV1WHi/RgoI/ Q6ggvsakHCTiC1x3G0dydG/A/UA2O5eXCySeVtQwc9z/mjPJWhNsldvDzNyI2q89mxcb DhdA== X-Gm-Message-State: AMke39n700JHwesVNnFj0Ts3hHUq/TJf0ScE7Q4fBIPEvbbP3qOL9YpEejXMgJbudL4isF6cyHWtbvjStUhc3grI X-Received: by 10.107.11.92 with SMTP id v89mr28555191ioi.138.1487871006107; Thu, 23 Feb 2017 09:30:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.198.134 with HTTP; Thu, 23 Feb 2017 09:30:05 -0800 (PST) In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503A8E8BED@shsmsx102.ccr.corp.intel.com> References: <1486097737-12816-1-git-send-email-michael.d.kinney@intel.com> <1486097737-12816-2-git-send-email-michael.d.kinney@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503A8E8BED@shsmsx102.ccr.corp.intel.com> From: Ard Biesheuvel Date: Thu, 23 Feb 2017 17:30:05 +0000 Message-ID: To: "Yao, Jiewen" Cc: "Kinney, Michael D" , "edk2-devel@lists.01.org" , "Carsey, Jaben" , "Zeng, Star" , Andrew Fish , "Gao, Liming" Subject: Re: [PATCH v4 1/3] MdeModulePkg: Add performance property configuration table X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Feb 2017 17:30:07 -0000 Content-Type: text/plain; charset=UTF-8 On 3 February 2017 at 05:32, Yao, Jiewen wrote: > Thank you Mike and Star. > > It is good idea to remove TimerLib dependency. > Series Reviewed-by: Jiewen.yao@intel.com > This patch breaks the GCC build: : In function 'DxeCorePerformanceLibConstructor': :538:3: error: passing argument 2 of 'EfiGetSystemConfigurationTable' from incompatible pointer type [-Werror] Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, &PerformanceProperty); ^ In file included from :35:0, from :26: :135:1: note: expected 'void **' but argument is of type 'struct PERFORMANCE_PROPERTY **' EfiGetSystemConfigurationTable ( ^ This fixes it for me: diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c index 1564514518d3..5438bd086144 100644 --- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c +++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c @@ -535,7 +535,7 @@ DxeCorePerformanceLibConstructor ( InternalGetPeiPerformance (); - Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, &PerformanceProperty); + Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, (VOID **)&PerformanceProperty); if (EFI_ERROR (Status)) { // // Install configuration table for performance property. Thanks, Ard, > >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of >> Michael Kinney >> Sent: Friday, February 3, 2017 12:56 PM >> To: edk2-devel@lists.01.org >> Cc: Andrew Fish ; Gao, Liming ; Yao, >> Jiewen ; Carsey, Jaben ; Zeng, >> Star >> Subject: [edk2] [PATCH v4 1/3] MdeModulePkg: Add performance property >> configuration table >> >> From: Star Zeng >> >> Define PERFORMANCE_PROPERTY, and install performance property >> configuration >> table in DxeCorePerformanceLib and SmmCorePerformanceLib. >> >> Cc: Andrew Fish >> Cc: Michael Kinney >> Cc: Liming Gao >> Cc: Jiewen Yao >> Cc: Cinnamon Shia >> Cc: Jaben Carsey >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Star Zeng >> --- >> MdeModulePkg/Include/Guid/Performance.h | 12 ++++++++++- >> .../DxeCorePerformanceLib/DxeCorePerformanceLib.c | 23 >> ++++++++++++++++++++-- >> .../DxeCorePerformanceLib.inf | 2 ++ >> .../DxeCorePerformanceLibInternal.h | 3 ++- >> .../SmmCorePerformanceLib/SmmCorePerformanceLib.c | 18 >> +++++++++++++++++ >> .../SmmCorePerformanceLib.inf | 5 ++++- >> 6 files changed, 58 insertions(+), 5 deletions(-) >> >> diff --git a/MdeModulePkg/Include/Guid/Performance.h >> b/MdeModulePkg/Include/Guid/Performance.h >> index c40046c..df40c6c 100644 >> --- a/MdeModulePkg/Include/Guid/Performance.h >> +++ b/MdeModulePkg/Include/Guid/Performance.h >> @@ -4,7 +4,7 @@ >> * performance protocol interfaces. >> * performance variables. >> >> -Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
>> +Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
>> This program and the accompanying materials are licensed and made available >> under >> the terms and conditions of the BSD License that accompanies this distribution. >> The full text of the license may be found at >> @@ -18,6 +18,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY >> KIND, EITHER EXPRESS OR IMPLIED. >> #ifndef __PERFORMANCE_DATA_H__ >> #define __PERFORMANCE_DATA_H__ >> >> +#define PERFORMANCE_PROPERTY_REVISION 0x1 >> + >> +typedef struct { >> + UINT32 Revision; >> + UINT32 Reserved; >> + UINT64 Frequency; >> + UINT64 TimerStartValue; >> + UINT64 TimerEndValue; >> +} PERFORMANCE_PROPERTY; >> + >> // >> // PEI_PERFORMANCE_STRING_SIZE must be a multiple of 8. >> // >> diff --git >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c >> index 4739bb8..1564514 100644 >> --- >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c >> +++ >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c >> @@ -10,7 +10,7 @@ >> This library is mainly used by DxeCore to start performance logging to ensure >> that >> Performance Protocol is installed at the very beginning of DXE phase. >> >> -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>> +Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
>> (C) Copyright 2016 Hewlett Packard Enterprise Development LP
>> This program and the accompanying materials >> are licensed and made available under the terms and conditions of the BSD >> License >> @@ -61,6 +61,8 @@ PERFORMANCE_EX_PROTOCOL mPerformanceExInterface >> = { >> GetGaugeEx >> }; >> >> +PERFORMANCE_PROPERTY mPerformanceProperty; >> + >> /** >> Searches in the gauge array with keyword Handle, Token, Module and >> Identifier. >> >> @@ -502,6 +504,8 @@ DxeCorePerformanceLibConstructor ( >> ) >> { >> EFI_STATUS Status; >> + PERFORMANCE_PROPERTY *PerformanceProperty; >> + >> >> if (!PerformanceMeasurementEnabled ()) { >> // >> @@ -531,7 +535,22 @@ DxeCorePerformanceLibConstructor ( >> >> InternalGetPeiPerformance (); >> >> - return Status; >> + Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, >> &PerformanceProperty); >> + if (EFI_ERROR (Status)) { >> + // >> + // Install configuration table for performance property. >> + // >> + mPerformanceProperty.Revision = >> PERFORMANCE_PROPERTY_REVISION; >> + mPerformanceProperty.Reserved = 0; >> + mPerformanceProperty.Frequency = GetPerformanceCounterProperties ( >> + >> &mPerformanceProperty.TimerStartValue, >> + >> &mPerformanceProperty.TimerEndValue >> + ); >> + Status = gBS->InstallConfigurationTable (&gPerformanceProtocolGuid, >> &mPerformanceProperty); >> + ASSERT_EFI_ERROR (Status); >> + } >> + >> + return EFI_SUCCESS; >> } >> >> /** >> diff --git >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf >> index e091c62..5b89ce2 100644 >> --- >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf >> +++ >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf >> @@ -56,11 +56,13 @@ >> BaseLib >> HobLib >> DebugLib >> + UefiLib >> >> >> [Guids] >> ## SOMETIMES_CONSUMES ## HOB >> ## PRODUCES ## UNDEFINED # Install protocol >> + ## PRODUCES ## SystemTable >> gPerformanceProtocolGuid >> ## SOMETIMES_CONSUMES ## HOB >> ## PRODUCES ## UNDEFINED # Install protocol >> diff --git >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInt >> ernal.h >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInt >> ernal.h >> index 2b9ccd2..f1540d8 100644 >> --- >> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInt >> ernal.h >> +++ >> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInt >> ernal.h >> @@ -4,7 +4,7 @@ >> This header file holds the prototypes of the Performance and PerformanceEx >> Protocol published by this >> library instance at its constructor. >> >> -Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
>> +Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
>> This program and the accompanying materials >> are licensed and made available under the terms and conditions of the BSD >> License >> which accompanies this distribution. The full text of the license may be found >> at >> @@ -32,6 +32,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, >> EITHER EXPRESS OR IMPLIED. >> #include >> #include >> #include >> +#include >> >> // >> // Interface declarations for PerformanceEx Protocol. >> diff --git >> a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib. >> c >> b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib. >> c >> index 6f8d2dd..a03a8c8 100644 >> --- >> a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib. >> c >> +++ >> b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib. >> c >> @@ -69,6 +69,8 @@ PERFORMANCE_EX_PROTOCOL mPerformanceExInterface >> = { >> GetGaugeEx >> }; >> >> +PERFORMANCE_PROPERTY mPerformanceProperty; >> + >> /** >> Searches in the gauge array with keyword Handle, Token, Module and >> Identfier. >> >> @@ -687,6 +689,7 @@ InitializeSmmCorePerformanceLib ( >> { >> EFI_STATUS Status; >> EFI_HANDLE Handle; >> + PERFORMANCE_PROPERTY *PerformanceProperty; >> >> // >> // Initialize spin lock >> @@ -725,6 +728,21 @@ InitializeSmmCorePerformanceLib ( >> ASSERT_EFI_ERROR (Status); >> Status = gSmst->SmiHandlerRegister (SmmPerformanceHandlerEx, >> &gSmmPerformanceExProtocolGuid, &Handle); >> ASSERT_EFI_ERROR (Status); >> + >> + Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, >> &PerformanceProperty); >> + if (EFI_ERROR (Status)) { >> + // >> + // Install configuration table for performance property. >> + // >> + mPerformanceProperty.Revision = >> PERFORMANCE_PROPERTY_REVISION; >> + mPerformanceProperty.Reserved = 0; >> + mPerformanceProperty.Frequency = GetPerformanceCounterProperties ( >> + >> &mPerformanceProperty.TimerStartValue, >> + >> &mPerformanceProperty.TimerEndValue >> + ); >> + Status = gBS->InstallConfigurationTable (&gPerformanceProtocolGuid, >> &mPerformanceProperty); >> + ASSERT_EFI_ERROR (Status); >> + } >> } >> >> /** >> diff --git >> a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.i >> nf >> b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.i >> nf >> index 160a749..1b2fbd3 100644 >> --- >> a/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.i >> nf >> +++ >> b/MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.i >> nf >> @@ -8,7 +8,7 @@ >> # This library is mainly used by SMM Core to start performance logging to >> ensure that >> # SMM Performance and PerformanceEx Protocol are installed at the very >> beginning of SMM phase. >> # >> -# Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.
>> +# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
>> # This program and the accompanying materials >> # are licensed and made available under the terms and conditions of the BSD >> License >> # which accompanies this distribution. The full text of the license may be >> found at >> @@ -57,6 +57,7 @@ >> SynchronizationLib >> SmmServicesTableLib >> SmmMemLib >> + UefiLib >> >> [Protocols] >> gEfiSmmBase2ProtocolGuid ## CONSUMES >> @@ -68,6 +69,8 @@ >> ## PRODUCES ## UNDEFINED # Install protocol >> ## CONSUMES ## UNDEFINED # SmiHandlerRegister >> gSmmPerformanceExProtocolGuid >> + ## PRODUCES ## SystemTable >> + gPerformanceProtocolGuid >> >> [Pcd] >> gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask ## >> CONSUMES >> -- >> 2.6.3.windows.1 >> >> _______________________________________________ >> 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