mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
VerifyMsrE2: Move from AppleSupportPkg
This commit is contained in:
parent
1f047740f9
commit
2d02778e56
101
Application/VerifyMsrE2/VerifyMsrE2.c
Normal file
101
Application/VerifyMsrE2/VerifyMsrE2.c
Normal file
@ -0,0 +1,101 @@
|
||||
/** @file
|
||||
Verify MSR 0xE2 status on all the processors.
|
||||
|
||||
Copyright (c) 2018, vit9696. All rights reserved.<BR>
|
||||
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
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#include <Uefi.h>
|
||||
#include <PiDxe.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/OcMiscLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
#include <Library/UefiApplicationEntryPoint.h>
|
||||
#include <Register/Msr.h>
|
||||
#include <Protocol/MpService.h>
|
||||
|
||||
STATIC EFI_MP_SERVICES_PROTOCOL *mMpServices;
|
||||
STATIC UINTN mHasLockedCores;
|
||||
STATIC UINTN mHasUnlockedCores;
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
ReadMsrE2 (
|
||||
IN VOID *Buffer
|
||||
)
|
||||
{
|
||||
UINTN ProcNum = 0;
|
||||
MSR_BROADWELL_PKG_CST_CONFIG_CONTROL_REGISTER Value;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = mMpServices->WhoAmI (mMpServices, &ProcNum);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
Print (L"Failed to detect CPU Number\n");
|
||||
}
|
||||
|
||||
Value.Uint64 = AsmReadMsr64 (MSR_BROADWELL_PKG_CST_CONFIG_CONTROL);
|
||||
|
||||
Print (L"CPU%02d has MSR 0xE2: 0x%016LX\n", ProcNum, Value.Uint64);
|
||||
|
||||
if (Value.Bits.CFGLock) {
|
||||
mHasLockedCores = 1;
|
||||
} else {
|
||||
mHasUnlockedCores = 1;
|
||||
}
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UefiMain (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Print (L"Looking up EFI_MP_SERVICES_PROTOCOL...\n");
|
||||
|
||||
Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&mMpServices);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Print (L"Failed to find EFI_MP_SERVICES_PROTOCOL - %r\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Print (L"Checking MSR 0xE2 on all CPUs. Values must be SAME!!!\n");
|
||||
|
||||
ReadMsrE2 (NULL);
|
||||
|
||||
Print (L"Starting All APs to verify 0xE2 register...\n", Status);
|
||||
|
||||
Status = mMpServices->StartupAllAPs (mMpServices, ReadMsrE2, TRUE, NULL, 5000000, NULL, NULL);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Print (L"Failed to StartupAllAPs - %r\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Print (L"Done checking MSR 0xE2 register, compare the values printed!\n");
|
||||
|
||||
if (mHasLockedCores && mHasUnlockedCores) {
|
||||
Print (L"This firmware has BORKED MSR 0xE2 register!\n");
|
||||
Print (L"Some cores are locked, some are not!!!\n");
|
||||
} else if (mHasUnlockedCores) {
|
||||
Print (L"This firmware has UNLOCKED MSR 0xE2 register!\n");
|
||||
} else {
|
||||
Print (L"This firmware has LOCKED MSR 0xE2 register!\n");
|
||||
}
|
||||
|
||||
gBS->Stall (SECONDS_TO_MICROSECONDS (3));
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
51
Application/VerifyMsrE2/VerifyMsrE2.inf
Normal file
51
Application/VerifyMsrE2/VerifyMsrE2.inf
Normal file
@ -0,0 +1,51 @@
|
||||
## @file
|
||||
# Viery MSR 0xE2 status on all the processors.
|
||||
#
|
||||
# Copyright (c) 2018, vit9696. All rights reserved.<BR>
|
||||
#
|
||||
# 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
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = VerifyMsrE2
|
||||
FILE_GUID = 9031CCA3-EF7A-4D36-ADCA-F75802085D32
|
||||
MODULE_TYPE = UEFI_APPLICATION
|
||||
VERSION_STRING = 1.0
|
||||
ENTRY_POINT = UefiMain
|
||||
|
||||
#
|
||||
# This flag specifies whether HII resource section is generated into PE image.
|
||||
#
|
||||
UEFI_HII_RESOURCE_SECTION = TRUE
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
|
||||
[Sources]
|
||||
VerifyMsrE2.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
OcSupportPkg/OcSupportPkg.dec
|
||||
UefiCpuPkg/UefiCpuPkg.dec
|
||||
|
||||
[Protocols]
|
||||
gEfiMpServiceProtocolGuid ## CONSUMES
|
||||
|
||||
[LibraryClasses]
|
||||
OcConsoleControlEntryModeLib
|
||||
UefiApplicationEntryPoint
|
||||
UefiLib
|
||||
PcdLib
|
||||
IoLib
|
||||
@ -99,6 +99,7 @@
|
||||
OcXmlLib|OcSupportPkg/Library/OcXmlLib/OcXmlLib.inf
|
||||
|
||||
[Components]
|
||||
OcSupportPkg/Application/VerifyMsrE2/VerifyMsrE2.inf
|
||||
OcSupportPkg/Library/OcAcpiLib/OcAcpiLib.inf
|
||||
OcSupportPkg/Library/OcAppleBootCompatLib/OcAppleBootCompatLib.inf
|
||||
OcSupportPkg/Library/OcAppleBootPolicyLib/OcAppleBootPolicyLib.inf
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user