Add PCDs to control quiet and fast boot in the project

Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
This commit is contained in:
Michał Żygowski
2025-03-10 20:16:34 +02:00
committed by Sergii Dmytruk
parent c0f327fac9
commit 0961f9f31f
15 changed files with 174 additions and 126 deletions
@@ -897,36 +897,40 @@ BootMaintRouteConfig (
Private->BmmOldFakeNVData.BootTimeOut = NewBmmData->BootTimeOut;
}
if (NewBmmData->QuietBoot != OldBmmData->QuietBoot) {
Status = gRT->SetVariable(
DASHARO_VAR_QUIET_BOOT,
&gDasharoSystemFeaturesGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
sizeof (NewBmmData->QuietBoot),
&(NewBmmData->QuietBoot)
);
if (EFI_ERROR (Status)) {
Offset = OFFSET_OF (BMM_FAKE_NV_DATA, QuietBoot);
goto Exit;
}
if (FixedPcdGetBool (PcdQuietBootFeatureEnabled)) {
if (NewBmmData->QuietBoot != OldBmmData->QuietBoot) {
Status = gRT->SetVariable(
DASHARO_VAR_QUIET_BOOT,
&gDasharoSystemFeaturesGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
sizeof (NewBmmData->QuietBoot),
&(NewBmmData->QuietBoot)
);
if (EFI_ERROR (Status)) {
Offset = OFFSET_OF (BMM_FAKE_NV_DATA, QuietBoot);
goto Exit;
}
Private->BmmOldFakeNVData.QuietBoot = NewBmmData->QuietBoot;
Private->BmmOldFakeNVData.QuietBoot = NewBmmData->QuietBoot;
}
}
if (NewBmmData->FastBoot != OldBmmData->FastBoot) {
Status = gRT->SetVariable(
DASHARO_VAR_FAST_BOOT,
&gDasharoSystemFeaturesGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
sizeof (NewBmmData->FastBoot),
&(NewBmmData->FastBoot)
);
if (EFI_ERROR (Status)) {
Offset = OFFSET_OF (BMM_FAKE_NV_DATA, FastBoot);
goto Exit;
}
if (FixedPcdGetBool (PcdFastBootFeatureEnabled)) {
if (NewBmmData->FastBoot != OldBmmData->FastBoot) {
Status = gRT->SetVariable(
DASHARO_VAR_FAST_BOOT,
&gDasharoSystemFeaturesGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
sizeof (NewBmmData->FastBoot),
&(NewBmmData->FastBoot)
);
if (EFI_ERROR (Status)) {
Offset = OFFSET_OF (BMM_FAKE_NV_DATA, FastBoot);
goto Exit;
}
Private->BmmOldFakeNVData.FastBoot = NewBmmData->FastBoot;
Private->BmmOldFakeNVData.FastBoot = NewBmmData->FastBoot;
}
}
//
@@ -1586,30 +1590,38 @@ InitializeBmmConfig (
CallbackData->BmmFakeNvData.BootTimeOut = PcdGet16 (PcdPlatformBootTimeOut);
}
DataSize = sizeof(QuietBoot);
CallbackData->BmmFakeNvData.HideQuietBoot = !FixedPcdGetBool (PcdQuietBootFeatureEnabled);
CallbackData->BmmFakeNvData.QuietBoot = FALSE;
Status = gRT->GetVariable(
DASHARO_VAR_QUIET_BOOT,
&gDasharoSystemFeaturesGuid,
NULL,
&DataSize,
&QuietBoot
);
if (!EFI_ERROR (Status)) {
CallbackData->BmmFakeNvData.QuietBoot = QuietBoot;
if (FixedPcdGetBool (PcdQuietBootFeatureEnabled)) {
DataSize = sizeof(QuietBoot);
Status = gRT->GetVariable(
DASHARO_VAR_QUIET_BOOT,
&gDasharoSystemFeaturesGuid,
NULL,
&DataSize,
&QuietBoot
);
if (!EFI_ERROR (Status)) {
CallbackData->BmmFakeNvData.QuietBoot = QuietBoot;
}
}
DataSize = sizeof(FastBoot);
CallbackData->BmmFakeNvData.HideFastBoot = !FixedPcdGetBool (PcdFastBootFeatureEnabled);
CallbackData->BmmFakeNvData.FastBoot = FALSE;
Status = gRT->GetVariable(
DASHARO_VAR_FAST_BOOT,
&gDasharoSystemFeaturesGuid,
NULL,
&DataSize,
&FastBoot
);
if (!EFI_ERROR (Status)) {
CallbackData->BmmFakeNvData.FastBoot = FastBoot;
if (FixedPcdGetBool (PcdFastBootFeatureEnabled)) {
DataSize = sizeof(FastBoot);
Status = gRT->GetVariable(
DASHARO_VAR_FAST_BOOT,
&gDasharoSystemFeaturesGuid,
NULL,
&DataSize,
&FastBoot
);
if (!EFI_ERROR (Status)) {
CallbackData->BmmFakeNvData.FastBoot = FastBoot;
}
}
//
@@ -51,19 +51,23 @@ formset
step = 0,
endnumeric;
checkbox varid = BmmData.QuietBoot,
questionid = FORM_QUIET_BOOT_ID,
prompt = STRING_TOKEN(STR_QUIET_BOOT_PROMPT),
help = STRING_TOKEN(STR_QUIET_BOOT_HELP),
flags = RESET_REQUIRED,
endcheckbox;
disableif ideqval BmmData.HideQuietBoot == 1;
checkbox varid = BmmData.QuietBoot,
questionid = FORM_QUIET_BOOT_ID,
prompt = STRING_TOKEN(STR_QUIET_BOOT_PROMPT),
help = STRING_TOKEN(STR_QUIET_BOOT_HELP),
flags = RESET_REQUIRED,
endcheckbox;
endif;
checkbox varid = BmmData.FastBoot,
questionid = FORM_FAST_BOOT_ID,
prompt = STRING_TOKEN(STR_FAST_BOOT_PROMPT),
help = STRING_TOKEN(STR_FAST_BOOT_HELP),
flags = RESET_REQUIRED,
endcheckbox;
disableif ideqval BmmData.HideFastBoot == 1;
checkbox varid = BmmData.FastBoot,
questionid = FORM_FAST_BOOT_ID,
prompt = STRING_TOKEN(STR_FAST_BOOT_PROMPT),
help = STRING_TOKEN(STR_FAST_BOOT_HELP),
flags = RESET_REQUIRED,
endcheckbox;
endif;
endform;
@@ -94,6 +94,8 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn ## CONSUMES
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut ## CONSUMES
gEfiMdePkgTokenSpaceGuid.PcdFastBootFeatureEnabled ## CONSUMES
gEfiMdePkgTokenSpaceGuid.PcdQuietBootFeatureEnabled ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutColumn ## CONSUMES
@@ -104,6 +104,8 @@ typedef struct {
UINT32 BootNext;
BOOLEAN QuietBoot;
BOOLEAN FastBoot;
BOOLEAN HideQuietBoot;
BOOLEAN HideFastBoot;
//
// This is the COM1 Attributes value storage