From 444365c87cda9eff710fcba23650478342156b3c Mon Sep 17 00:00:00 2001 From: vit9696 Date: Sun, 23 Aug 2020 17:32:10 +0300 Subject: [PATCH] OcAppleKernelLib: Fixed `IncreasePciBarSize` on 10.11.5 --- Changelog.md | 1 + Docs/Configuration.tex | 2 +- Library/OcAppleKernelLib/CommonPatches.c | 38 ++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index f31fb872..57898ab4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -22,6 +22,7 @@ OpenCore Changelog - Fixed patching of ACPI tables in low memory - Fixed macOS 11.0 DMG recovery loading without hotplug - Fixed `XhciPortLimit` quirk on 10.12.6 and possibly other versions +- Fixed `IncreasePciBarSize` quirk on 10.11.5 and possibly other versions #### v0.6.0 - Fixed sound corruption with AudioDxe diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex index a8065912..667157ee 100755 --- a/Docs/Configuration.tex +++ b/Docs/Configuration.tex @@ -2181,7 +2181,7 @@ blocking. \texttt{IncreasePciBarSize}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ - \textbf{Requirement}: FIXME\\ + \textbf{Requirement}: 10.10\\ \textbf{Description}: Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GBs. \emph{Note}: This option should be avoided whenever possible. In general the necessity diff --git a/Library/OcAppleKernelLib/CommonPatches.c b/Library/OcAppleKernelLib/CommonPatches.c index 24c86ccd..2406a08e 100644 --- a/Library/OcAppleKernelLib/CommonPatches.c +++ b/Library/OcAppleKernelLib/CommonPatches.c @@ -999,6 +999,33 @@ mIncreasePciBarSizePatch = { .Limit = EFI_PAGE_SIZE }; +STATIC +UINT8 +mIncreasePciBarSizePatchLegacyFind[] = { + 0x01, 0x00, 0x00, 0x40 +}; + +STATIC +UINT8 +mIncreasePciBarSizePatchLegacyReplace[] = { + 0x01, 0x00, 0x00, 0x80 +}; + +STATIC +PATCHER_GENERIC_PATCH +mIncreasePciBarSizeLegacyPatch = { + .Comment = DEBUG_POINTER ("IncreasePciBarSizeLegacy"), + .Base = "__ZN17IOPCIConfigurator24probeBaseAddressRegisterEP16IOPCIConfigEntryjj", + .Find = mIncreasePciBarSizePatchLegacyFind, + .Mask = NULL, + .Replace = mIncreasePciBarSizePatchLegacyReplace, + .ReplaceMask = NULL, + .Size = sizeof (mIncreasePciBarSizePatchLegacyFind), + .Count = 1, + .Skip = 0, + .Limit = EFI_PAGE_SIZE +}; + STATIC EFI_STATUS PatchIncreasePciBarSize ( @@ -1012,9 +1039,20 @@ PatchIncreasePciBarSize ( return EFI_NOT_FOUND; } + if (!OcMatchDarwinVersion (KernelVersion, KERNEL_VERSION_YOSEMITE_MIN, 0)) { + DEBUG ((DEBUG_INFO, "OCAK: Skipping com.apple.iokit.IOPCIFamily IncreasePciBarSize on %u\n", KernelVersion)); + return EFI_SUCCESS; + } + Status = PatcherApplyGenericPatch (Patcher, &mIncreasePciBarSizePatch); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_INFO, "OCAK: Failed to apply patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r\n", Status)); + Status = PatcherApplyGenericPatch (Patcher, &mIncreasePciBarSizeLegacyPatch); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_INFO, "OCAK: Failed to apply legacy patch com.apple.iokit.IOPCIFamily IncreasePciBarSize - %r\n", Status)); + } else { + DEBUG ((DEBUG_INFO, "OCAK: Patch success legacy com.apple.iokit.IOPCIFamily IncreasePciBarSize\n")); + } } else { DEBUG ((DEBUG_INFO, "OCAK: Patch success com.apple.iokit.IOPCIFamily IncreasePciBarSize\n")); } -- GitLab