diff --git a/rEFIt_UEFI/Platform/Settings.h b/rEFIt_UEFI/Platform/Settings.h index b800dd318..552a5362c 100755 --- a/rEFIt_UEFI/Platform/Settings.h +++ b/rEFIt_UEFI/Platform/Settings.h @@ -2102,6 +2102,7 @@ printf("%s", ""); XBool SetupVirtualMap = false; XBool SignalAppleOS = false; XBool SyncRuntimePermissions = false; + uint8_t ResizeAppleGpuBars = 0; // 0 is NOT the default value if not set in config.plist. Default value if not set is returned by dgetResizeAppleGpuBars() #if __cplusplus > 201703L XBool operator == (const OcBooterQuirksClass&) const = default; @@ -2125,6 +2126,7 @@ printf("%s", ""); if ( !(SetupVirtualMap == other.SetupVirtualMap) ) return false; if ( !(SignalAppleOS == other.SignalAppleOS) ) return false; if ( !(SyncRuntimePermissions == other.SyncRuntimePermissions) ) return false; + if ( !(ResizeAppleGpuBars == other.ResizeAppleGpuBars) ) return false; return true; } void takeValueFrom(const ConfigPlistClass::Quirks_Class::OcBooterQuirks_Class& other) @@ -2146,6 +2148,7 @@ printf("%s", ""); SetupVirtualMap = other.dgetSetupVirtualMap(); SignalAppleOS = other.dgetSignalAppleOS(); SyncRuntimePermissions = other.dgetSyncRuntimePermissions(); + ResizeAppleGpuBars = other.dgetResizeAppleGpuBars(); } }; diff --git a/rEFIt_UEFI/Settings/ConfigPlist/Config_Quirks.h b/rEFIt_UEFI/Settings/ConfigPlist/Config_Quirks.h index 628df55d9..2aa5170a0 100755 --- a/rEFIt_UEFI/Settings/ConfigPlist/Config_Quirks.h +++ b/rEFIt_UEFI/Settings/ConfigPlist/Config_Quirks.h @@ -49,7 +49,7 @@ public: - // This is to mimic what's in settings. This is NOT a plist dict section. It is just cosmetic. TODO: remove that OC coupling in SETTINGS_DATA. + // This is to mimic what's in settings. This is NOT a plist dict section. It is just cosmetic. class OcKernelQuirks_Class { //const Quirks_Class& parent; public: @@ -80,7 +80,7 @@ public: OcKernelQuirks_Class(const Quirks_Class& _parent) /*: parent(_parent)*/ {} }; - // This is to mimic what's in settings. This is NOT a plist dict section. It is just cosmetic. TODO: remove that OC coupling in SETTINGS_DATA. + // This is to mimic what's in settings. This is NOT a plist dict section. It is just cosmetic. class OcBooterQuirks_Class { const Quirks_Class& parent; public: @@ -101,6 +101,7 @@ public: XmlBool SetupVirtualMap = XmlBool(); XmlBool SignalAppleOS = XmlBool(); XmlBool SyncRuntimePermissions = XmlBool(); + XmlInt8 ResizeAppleGpuBars = XmlInt8(); XBool dgetAvoidRuntimeDefrag() const { return parent.isDefined() ? AvoidRuntimeDefrag.isDefined() ? AvoidRuntimeDefrag.value() : XBool(true) : XBool(false); }; // TODO: different default value if section is not defined XBool dgetDevirtualiseMmio() const { return DevirtualiseMmio.isDefined() ? DevirtualiseMmio.value() : DevirtualiseMmio.nullValue; }; @@ -119,6 +120,7 @@ public: XBool dgetSetupVirtualMap() const { return parent.isDefined() ? SetupVirtualMap.isDefined() ? SetupVirtualMap.value() : XBool(true) : SetupVirtualMap.nullValue; }; // TODO: different default value if section is not defined XBool dgetSignalAppleOS() const { return SignalAppleOS.isDefined() ? SignalAppleOS.value() : SignalAppleOS.nullValue; }; XBool dgetSyncRuntimePermissions() const { return parent.isDefined() ? SyncRuntimePermissions.isDefined() ? SyncRuntimePermissions.value() : XBool(true) : XBool(false); }; // TODO: different default value if section is not defined + uint8_t dgetResizeAppleGpuBars() const { return parent.isDefined() && ResizeAppleGpuBars.isDefined() ? ResizeAppleGpuBars.value() : -1; }; OcBooterQuirks_Class(const Quirks_Class& _parent) : parent(_parent) {} }; @@ -131,7 +133,7 @@ public: OcKernelQuirks_Class OcKernelQuirks; OcBooterQuirks_Class OcBooterQuirks; - XmlDictField m_fields[31] = { + XmlDictField m_fields[32] = { {"AvoidRuntimeDefrag", OcBooterQuirks.AvoidRuntimeDefrag}, {"DevirtualiseMmio", OcBooterQuirks.DevirtualiseMmio}, {"DisableSingleUser", OcBooterQuirks.DisableSingleUser}, @@ -149,6 +151,7 @@ public: {"SetupVirtualMap", OcBooterQuirks.SetupVirtualMap}, {"SignalAppleOS", OcBooterQuirks.SignalAppleOS}, {"SyncRuntimePermissions", OcBooterQuirks.SyncRuntimePermissions}, + {"ResizeAppleGpuBars", OcBooterQuirks.ResizeAppleGpuBars}, {"MmioWhitelist", MmioWhitelist}, {"FuzzyMatch", FuzzyMatch}, {"KernelCache", KernelCache}, diff --git a/rEFIt_UEFI/Settings/ConfigPlist/SMBIOSPlist.h b/rEFIt_UEFI/Settings/ConfigPlist/SMBIOSPlist.h index 13052529f..bac68f769 100755 --- a/rEFIt_UEFI/Settings/ConfigPlist/SMBIOSPlist.h +++ b/rEFIt_UEFI/Settings/ConfigPlist/SMBIOSPlist.h @@ -517,14 +517,14 @@ public: } if ( BiosReleaseDate.isDefined() ) { int compareReleaseDateResult = compareReleaseDate(GetReleaseDate(getModel()), BiosReleaseDate.value()); + if ( compareReleaseDateResult == 1 ) { + xmlLiteParser->addWarning(generateErrors, S8Printf("BiosReleaseDate '%s' is older than default ('%s') -> ignored. Dict '%s:%d'.", BiosReleaseDate.value().c_str(), GetReleaseDate(getModel()).c_str(), xmlPath.c_str(), keyPos.getLine())); // Do not set b to false : we don't want to invalidate the whole dict + BiosReleaseDate.reset(); + }else if ( compareReleaseDateResult == 0 ) { // This is just 'info'. It's useless but fine to define the same as default. xmlLiteParser->addInfo(generateErrors, S8Printf("BiosReleaseDate '%s' is the same as default. Dict '%s:%d'.", BiosReleaseDate.value().c_str(), xmlPath.c_str(), keyPos.getLine())); // Do not set b to false : we don't want to invalidate the whole dict BiosReleaseDate.reset(); - }else - if ( compareReleaseDateResult == 1 ) { - xmlLiteParser->addWarning(generateErrors, S8Printf("BiosReleaseDate '%s' is older than default ('%s') -> ignored. Dict '%s:%d'.", BiosReleaseDate.value().c_str(), GetReleaseDate(getModel()).c_str(), xmlPath.c_str(), keyPos.getLine())); // Do not set b to false : we don't want to invalidate the whole dict - BiosReleaseDate.reset(); } } if ( EfiVersion.isDefined() ) { @@ -533,6 +533,7 @@ public: EfiVersion.reset(); } else if (AsciiStrVersionToUint64(ApplePlatformDataArray[dgetModel()].efiversion, 4, 5) == AsciiStrVersionToUint64(EfiVersion.value(), 4, 5)) { xmlLiteParser->addInfo(generateErrors, S8Printf("EfiVersion '%s' is the same as default. Dict '%s:%d'.", EfiVersion.value().c_str(), xmlPath.c_str(), keyPos.getLine())); // Do not set b to false : we don't want to invalidate the whole dict + EfiVersion.reset(); } } }else{ diff --git a/rEFIt_UEFI/refit/main.cpp b/rEFIt_UEFI/refit/main.cpp index 647df87e0..6c0d79eec 100644 --- a/rEFIt_UEFI/refit/main.cpp +++ b/rEFIt_UEFI/refit/main.cpp @@ -1019,6 +1019,7 @@ void LOADER_ENTRY::StartLoader() mOpenCoreConfiguration.Booter.Quirks.SetupVirtualMap = gSettings.Quirks.OcBooterQuirks.SetupVirtualMap; mOpenCoreConfiguration.Booter.Quirks.SignalAppleOS = gSettings.Quirks.OcBooterQuirks.SignalAppleOS; mOpenCoreConfiguration.Booter.Quirks.SyncRuntimePermissions = gSettings.Quirks.OcBooterQuirks.SyncRuntimePermissions; + mOpenCoreConfiguration.Booter.Quirks.ResizeAppleGpuBars = gSettings.Quirks.OcBooterQuirks.ResizeAppleGpuBars; #endif