diff --git a/Changelog.md b/Changelog.md index affa059b..59a7176e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -9,6 +9,7 @@ OpenCore Changelog - Added onscreen early logging in DEBUG builds for legacy firmware - Added workaround for firmware not specifying DeviceHandle at bootstrap - Added support for R/O page tables in `SetupVirtualMap` quirk +- Added OEM preservation for certain Apple SMBIOS tables #### v0.6.6 - Added keyboard and pointer entry scroll support in OpenCanopy diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index 540f4ecd..74e06fb3 100644 Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf index e5845601..fa74265d 100644 Binary files a/Docs/Differences/Differences.pdf and b/Docs/Differences/Differences.pdf differ diff --git a/Docs/Differences/Differences.tex b/Docs/Differences/Differences.tex index 79c19856..a9be8d6c 100644 --- a/Docs/Differences/Differences.tex +++ b/Docs/Differences/Differences.tex @@ -1,7 +1,7 @@ \documentclass[]{article} %DIF LATEXDIFF DIFFERENCE FILE -%DIF DEL PreviousConfiguration.tex Sat Feb 6 19:45:31 2021 -%DIF ADD ../Configuration.tex Fri Feb 19 20:35:39 2021 +%DIF DEL PreviousConfiguration.tex Sat Feb 6 18:51:55 2021 +%DIF ADD ../Configuration.tex Sat Feb 20 10:26:17 2021 \usepackage{lmodern} \usepackage{amssymb,amsmath} @@ -184,7 +184,7 @@ This document provides information on \DIFaddbegin \DIFadd{the configuration file format used to set up the correct functioning of the macOS operating system. It is to be read as the official clarification of expected OpenCore behaviour. All deviations, if found in published OpenCore releases, -shall be considered to be documentation or implementation bugs which should be +shall be considered to be documentation or implementation \DIFdelbegin \DIFdel{bugs }\DIFdelend \DIFaddbegin \DIFadd{flaws }\DIFaddend which should be reported via the \href{https://github.com/acidanthera/bugtracker}{Acidanthera Bugtracker}. An errata sheet is available in \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Errata/Errata.pdf}{OpenCorePkg repository}. @@ -709,8 +709,8 @@ OpenCore can be compiled as \DIFdelbegin \DIFdel{an ordinary }\DIFdelend \DIFaddbegin \DIFadd{a standard }\DIFaddend \href{https://github.com/tianocore/tianocore.github.io/wiki/EDK-II}{EDK II} package \DIFdelbegin \DIFdel{. -Since }%DIFDELCMD < \href{https://github.com/tianocore/tianocore.github.io/wiki/UDK}{UDK} -%DIFDELCMD < %%% +Since }\href{https://github.com/tianocore/tianocore.github.io/wiki/UDK}{\DIFdel{UDK}} +%DIFAUXCMD \DIFdel{development was abandoned by TianoCore, OpenCore requires the use of }\DIFdelend \DIFaddbegin \DIFadd{and requires the @@ -899,9 +899,10 @@ These messages are ignored in \texttt{RELEASE} builds. and \texttt{DEBUG\_WARN} for all other human visible errors, \texttt{RELEASE} builds included. \end{itemize} -\DIFdelbegin \DIFdel{When }\DIFdelend \DIFaddbegin \DIFadd{The }\href{https://git-scm.com/docs/git-bisect}{\texttt{git-bisect}} \DIFadd{functionality may be useful when }\DIFaddend trying +\DIFdelbegin \DIFdel{When }\DIFdelend \DIFaddbegin \DIFadd{The }\href{https://git-scm.com/docs/git-bisect}{\texttt{\DIFadd{git-bisect}}} \DIFadd{functionality may be useful when }\DIFaddend trying to find \DIFdelbegin \DIFdel{the problematic change it is useful to rely on -}%DIFDELCMD < \href{https://git-scm.com/docs/git-bisect}{\texttt{git-bisect}} %%% +}\href{https://git-scm.com/docs/git-bisect}{\texttt{\DIFdel{git-bisect}}%DIFAUXCMD +} %DIFAUXCMD \DIFdel{functionality. There also are some unofficial resources that provide per-commit binary builds of OpenCore}\DIFdelend \DIFaddbegin \DIFadd{problematic changes. Unofficial sources of }\texttt{\DIFadd{per-commit}} \DIFadd{OpenCore binary builds}\DIFaddend , such as \href{https://dortania.github.io/builds}{Dortania}\DIFaddbegin \DIFadd{, may also be useful}\DIFaddend . @@ -1617,10 +1618,10 @@ To view their current state\DIFdelbegin \DIFdel{use }\DIFdelend \DIFaddbegin \DI This is a security option that restricts the activation of single user mode by ignoring \DIFaddbegin \DIFadd{the }\DIFaddend \texttt{CMD+S} hotkey and \DIFaddbegin \DIFadd{the }\DIFaddend \texttt{-s} boot argument. The behaviour with this quirk enabled is supposed to match T2-based model behaviour. - Refer to \DIFdelbegin %DIFDELCMD < \href{https://web.archive.org/web/20200517125051/https://support.apple.com/en-us/HT201573}{this archived article} %%% -\DIFdelend \DIFaddbegin \DIFadd{this - }\href{https://web.archive.org/web/20200517125051/https://support.apple.com/en-us/HT201573}{archived article} - \DIFaddend to understand how to use single user mode with this quirk enabled. + Refer to \DIFdelbegin %DIFDELCMD < \href{https://web.archive.org/web/20200517125051/https://support.apple.com/en-us/HT201573}{%%% +\DIFdelend this + \DIFaddbegin \href{https://web.archive.org/web/20200517125051/https://support.apple.com/en-us/HT201573}{\DIFaddend archived article} + to understand how to use single user mode with this quirk enabled. \item \texttt{DisableVariableWrite}\\ @@ -1645,12 +1646,10 @@ To view their current state\DIFdelbegin \DIFdel{use }\DIFdelend \DIFaddbegin \DI This option forces \DIFaddbegin \DIFadd{the }\DIFaddend XNU kernel to ignore \DIFaddbegin \DIFadd{a }\DIFaddend newly supplied memory map and assume that it did not change after waking from hibernation. This behaviour is required \DIFdelbegin \DIFdel{to work by Windows , which mandates to - }%DIFDELCMD < \href{https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-uefi#hibernation-state-s4-transition-requirements}{preserve} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \DIFadd{for + }\DIFdelend \DIFaddbegin \DIFadd{by Windows to work. Windows mandates - }\href{https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-uefi#hibernation-state-s4-transition-requirements}{preserving} - \DIFaddend runtime memory size and location after S4 wake. + }\DIFaddend \href{https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-uefi#hibernation-state-s4-transition-requirements}{\DIFdelbegin \DIFdel{preserve}\DIFdelend \DIFaddbegin \DIFadd{preserving}\DIFaddend } + runtime memory size and location after S4 wake. \emph{Note}: This may be used to workaround \DIFdelbegin \DIFdel{buggy memory maps on olderhardware, and is now considered rare legacy }\DIFdelend \DIFaddbegin \DIFadd{flawed memory map implementations on older, @@ -1696,9 +1695,10 @@ To view their current state\DIFdelbegin \DIFdel{use }\DIFdelend \DIFaddbegin \DI \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Retry \texttt{ExitBootServices} with new memory map on failure. - \DIFdelbegin \DIFdel{Try to ensure }\DIFdelend \DIFaddbegin \DIFadd{Ensure }\DIFaddend that \texttt{ExitBootServices} call succeeds\DIFdelbegin \DIFdel{even with }\DIFdelend \DIFaddbegin \DIFadd{, even with an }\DIFaddend outdated MemoryMap - key argument \DIFdelbegin \DIFdel{by obtaining }\DIFdelend \DIFaddbegin \DIFadd{if required, by obtaining the }\DIFaddend current memory map and retrying \DIFaddbegin \DIFadd{the - }\DIFaddend \texttt{ExitBootServices} call. + Try to ensure that \DIFaddbegin \DIFadd{the }\DIFaddend \texttt{ExitBootServices} call succeeds\DIFdelbegin \DIFdel{even with outdated MemoryMap + key argument by obtaining }\DIFdelend \DIFaddbegin \DIFadd{. If required, an + outdated }\texttt{\DIFadd{MemoryMap}} \DIFadd{key argument can be used by obtaining the }\DIFaddend current + memory map and retrying \DIFaddbegin \DIFadd{the }\DIFaddend \texttt{ExitBootServices} call. \emph{Note}: The \DIFdelbegin \DIFdel{necessity of }\DIFdelend \DIFaddbegin \DIFadd{need for }\DIFaddend this quirk is determined by early boot crashes of the firmware. Do not use this \DIFaddbegin \DIFadd{option }\DIFaddend without a full understanding of the \DIFdelbegin \DIFdel{consequences}\DIFdelend \DIFaddbegin \DIFadd{implications}\DIFaddend . @@ -1738,7 +1738,8 @@ To view their current state\DIFdelbegin \DIFdel{use }\DIFdelend \DIFaddbegin \DI \texttt{PK}, and \texttt{KEK} variables from the operating system. \emph{Note}: This quirk \DIFdelbegin \DIFdel{mainly }\DIFdelend attempts to avoid issues with NVRAM implementations with - \DIFdelbegin \DIFdel{problematic defragmentation}\DIFdelend \DIFaddbegin \DIFadd{fragmentation issues}\DIFaddend , such as \DIFdelbegin \DIFdel{select Insyde or }\DIFdelend \DIFaddbegin \DIFadd{on the }\DIFaddend \texttt{MacPro5,1} \DIFaddbegin \DIFadd{as well as on certain Insyde firmware}\DIFaddend . + \DIFdelbegin \DIFdel{problematic defragmentation}\DIFdelend \DIFaddbegin \DIFadd{fragmentation issues}\DIFaddend , such as \DIFdelbegin \DIFdel{select Insyde or }\DIFdelend \DIFaddbegin \DIFadd{on the }\DIFaddend \texttt{MacPro5,1} \DIFaddbegin \DIFadd{as well as on certain + Insyde firmware without garbage collection or with faulty garbage collection}\DIFaddend . \item \texttt{ProtectUefiServices}\\ @@ -1845,9 +1846,12 @@ To view their current state\DIFdelbegin \DIFdel{use }\DIFdelend \DIFaddbegin \DI performing early boot identity mapping of assigned virtual addresses to physical memory. - \emph{Note}: The \DIFdelbegin \DIFdel{necessity of }\DIFdelend \DIFaddbegin \DIFadd{need for }\DIFaddend this quirk is determined by early boot failures. \DIFdelbegin \DIFdel{Currently}\DIFdelend \DIFaddbegin \DIFadd{However}\DIFaddend , new - firmware with memory protection support (such as OVMF) do not \DIFaddbegin \DIFadd{currently }\DIFaddend support this quirk. - See \href{https://github.com/acidanthera/bugtracker/issues/719}{acidanthera/bugtracker\#719}. + \emph{Note}: The \DIFdelbegin \DIFdel{necessity of }\DIFdelend \DIFaddbegin \DIFadd{need for }\DIFaddend this quirk is determined by early boot failures. +\DIFdelbegin \DIFdel{Currently, + new firmware with memory protection support (such as OVMF) do not support this quirk. See + }\href{https://github.com/acidanthera/bugtracker/issues/719}{\DIFdel{acidanthera/bugtracker\#719}}%DIFAUXCMD +\DIFdel{. +}\DIFdelend \item \texttt{SignalAppleOS}\\ @@ -4127,8 +4131,8 @@ rm vault.pub achieve \texttt{Full Security}. Check \texttt{ForceSecureBootScheme} when using Apple Secure Boot on a virtual machine. - Enabling Apple Secure Boot is more demanding to incorrect configurations, - buggy macOS installations, and unsupported setups. Things to consider: + Enabling Apple Secure Boot is more demanding \DIFdelbegin \DIFdel{to }\DIFdelend \DIFaddbegin \DIFadd{on }\DIFaddend incorrect configurations, + \DIFdelbegin \DIFdel{buggy }\DIFdelend \DIFaddbegin \DIFadd{faulty }\DIFaddend macOS installations, and unsupported setups. Things to consider: \begin{enumerate} \tightlist @@ -4757,10 +4761,11 @@ be used. Version with macOS specific enhancements can be downloaded from \item When disabled \texttt{Generic} section is unused. \end{itemize} - \textbf{Warning}: It is strongly discouraged set this option to \texttt{false} - when intending to update platform information. The only reason to do that is - when doing minor correction of the SMBIOS present and similar. In all other - cases not using \texttt{Automatic} may lead to hard to debug errors. + \textbf{Warning}: It is strongly discouraged \DIFaddbegin \DIFadd{to }\DIFaddend set this option to \texttt{false} + when intending to update platform information. The only reason to do \DIFdelbegin \DIFdel{that is when doing minor correction of the SMBIOS present and similar}\DIFdelend \DIFaddbegin \DIFadd{so is if + making minor corrections to SMBIOS values on legacy Apple hardware}\DIFaddend . In all other + cases \DIFdelbegin \DIFdel{not using }\DIFdelend \DIFaddbegin \DIFadd{setting }\DIFaddend \texttt{Automatic} \DIFaddbegin \DIFadd{to }\texttt{\DIFadd{false}} \DIFaddend may lead to hard to debug errors\DIFaddbegin \DIFadd{, + due to inconsistent or invalid settings}\DIFaddend . \item \texttt{CustomMemory}\\ @@ -5707,23 +5712,25 @@ Apple ROM Version \item \texttt{PlatformFeature}\\ \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ - \textbf{Failsafe}: \texttt{0xFFFFFFFF}\\ + \textbf{Failsafe}: \texttt{0xFFFFFFFF} \DIFaddbegin \DIFadd{(OEM specified on Apple hardware, do not provide the table otherwise)}\DIFaddend \\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE133} - \texttt{PlatformFeature}\\ \textbf{Description}: Platform features bitmask. Refer to \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{AppleFeatures.h} - for more details. Use \texttt{0xFFFFFFFF} value to not provide this table. + for more details. \DIFdelbegin \DIFdel{Use }\texttt{\DIFdel{0xFFFFFFFF}} %DIFAUXCMD +\DIFdel{value to not provide this table}\DIFdelend \DIFaddbegin \DIFadd{Missing on older Macs}\DIFaddend . \item \texttt{SmcVersion}\\ \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ - \textbf{Failsafe}: All zero\\ + \textbf{Failsafe}: All zero \DIFaddbegin \DIFadd{(OEM specified on Apple hardware, do not provide the table otherwise)}\DIFaddend \\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE134} - \texttt{Version}\\ \textbf{Description}: ASCII string containing SMC version in upper case. - Missing on T2 based Macs. Ignored when zero. -\item + Missing on T2 based Macs. +\DIFdelbegin \DIFdel{Ignored when zero. +}\DIFdelend \item \texttt{FirmwareFeatures}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ - \textbf{Failsafe}: \texttt{0}\\ + \textbf{Failsafe}: \texttt{0} \DIFaddbegin \DIFadd{(OEM specified on Apple hardware, 0 otherwise)}\DIFaddend \\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE128} - \texttt{FirmwareFeatures} and \texttt{ExtendedFirmwareFeatures}\\ \textbf{Description}: 64-bit firmware features bitmask. Refer to @@ -5733,7 +5740,7 @@ Apple ROM Version \item \texttt{FirmwareFeaturesMask}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ - \textbf{Failsafe}: \texttt{0}\\ + \textbf{Failsafe}: \texttt{0} \DIFaddbegin \DIFadd{(OEM specified on Apple hardware, 0 otherwise)}\DIFaddend \\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE128} - \texttt{FirmwareFeaturesMask} and \texttt{ExtendedFirmwareFeaturesMask}\\ @@ -6527,8 +6534,8 @@ functioning. Feature highlights: The use of \texttt{BuiltinGraphics} is generally straightforward. For most platforms it is necessary to enable \texttt{ProvideConsoleGop}, set \texttt{Resolution} to \texttt{Max}. \texttt{BuiltinText} variant is - an alternative \texttt{BuiltinGraphics} for some very old and buggy laptop - firmware, which can only draw in \texttt{Text} mode. + an alternative \texttt{BuiltinGraphics} for some very old and \DIFdelbegin \DIFdel{buggy }\DIFdelend \DIFaddbegin \DIFadd{faulty + }\DIFaddend laptop firmware, which can only draw in \texttt{Text} mode. The use of \texttt{System} protocols is more complicated. In general the preferred setting is \texttt{SystemGraphics} or \texttt{SystemText}. @@ -7073,9 +7080,9 @@ While newer operating systems can be downloaded over the internet, older operating systems did not have installation media for every minor release\DIFdelbegin \DIFdel{, so to get a compatible distribution one may have to }\DIFdelend \DIFaddbegin \DIFadd{. For compatible distributions of such, }\DIFaddend download a device-specific image and \DIFdelbegin \DIFdel{mod }\DIFdelend \DIFaddbegin \DIFadd{modify }\DIFaddend it if necessary. \DIFdelbegin \DIFdel{To get the }\DIFdelend \DIFaddbegin \DIFadd{Visit this archived Apple Support -}\href{https://web.archive.org/web/20170705003629/https://support.apple.com/en-us/HT204319}{article} +}\href{https://web.archive.org/web/20170705003629/https://support.apple.com/en-us/HT204319}{\DIFadd{article}} \DIFadd{for a }\DIFaddend list of the bundled device-specific builds for legacy operating systems\DIFdelbegin \DIFdel{one can visit this archived Apple Support -}%DIFDELCMD < \href{https://web.archive.org/web/20170705003629/https://support.apple.com/en-us/HT204319}{article}%%% +}\href{https://web.archive.org/web/20170705003629/https://support.apple.com/en-us/HT204319}{\DIFdel{article}}%DIFAUXCMD \DIFdel{. Since it is not always }\DIFdelend \DIFaddbegin \DIFadd{. However, as this may not always be }\DIFaddend accurate, the latest versions are listed below. diff --git a/Docs/Errata/Errata.pdf b/Docs/Errata/Errata.pdf index 9c686fa8..866f3279 100644 Binary files a/Docs/Errata/Errata.pdf and b/Docs/Errata/Errata.pdf differ