From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E7CD1803EF for ; Tue, 14 Mar 2017 19:45:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1489545924; x=1521081924; h=from:to:cc:subject:date:message-id; bh=PAKPSDELv09DhEQ62EZawHQ93vH6uFJvSoEqBEtN508=; b=lMVbYuYlMiUNtizsNuJ0I2u9lnxmX6Fo9gmMl2PcvzmixQoN/sL0UgtH 1Fc8PMiCzD5ZMcZbYUtRgwPp/Td8bA==; Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Mar 2017 19:45:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,167,1486454400"; d="scan'208";a="60473955" Received: from jfan12-desk.ccr.corp.intel.com ([10.239.158.57]) by orsmga002.jf.intel.com with ESMTP; 14 Mar 2017 19:45:23 -0700 From: Jeff Fan To: edk2-devel@lists.01.org Cc: Feng Tian , Michael Kinney Date: Wed, 15 Mar 2017 10:45:15 +0800 Message-Id: <20170315024517.9776-1-jeff.fan@intel.com> X-Mailer: git-send-email 2.9.3.windows.2 Subject: [PATCH v2 00/11] Add CPU features driver 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: Wed, 15 Mar 2017 02:45:25 -0000 This serial of patches will add CPU featuers initialization on boot time. 1) One new Register CPU Features Library and instances are added to provide the capability to register CPU feature's detect/initialize services. 2) One new NULL class CPU Commong Features Library instance is added to provide detect/initialize servcies of CPU features defined in SDM. 3) New CPU features PEI/DXE drivers are added to initialize CPU features in PEI phase or DXE phase, by consuming Register CPU Features Library. https://bugzilla.tianocore.org/show_bug.cgi?id=421 The whole updated UefiCpuPkg v2 could be accessed at https://github.com/JeffFan/edk2/tree/CpuFeaturesV2/UefiCpuPkg for review. v2: #9: Format debug messages. #10: 1. Using MSR_IA32_EFER to enable/disable NX feature instead of using MSR_IA32_MISC_ENABLE. 2. Fix bug that SMX and VMX feature is swapped. Cc: Feng Tian Cc: Michael Kinney Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan Jeff Fan (11): UefiCpuPkg/AcpiCpuData: Update RegisterTableEntry type UefiCpuPkg/CpuS3DataDxe: Consume the existing PcdCpuS3DataAddress UefiCpuPkg/PiSmmCpuDxeSmm: Skip if AllocatedSize is 0 UefiCpuPkg/Msr: Add CPUID signature check MACROs UefiCpuPkg/UefiCpuPkg.dec: Add a set of CPU features PCDs UefiCpuPkg: Add GUID gEdkiiCpuFeaturesSetDoneGuid UefiCpuPkg: Add GUID gEdkiiCpuFeaturesInitDoneGuid UefiCpuPkg/Include/Library: Add Register CPU Features Library UefiCpuPkg: Add PEI/DXE Register CPU Features Library instances UefiCpuPkg: Add NULL CPU Common Features Library instance UefiCpuPkg: Add CPU Features PEI/DXE drivers UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c | 122 +++ UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.inf | 53 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.uni | 22 + UefiCpuPkg/CpuFeatures/CpuFeaturesDxeExtra.uni | 20 + UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c | 75 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf | 49 ++ UefiCpuPkg/CpuFeatures/CpuFeaturesPei.uni | 22 + UefiCpuPkg/CpuFeatures/CpuFeaturesPeiExtra.uni | 20 + UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c | 56 +- UefiCpuPkg/Include/AcpiCpuData.h | 6 +- UefiCpuPkg/Include/Guid/CpuFeaturesInitDone.h | 26 + UefiCpuPkg/Include/Guid/CpuFeaturesSetDone.h | 26 + .../Include/Library/RegisterCpuFeaturesLib.h | 516 +++++++++++++ UefiCpuPkg/Include/Register/Msr/AtomMsr.h | 22 +- UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h | 21 +- UefiCpuPkg/Include/Register/Msr/Core2Msr.h | 19 +- UefiCpuPkg/Include/Register/Msr/CoreMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/HaswellMsr.h | 20 +- UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/NehalemMsr.h | 21 +- UefiCpuPkg/Include/Register/Msr/P6Msr.h | 23 +- UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h | 15 +- UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h | 18 +- UefiCpuPkg/Include/Register/Msr/PentiumMsr.h | 20 +- UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h | 22 +- UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h | 19 +- UefiCpuPkg/Include/Register/Msr/XeonDMsr.h | 19 +- UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h | 18 +- UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h | 18 +- UefiCpuPkg/Library/CpuCommonFeaturesLib/Aesni.c | 94 +++ UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c | 79 ++ .../Library/CpuCommonFeaturesLib/ClockModulation.c | 106 +++ .../CpuCommonFeaturesLib/CpuCommonFeatures.h | 852 +++++++++++++++++++++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.c | 227 ++++++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | 68 ++ .../CpuCommonFeaturesLib/CpuCommonFeaturesLib.uni | 25 + UefiCpuPkg/Library/CpuCommonFeaturesLib/Eist.c | 81 ++ .../Library/CpuCommonFeaturesLib/ExecuteDisable.c | 91 +++ .../Library/CpuCommonFeaturesLib/FastStrings.c | 52 ++ .../Library/CpuCommonFeaturesLib/FeatureControl.c | 314 ++++++++ .../CpuCommonFeaturesLib/LimitCpuIdMaxval.c | 82 ++ .../Library/CpuCommonFeaturesLib/MachineCheck.c | 231 ++++++ .../Library/CpuCommonFeaturesLib/MonitorMwait.c | 79 ++ .../Library/CpuCommonFeaturesLib/PendingBreak.c | 90 +++ UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c | 81 ++ .../RegisterCpuFeaturesLib/CpuFeaturesInitialize.c | 747 ++++++++++++++++++ .../DxeRegisterCpuFeaturesLib.c | 266 +++++++ .../DxeRegisterCpuFeaturesLib.inf | 62 ++ .../PeiRegisterCpuFeaturesLib.c | 390 ++++++++++ .../PeiRegisterCpuFeaturesLib.inf | 64 ++ .../RegisterCpuFeaturesLib/RegisterCpuFeatures.h | 193 +++++ .../RegisterCpuFeaturesDxe.uni | 22 + .../RegisterCpuFeaturesLib.c | 770 +++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 30 +- UefiCpuPkg/UefiCpuPkg.dec | 50 +- UefiCpuPkg/UefiCpuPkg.dsc | 14 +- 60 files changed, 6497 insertions(+), 61 deletions(-) create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.inf create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesDxeExtra.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPei.uni create mode 100644 UefiCpuPkg/CpuFeatures/CpuFeaturesPeiExtra.uni create mode 100644 UefiCpuPkg/Include/Guid/CpuFeaturesInitDone.h create mode 100644 UefiCpuPkg/Include/Guid/CpuFeaturesSetDone.h create mode 100644 UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/Aesni.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/ClockModulation.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.uni create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/Eist.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/ExecuteDisable.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/FastStrings.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/FeatureControl.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/LimitCpuIdMaxval.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/MonitorMwait.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/PendingBreak.c create mode 100644 UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesDxe.uni create mode 100644 UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c -- 2.9.3.windows.2