DxeTbtPolicyLib.c 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /** @file
  2. This file is DxeTbtPolicyLib library.
  3. Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <DxeTbtPolicyLibrary.h>
  7. #include <TbtBoardInfo.h>
  8. #include <Protocol/DxeTbtPolicy.h>
  9. #include <Guid/HobList.h>
  10. #include <Library/HobLib.h>
  11. /**
  12. Update Tbt Policy Callback
  13. **/
  14. VOID
  15. EFIAPI
  16. UpdateTbtPolicyCallback (
  17. VOID
  18. )
  19. {
  20. EFI_STATUS Status;
  21. DXE_TBT_POLICY_PROTOCOL *DxeTbtConfig;
  22. DxeTbtConfig = NULL;
  23. Status = EFI_NOT_FOUND;
  24. DEBUG ((DEBUG_INFO, "UpdateTbtPolicyCallback\n"));
  25. Status = gBS->LocateProtocol (
  26. &gDxeTbtPolicyProtocolGuid,
  27. NULL,
  28. (VOID **) &DxeTbtConfig
  29. );
  30. if (EFI_ERROR (Status)) {
  31. DEBUG ((DEBUG_ERROR, " gDxeTbtPolicyProtocolGuid Not installed!!!\n"));
  32. } else {
  33. }
  34. return;
  35. }
  36. /**
  37. Print DXE TBT Policy
  38. **/
  39. VOID
  40. TbtPrintDxePolicyConfig (
  41. VOID
  42. )
  43. {
  44. EFI_STATUS Status;
  45. UINT8 Index;
  46. DXE_TBT_POLICY_PROTOCOL *DxeTbtConfig;
  47. DEBUG ((DEBUG_INFO, "TbtPrintDxePolicyConfig Start\n"));
  48. DxeTbtConfig = NULL;
  49. Status = EFI_NOT_FOUND;
  50. Status = gBS->LocateProtocol (
  51. &gDxeTbtPolicyProtocolGuid,
  52. NULL,
  53. (VOID **) &DxeTbtConfig
  54. );
  55. if (EFI_ERROR (Status)) {
  56. DEBUG ((DEBUG_ERROR, " gDxeTbtPolicyProtocolGuid Not installed!!!\n"));
  57. }
  58. ASSERT_EFI_ERROR (Status);
  59. //
  60. // Print DTBT Policy
  61. //
  62. DEBUG ((DEBUG_ERROR, " ========================= DXE TBT POLICY ========================= \n"));
  63. for (Index = 0; Index < MAX_DTBT_CONTROLLER_NUMBER; Index++) {
  64. DEBUG ((DEBUG_INFO, "DxeTbtConfig->DTbtResourceConfig[%x].DTbtPcieExtraBusRsvd = %x\n", Index, DxeTbtConfig->DTbtResourceConfig[Index].DTbtPcieExtraBusRsvd));
  65. DEBUG ((DEBUG_INFO, "DxeTbtConfig->DTbtResourceConfig[%x].DTbtPcieMemRsvd = %x\n", Index, DxeTbtConfig->DTbtResourceConfig[Index].DTbtPcieMemRsvd));
  66. DEBUG ((DEBUG_INFO, "DxeTbtConfig->DTbtResourceConfig[%x].DTbtPcieMemAddrRngMax = %x\n", Index, DxeTbtConfig->DTbtResourceConfig[Index].DTbtPcieMemAddrRngMax));
  67. DEBUG ((DEBUG_INFO, "DxeTbtConfig->DTbtResourceConfig[%x].DTbtPciePMemRsvd = %x\n", Index, DxeTbtConfig->DTbtResourceConfig[Index].DTbtPciePMemRsvd));
  68. DEBUG ((DEBUG_INFO, "DxeTbtConfig->DTbtResourceConfig[%x].DTbtPciePMemAddrRngMax = %x\n", Index, DxeTbtConfig->DTbtResourceConfig[Index].DTbtPciePMemAddrRngMax));
  69. }
  70. //
  71. // Print TBT Common Policy
  72. //
  73. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtAspm = %x\n", DxeTbtConfig->TbtCommonConfig.TbtAspm));
  74. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtL1SubStates = %x\n", DxeTbtConfig->TbtCommonConfig.TbtL1SubStates));
  75. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtHotNotify = %x\n", DxeTbtConfig->TbtCommonConfig.TbtHotNotify));
  76. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtHotSMI = %x\n", DxeTbtConfig->TbtCommonConfig.TbtHotSMI));
  77. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtLtr = %x\n", DxeTbtConfig->TbtCommonConfig.TbtLtr));
  78. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtPtm = %x\n", DxeTbtConfig->TbtCommonConfig.TbtPtm));
  79. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtSetClkReq = %x\n", DxeTbtConfig->TbtCommonConfig.TbtSetClkReq));
  80. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtWakeupSupport = %x\n", DxeTbtConfig->TbtCommonConfig.TbtWakeupSupport));
  81. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.SecurityMode = %x\n", DxeTbtConfig->TbtCommonConfig.SecurityMode));
  82. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Gpio5Filter = %x\n", DxeTbtConfig->TbtCommonConfig.Gpio5Filter));
  83. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TrA0OsupWa = %x\n", DxeTbtConfig->TbtCommonConfig.TrA0OsupWa));
  84. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtAcDcSwitch = %x\n", DxeTbtConfig->TbtCommonConfig.TbtAcDcSwitch));
  85. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Rtd3Tbt = %x\n", DxeTbtConfig->TbtCommonConfig.Rtd3Tbt));
  86. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Rtd3TbtOffDelay = %x\n", DxeTbtConfig->TbtCommonConfig.Rtd3TbtOffDelay));
  87. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Rtd3TbtClkReq = %x\n", DxeTbtConfig->TbtCommonConfig.Rtd3TbtClkReq));
  88. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Rtd3TbtClkReqDelay = %x\n", DxeTbtConfig->TbtCommonConfig.Rtd3TbtClkReqDelay));
  89. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.Win10Support = %x\n", DxeTbtConfig->TbtCommonConfig.Win10Support));
  90. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.TbtVtdBaseSecurity = %x\n", DxeTbtConfig->TbtCommonConfig.TbtVtdBaseSecurity));
  91. DEBUG ((DEBUG_INFO, "DxeTbtConfig->TbtCommonConfig.ControlIommu = %x\n", DxeTbtConfig->TbtCommonConfig.ControlIommu));
  92. return;
  93. }
  94. /**
  95. Install Tbt Policy
  96. @param[in] ImageHandle Image handle of this driver.
  97. @retval EFI_SUCCESS The policy is installed.
  98. @retval EFI_OUT_OF_RESOURCES Insufficient resources to create buffer
  99. **/
  100. EFI_STATUS
  101. EFIAPI
  102. InstallTbtPolicy (
  103. IN EFI_HANDLE ImageHandle
  104. )
  105. {
  106. EFI_STATUS Status;
  107. DXE_TBT_POLICY_PROTOCOL *DxeTbtPolicy;
  108. DEBUG ((DEBUG_INFO, "Install DXE TBT Policy\n"));
  109. DxeTbtPolicy = NULL;
  110. //Alloc memory for DxeTbtPolicy
  111. DxeTbtPolicy = (DXE_TBT_POLICY_PROTOCOL *) AllocateZeroPool (sizeof (DXE_TBT_POLICY_PROTOCOL));
  112. if (DxeTbtPolicy == NULL) {
  113. return EFI_OUT_OF_RESOURCES;
  114. }
  115. Status = gBS->InstallProtocolInterface (
  116. &ImageHandle,
  117. &gDxeTbtPolicyProtocolGuid,
  118. EFI_NATIVE_INTERFACE,
  119. DxeTbtPolicy
  120. );
  121. if (EFI_ERROR (Status)) {
  122. DEBUG ((DEBUG_ERROR, "Install Tbt Secure Boot List protocol failed\n"));
  123. }
  124. return Status;
  125. }