Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
OpenCorePKG_MOD
提交
a5a4754e
O
OpenCorePKG_MOD
项目概览
btwise
/
OpenCorePKG_MOD
通知
26
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
OpenCorePKG_MOD
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a5a4754e
编写于
5月 03, 2019
作者:
V
vit9696
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OpenCoreUefi: Implement ExitBootServicesDelay quirk
上级
c0098e57
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
148 addition
and
112 deletion
+148
-112
Docs/Configuration.pdf
Docs/Configuration.pdf
+0
-0
Docs/Configuration.tex
Docs/Configuration.tex
+14
-0
Docs/Sample.plist
Docs/Sample.plist
+3
-102
Docs/SampleFull.plist
Docs/SampleFull.plist
+104
-1
Platform/OpenCore/OpenCoreUefi.c
Platform/OpenCore/OpenCoreUefi.c
+27
-9
未找到文件。
Docs/Configuration.pdf
浏览文件 @
a5a4754e
无法预览此类型文件
Docs/Configuration.tex
浏览文件 @
a5a4754e
...
...
@@ -1137,6 +1137,7 @@ blocking.
\subsection
{
Quirks Properties
}
\label
{
kernelpropsquirks
}
\begin{enumerate}
\item
\texttt
{
AppleCpuPmCfgLock
}
\\
\textbf
{
Type
}
:
\texttt
{
plist
\
boolean
}
\\
...
...
@@ -2523,6 +2524,19 @@ build -a X64 -b RELEASE -t XCODE5 -p IntelFrameworkModulePkg/IntelFrameworkModul
\begin
{
enumerate
}
\item
\texttt
{
ExitBootServicesDelay
}
\\
\textbf
{
Type
}
:
\texttt
{
plist
\
integer
}
\\
\textbf
{
Default value
}
:
\texttt
{
0
}
\\
\textbf
{
Description
}
: Adds delay in microseconds after
\texttt
{
EXIT
\_
BOOT
\_
SERVICES
}
event.
This is a very ugly quirk to circumvent "Still waiting for root device" message
on select APTIO IV firmwares, namely ASUS Z
87
-
Pro, when using FileVault
2
in particular.
It seems that for some reason they execute code in parallel to
\texttt
{
EXIT
\_
BOOT
\_
SERVICES
}
,
which results in SATA controller being inaccessible from macOS. A better approach should be
found in some future. Expect
3
-
5
seconds to be enough in case the quirk is needed.
\item
\texttt
{
IgnoreInvalidFlexRatio
}
\\
\textbf
{
Type
}
:
\texttt
{
plist
\
boolean
}
\\
...
...
Docs/Sample.plist
浏览文件 @
a5a4754e
...
...
@@ -444,38 +444,7 @@
<key>
PlatformInfo
</key>
<dict>
<key>
Automatic
</key>
<false/>
<key>
DataHub
</key>
<dict>
<key>
ARTFrequency
</key>
<integer>
0
</integer>
<key>
BoardProduct
</key>
<string>
Mac-F221BEC8
</string>
<key>
BoardRevision
</key>
<data>
AQ==
</data>
<key>
DevicePathsSupported
</key>
<data>
AQ==
</data>
<key>
FSBFrequency
</key>
<integer>
0
</integer>
<key>
InitialTSC
</key>
<integer>
0
</integer>
<key>
PlatformName
</key>
<string>
platform
</string>
<key>
SmcBranch
</key>
<data>
AAAAAAAAAAA=
</data>
<key>
SmcPlatform
</key>
<data>
AAAAAAAAAAA=
</data>
<key>
SmcRevision
</key>
<data>
ATkPAAAF
</data>
<key>
StartupPowerEvents
</key>
<integer>
0
</integer>
<key>
SystemProductName
</key>
<string>
MacPro5,1
</string>
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
<key>
SystemUUID
</key>
<string>
00000000-0000-0000-0000-000000000000
</string>
</dict>
<true/>
<key>
Generic
</key>
<dict>
<key>
SystemUUID
</key>
...
...
@@ -489,76 +458,6 @@
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
</dict>
<key>
PlatformNVRAM
</key>
<dict>
<key>
BID
</key>
<string>
Mac-F221BEC8
</string>
<key>
MLB
</key>
<string>
M000000000001
</string>
<key>
ROM
</key>
<data>
ESIzAAAA
</data>
<key>
FirmwareFeatures
</key>
<data>
N+EP6AAAAAA=
</data>
<key>
FirmwareFeaturesMask
</key>
<data>
P/8f/wAAAAA=
</data>
</dict>
<key>
SMBIOS
</key>
<dict>
<key>
BIOSVendor
</key>
<string></string>
<key>
BIOSVersion
</key>
<string>
142.0.0.0.0
</string>
<key>
BIOSReleaseDate
</key>
<string>
02/14/2019
</string>
<key>
SystemManufacturer
</key>
<string></string>
<key>
SystemProductName
</key>
<string>
MacPro5,1
</string>
<key>
SystemVersion
</key>
<string>
1.1
</string>
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
<key>
SystemUUID
</key>
<string>
00000000-0000-0000-0000-000000000000
</string>
<key>
SystemSKUNumber
</key>
<string>
Mac-F221BEC8
</string>
<key>
SystemFamily
</key>
<string>
MacPro
</string>
<key>
BoardManufacturer
</key>
<string></string>
<key>
BoardProduct
</key>
<string>
Mac-F221BEC8
</string>
<key>
BoardVersion
</key>
<string>
MacPro5,1
</string>
<key>
BoardSerialNumber
</key>
<string>
M000000000001
</string>
<key>
BoardAssetTag
</key>
<string></string>
<key>
BoardType
</key>
<integer>
11
</integer>
<key>
BoardLocationInChassis
</key>
<string>
Part Component
</string>
<key>
ChassisManufacturer
</key>
<string></string>
<key>
ChassisType
</key>
<integer>
7
</integer>
<key>
ChassisVersion
</key>
<string>
Mac-F221BEC8
</string>
<key>
ChassisSerialNumber
</key>
<string>
W0000000001
</string>
<key>
ChassisAssetTag
</key>
<string></string>
<key>
PlatformFeature
</key>
<integer>
0
</integer>
<key>
FirmwareFeatures
</key>
<data>
N+EP6AAAAAA=
</data>
<key>
FirmwareFeaturesMask
</key>
<data>
P/8f/wAAAAA=
</data>
<key>
ProcessorType
</key>
<integer>
0
</integer>
<key>
MemoryFormFactor
</key>
<integer>
9
</integer>
</dict>
<key>
UpdateDataHub
</key>
<true/>
<key>
UpdateNVRAM
</key>
...
...
@@ -590,6 +489,8 @@
</dict>
<key>
Quirks
</key>
<dict>
<key>
ExitBootServicesDelay
</key>
<integer>
0
</integer>
<key>
IgnoreInvalidFlexRatio
</key>
<false/>
<key>
IgnoreTextInGraphics
</key>
...
...
Docs/Sample
Simple
.plist
→
Docs/Sample
Full
.plist
浏览文件 @
a5a4754e
...
...
@@ -444,7 +444,38 @@
<key>
PlatformInfo
</key>
<dict>
<key>
Automatic
</key>
<true/>
<false/>
<key>
DataHub
</key>
<dict>
<key>
ARTFrequency
</key>
<integer>
0
</integer>
<key>
BoardProduct
</key>
<string>
Mac-F221BEC8
</string>
<key>
BoardRevision
</key>
<data>
AQ==
</data>
<key>
DevicePathsSupported
</key>
<data>
AQ==
</data>
<key>
FSBFrequency
</key>
<integer>
0
</integer>
<key>
InitialTSC
</key>
<integer>
0
</integer>
<key>
PlatformName
</key>
<string>
platform
</string>
<key>
SmcBranch
</key>
<data>
AAAAAAAAAAA=
</data>
<key>
SmcPlatform
</key>
<data>
AAAAAAAAAAA=
</data>
<key>
SmcRevision
</key>
<data>
ATkPAAAF
</data>
<key>
StartupPowerEvents
</key>
<integer>
0
</integer>
<key>
SystemProductName
</key>
<string>
MacPro5,1
</string>
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
<key>
SystemUUID
</key>
<string>
00000000-0000-0000-0000-000000000000
</string>
</dict>
<key>
Generic
</key>
<dict>
<key>
SystemUUID
</key>
...
...
@@ -458,6 +489,76 @@
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
</dict>
<key>
PlatformNVRAM
</key>
<dict>
<key>
BID
</key>
<string>
Mac-F221BEC8
</string>
<key>
MLB
</key>
<string>
M000000000001
</string>
<key>
ROM
</key>
<data>
ESIzAAAA
</data>
<key>
FirmwareFeatures
</key>
<data>
N+EP6AAAAAA=
</data>
<key>
FirmwareFeaturesMask
</key>
<data>
P/8f/wAAAAA=
</data>
</dict>
<key>
SMBIOS
</key>
<dict>
<key>
BIOSVendor
</key>
<string></string>
<key>
BIOSVersion
</key>
<string>
142.0.0.0.0
</string>
<key>
BIOSReleaseDate
</key>
<string>
02/14/2019
</string>
<key>
SystemManufacturer
</key>
<string></string>
<key>
SystemProductName
</key>
<string>
MacPro5,1
</string>
<key>
SystemVersion
</key>
<string>
1.1
</string>
<key>
SystemSerialNumber
</key>
<string>
W0000000001
</string>
<key>
SystemUUID
</key>
<string>
00000000-0000-0000-0000-000000000000
</string>
<key>
SystemSKUNumber
</key>
<string>
Mac-F221BEC8
</string>
<key>
SystemFamily
</key>
<string>
MacPro
</string>
<key>
BoardManufacturer
</key>
<string></string>
<key>
BoardProduct
</key>
<string>
Mac-F221BEC8
</string>
<key>
BoardVersion
</key>
<string>
MacPro5,1
</string>
<key>
BoardSerialNumber
</key>
<string>
M000000000001
</string>
<key>
BoardAssetTag
</key>
<string></string>
<key>
BoardType
</key>
<integer>
11
</integer>
<key>
BoardLocationInChassis
</key>
<string>
Part Component
</string>
<key>
ChassisManufacturer
</key>
<string></string>
<key>
ChassisType
</key>
<integer>
7
</integer>
<key>
ChassisVersion
</key>
<string>
Mac-F221BEC8
</string>
<key>
ChassisSerialNumber
</key>
<string>
W0000000001
</string>
<key>
ChassisAssetTag
</key>
<string></string>
<key>
PlatformFeature
</key>
<integer>
0
</integer>
<key>
FirmwareFeatures
</key>
<data>
N+EP6AAAAAA=
</data>
<key>
FirmwareFeaturesMask
</key>
<data>
P/8f/wAAAAA=
</data>
<key>
ProcessorType
</key>
<integer>
0
</integer>
<key>
MemoryFormFactor
</key>
<integer>
9
</integer>
</dict>
<key>
UpdateDataHub
</key>
<true/>
<key>
UpdateNVRAM
</key>
...
...
@@ -489,6 +590,8 @@
</dict>
<key>
Quirks
</key>
<dict>
<key>
ExitBootServicesDelay
</key>
<integer>
0
</integer>
<key>
IgnoreInvalidFlexRatio
</key>
<false/>
<key>
IgnoreTextInGraphics
</key>
...
...
Platform/OpenCore/OpenCoreUefi.c
浏览文件 @
a5a4754e
...
...
@@ -30,7 +30,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/DevicePath.h>
#include <Protocol/GraphicsOutput.h>
STATIC
EFI_EVENT
m
ReleaseUsbOwnership
Event
;
STATIC
EFI_EVENT
m
OcExitBootServices
Event
;
STATIC
VOID
...
...
@@ -209,16 +209,33 @@ OcProvideConsoleGop (
STATIC
VOID
EFIAPI
Oc
ReleaseUsbOwnership
(
Oc
ExitBootServicesHandler
(
IN
EFI_EVENT
Event
,
IN
VOID
*
Context
)
{
EFI_STATUS
Status
;
EFI_STATUS
Status
;
OC_GLOBAL_CONFIG
*
Config
;
Status
=
ReleaseUsbOwnership
()
;
Config
=
(
OC_GLOBAL_CONFIG
*
)
Context
;
DEBUG
((
DEBUG_INFO
,
"OC: ReleaseUsbOwnership status - %r
\n
"
,
Status
));
if
(
Config
->
Uefi
.
Quirks
.
ReleaseUsbOwnership
)
{
Status
=
ReleaseUsbOwnership
();
DEBUG
((
DEBUG_INFO
,
"OC: ReleaseUsbOwnership status - %r
\n
"
,
Status
));
}
//
// FIXME: This is a very ugly hack for (at least) ASUS Z87-Pro.
// This board results in still waiting for root devices due to firmware
// performing some timer(?) actions in parallel to ExitBootServices.
// Some day we should figure out what exactly happens there.
// It is not the first time I face this, check AptioInputFix timer code:
// https://github.com/acidanthera/AptioFixPkg/blob/e54c185/Platform/AptioInputFix/Timer/AIT.c#L72-L73
// Roughly 5 seconds is good enough.
//
if
(
Config
->
Uefi
.
Quirks
.
ExitBootServicesDelay
>
0
)
{
gBS
->
Stall
(
Config
->
Uefi
.
Quirks
.
ExitBootServicesDelay
);
}
}
STATIC
...
...
@@ -269,13 +286,14 @@ OcLoadUefiSupport (
&
Config
->
Uefi
.
Quirks
.
RequestBootVarRouting
);
if
(
Config
->
Uefi
.
Quirks
.
ReleaseUsbOwnership
)
{
if
(
Config
->
Uefi
.
Quirks
.
ReleaseUsbOwnership
||
Config
->
Uefi
.
Quirks
.
ExitBootServicesDelay
>
0
)
{
gBS
->
CreateEvent
(
EVT_SIGNAL_EXIT_BOOT_SERVICES
,
TPL_NOTIFY
,
Oc
ReleaseUsbOwnership
,
NULL
,
&
m
ReleaseUsbOwnership
Event
Oc
ExitBootServicesHandler
,
Config
,
&
m
OcExitBootServices
Event
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录