mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
ocvalidate: Add checks for OpenCanopy and PickerMode
This commit is contained in:
parent
4d8b7aa89c
commit
44ec67ee14
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user