提交 44ec67ee 编写于 作者: P PMheart

ocvalidate: Add checks for OpenCanopy and PickerMode

上级 4d8b7aa8
......@@ -64,7 +64,7 @@ Utility to validate whether a `config.plist` matches requirements and convention
### Misc
#### Boot
- HibernateMode: Only `None`, `Auto`, `RTC`, or `NVRAM` are accepted.
- PickerMode: Only `Builtin`, `External`, or `Apple` are accepted.
- PickerMode: Only `Builtin`, `External`, or `Apple` are accepted. When set to `External`, `OpenCanopy.efi` should be loaded in `UEFI->Drivers`.
- `PickerAudioAssist` requires `AudioSupport` in `UEFI->Audio` to be enabled.
#### Security
- AuthRestart: If enabled, `VirtualSMC.kext` should be present in `Kernel->Add`.
......@@ -95,6 +95,7 @@ Utility to validate whether a `config.plist` matches requirements and convention
- When `Ps2KeyboardDxe.efi` is in use, `KeySupport` in `UEFI->Input` should always be enabled altogether.
- `OpenUsbKbDxe.efi` and `Ps2KeyboardDxe.efi` should never co-exist.
- When HFS+ filesystem driver or `AudioDxe.efi` is in use, `ConnectDrivers` should be enabled altogether.
- When `OpenCanopy.efi` is in use, `PickerMode` in `Misc->Boot` should be set to `External`.
#### Input
- KeySupportMode: Only `Auto`, `V1`, `V2`, or `AMI` are accepted.
- When `PointerSupport` is enabled, the value of `PointerSupportMode` should only be `ASUS`.
......
......@@ -152,6 +152,9 @@ CheckMiscBoot (
UINT32 ConsoleAttributes;
CONST CHAR8 *HibernateMode;
UINT32 PickerAttributes;
UINT32 Index;
CONST CHAR8 *Driver;
BOOLEAN HasOpenCanopyEfiDriver;
CONST CHAR8 *PickerMode;
CONST CHAR8 *PickerVariant;
BOOLEAN IsPickerAudioAssistEnabled;
......@@ -182,15 +185,23 @@ CheckMiscBoot (
++ErrorCount;
}
//
// FIXME: Is OpenCanopy.efi mandatory if set to External? Or is this just a suggestion?
//
HasOpenCanopyEfiDriver = FALSE;
for (Index = 0; Index < UserUefi->Drivers.Count; ++Index) {
Driver = OC_BLOB_GET (UserUefi->Drivers.Values[Index]);
if (AsciiStrCmp (Driver, "OpenCanopy.efi") == 0) {
HasOpenCanopyEfiDriver = TRUE;
}
}
PickerMode = OC_BLOB_GET (&UserMisc->Boot.PickerMode);
if (AsciiStrCmp (PickerMode, "Builtin") != 0
&& AsciiStrCmp (PickerMode, "External") != 0
&& AsciiStrCmp (PickerMode, "Apple") != 0) {
DEBUG ((DEBUG_WARN, "Misc->Boot->PickerMode is borked (Can only be Builtin, External, or Apple)!\n"));
++ErrorCount;
} else if (AsciiStrCmp (PickerMode, "External") == 0 && !HasOpenCanopyEfiDriver) {
DEBUG ((DEBUG_WARN, "Misc->Boot->PickerMode is set to External, but OpenCanopy is not loaded at UEFI->Drivers!\n"));
++ErrorCount;
}
PickerVariant = OC_BLOB_GET (&UserMisc->Boot.PickerVariant);
......
......@@ -179,6 +179,7 @@ CheckUEFIDrivers (
{
UINT32 ErrorCount;
OC_UEFI_CONFIG *UserUefi;
OC_MISC_CONFIG *UserMisc;
UINT32 Index;
CONST CHAR8 *Driver;
BOOLEAN HasOpenRuntimeEfiDriver;
......@@ -190,12 +191,16 @@ CheckUEFIDrivers (
UINT32 IndexHfsEfiDriver;
BOOLEAN HasAudioDxeEfiDriver;
UINT32 IndexAudioDxeEfiDriver;
BOOLEAN HasOpenCanopyEfiDriver;
UINT32 IndexOpenCanopyEfiDriver;
CONST CHAR8 *PickerMode;
BOOLEAN IsRequestBootVarRoutingEnabled;
BOOLEAN IsKeySupportEnabled;
BOOLEAN IsConnectDriversEnabled;
ErrorCount = 0;
UserUefi = &Config->Uefi;
UserMisc = &Config->Misc;
HasOpenRuntimeEfiDriver = FALSE;
HasOpenUsbKbDxeEfiDriver = FALSE;
......@@ -205,6 +210,9 @@ CheckUEFIDrivers (
HasHfsEfiDriver = FALSE;
IndexHfsEfiDriver = 0;
HasAudioDxeEfiDriver = FALSE;
IndexAudioDxeEfiDriver = 0;
HasOpenCanopyEfiDriver = FALSE;
IndexOpenCanopyEfiDriver = 0;
for (Index = 0; Index < UserUefi->Drivers.Count; ++Index) {
Driver = OC_BLOB_GET (UserUefi->Drivers.Values[Index]);
......@@ -240,6 +248,10 @@ CheckUEFIDrivers (
HasAudioDxeEfiDriver = TRUE;
IndexAudioDxeEfiDriver = Index;
}
if (AsciiStrCmp (Driver, "OpenCanopy.efi") == 0) {
HasOpenCanopyEfiDriver = TRUE;
IndexOpenCanopyEfiDriver = Index;
}
}
//
......@@ -295,6 +307,12 @@ CheckUEFIDrivers (
}
}
PickerMode = OC_BLOB_GET (&UserMisc->Boot.PickerMode);
if (HasOpenCanopyEfiDriver && AsciiStrCmp (PickerMode, "External") != 0) {
DEBUG ((DEBUG_WARN, "OpenCanopy.efi is loaded at UEFI->Drivers[%u], but Misc->Boot->PickerMode is not set to External!\n", IndexOpenCanopyEfiDriver));
++ErrorCount;
}
return ErrorCount;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册