提交 04186d0d 编写于 作者: V vit9696

Added `MmioWhitelist` configuration option

上级 7b153b49
......@@ -2,7 +2,8 @@ OpenCore Changelog
==================
#### v0.5.2
- Fixed `MinKernel` and `MaxKernel` logic (thx @dhinakg, @reitermarkus)
- Fixed ASSERT when booting non-Apple OSes without arguments from the DEBUG version.
- Fixed ASSERT when booting non-Apple OSes without arguments from the DEBUG version
- Added `MmioWhitelist` configuration option
#### v0.5.1
- Added support of kernel resource kext injection
......
......@@ -203,6 +203,25 @@
<true/>
<key>ForceExitBootServices</key>
<false/>
<key>MmioWhitelist</key>
<array>
<dict>
<key>Address</key>
<integer>4275159040</integer>
<key>Comment</key>
<string>Haswell: SB_RCBA is a 0x4 page memory region, containing SPI_BASE at 0x3800 (SPI_BASE_ADDRESS)</string>
<key>Enabled</key>
<false/>
</dict>
<dict>
<key>Address</key>
<integer>4278190080</integer>
<key>Comment</key>
<string>Generic: PCI root is a 0x1000 page memory region used by some firmwares</string>
<key>Enabled</key>
<false/>
</dict>
</array>
<key>ProtectCsmRegion</key>
<false/>
<key>ProvideCustomSlide</key>
......
......@@ -203,6 +203,25 @@
<true/>
<key>ForceExitBootServices</key>
<false/>
<key>MmioWhitelist</key>
<array>
<dict>
<key>Address</key>
<integer>4275159040</integer>
<key>Comment</key>
<string>Haswell: SB_RCBA is a 0x4 page memory region, containing SPI_BASE at 0x3800 (SPI_BASE_ADDRESS)</string>
<key>Enabled</key>
<false/>
</dict>
<dict>
<key>Address</key>
<integer>4278190080</integer>
<key>Comment</key>
<string>Generic: PCI root is a 0x1000 page memory region used by some firmwares</string>
<key>Enabled</key>
<false/>
</dict>
</array>
<key>ProtectCsmRegion</key>
<false/>
<key>ProvideCustomSlide</key>
......
......@@ -345,7 +345,7 @@ OcLoadUefiInputSupport (
if (TimerResolution != 0) {
Status = OcAppleGenericInputTimerQuirkInit (TimerResolution);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "OCGI: Failed to initialize timer quirk\n"));
DEBUG ((DEBUG_ERROR, "OC: Failed to initialize timer quirk\n"));
} else {
ExitBs = TRUE;
}
......@@ -363,7 +363,7 @@ OcLoadUefiInputSupport (
if (PointerMode != OcInputPointerModeMax) {
Status = OcAppleGenericInputPointerInit (PointerMode);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "OCGI: Failed to initialize pointer\n"));
DEBUG ((DEBUG_ERROR, "OC: Failed to initialize pointer\n"));
} else {
ExitBs = TRUE;
}
......@@ -393,7 +393,7 @@ OcLoadUefiInputSupport (
Config->Uefi.Input.KeySwap
);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "OCGI: Failed to initialize keycode\n"));
DEBUG ((DEBUG_ERROR, "OC: Failed to initialize keycode\n"));
} else {
ExitBs = TRUE;
}
......@@ -409,6 +409,8 @@ OcLoadBooterUefiSupport (
)
{
OC_ABC_SETTINGS AbcSettings;
UINT32 Index;
UINT32 NextIndex;
ZeroMem (&AbcSettings, sizeof (AbcSettings));
......@@ -425,6 +427,29 @@ OcLoadBooterUefiSupport (
AbcSettings.SetupVirtualMap = Config->Booter.Quirks.SetupVirtualMap;
AbcSettings.ShrinkMemoryMap = Config->Booter.Quirks.ShrinkMemoryMap;
if (AbcSettings.DevirtualiseMmio && Config->Booter.Quirks.MmioWhitelist.Count > 0) {
AbcSettings.MmioWhitelist = AllocatePool (
Config->Booter.Quirks.MmioWhitelist.Count * sizeof (AbcSettings.MmioWhitelist[0])
);
if (AbcSettings.MmioWhitelist != NULL) {
NextIndex = 0;
for (Index = 0; Index < Config->Booter.Quirks.MmioWhitelist.Count; ++Index) {
if (Config->Booter.Quirks.MmioWhitelist.Values[Index]->Enabled) {
AbcSettings.MmioWhitelist[++NextIndex] = Config->Booter.Quirks.MmioWhitelist.Values[Index]->Address;
}
}
AbcSettings.MmioWhitelistSize = NextIndex;
} else {
DEBUG ((
DEBUG_ERROR,
"OC: Failed to allocate %u slots for mmio addresses\n",
(UINT32) Config->Booter.Quirks.MmioWhitelist.Count
));
}
}
OcAbcInitialize (&AbcSettings);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册