summaryrefslogtreecommitdiff
path: root/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyInitLib/PeiCpuPolicyInit.c
blob: 4d8336b7f3504e5f85b5752f168cabf28e6c68c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/** @file
  This file is SampleCode for Intel CPU PEI Policy initialzation.

  Copyright (c) 2010 - 2016, Intel Corporation. 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 "PeiCpuPolicyInit.h"

/**
  This function performs CPU PEI Policy initialization in Pre-Memory.

  @retval     EFI_SUCCESS           The PPI is installed and initialized.
  @retval     EFI ERRORS            The PPI is not successfully installed.
  @retval     EFI_OUT_OF_RESOURCES  No enough resoruces (such as out of memory).

**/
EFI_STATUS
EFIAPI
PeiCpuPolicyInitPreMem (
  )
{
  EFI_STATUS                        Status;
  SI_CPU_POLICY_PPI                 *SiCpuPolicyPpi;

  //
  // Call CpuCreatePolicyDefaults to initialize platform policy structure
  // and get all Intel default policy settings.
  //
  Status = CreateCpuConfigBlocks (&SiCpuPolicyPpi);
  ASSERT_EFI_ERROR (Status);

  //
  // Update Pre-Mem Policy related policies.
  //
  UpdatePeiCpuPolicyPreMem (SiCpuPolicyPpi);

  //
  // Install SiCpuPolicyPpi.
  // While installed, RC assumes the Policy is ready and finalized. So please
  // update and override any setting before calling this function.
  //
  Status = CpuInstallPolicyPpi (SiCpuPolicyPpi);
  ASSERT_EFI_ERROR (Status);

  return Status;
}


/**
  This function performs CPU PEI Policy initialization in Post-Memory.

  @param[in]  SystemConfiguration   The pointer to get System Setup

  @retval     EFI_SUCCESS           The PPI is installed and initialized.
  @retval     EFI ERRORS            The PPI is not successfully installed.
  @retval     EFI_OUT_OF_RESOURCES  No enough resoruces (such as out of memory).

**/
EFI_STATUS
EFIAPI
PeiCpuPolicyInit (
  IN SYSTEM_CONFIGURATION        *SystemConfiguration
  )
{
  EFI_STATUS                        Status;
  SI_CPU_POLICY_PPI                 *SiCpuPolicyPpi;

  //
  // Call CreateCpuConfigBlocks to initialize platform policy structure
  // and get all Intel default policy settings.
  //
  Status = CreateCpuConfigBlocks (&SiCpuPolicyPpi);
  ASSERT_EFI_ERROR (Status);

  UpdatePeiCpuPolicy (SiCpuPolicyPpi, SystemConfiguration);

  //
  // Install SiCpuPolicyPpi.
  // While installed, RC assumes the Policy is ready and finalized. So please
  // update and override any setting before calling this function.
  //
  Status = CpuInstallPolicyPpi (SiCpuPolicyPpi);
  ASSERT_EFI_ERROR (Status);

  return Status;
}