From 11808d83827a9cf633362eaa528e05fbb8bf6fe2 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Sat, 20 Apr 2019 12:38:56 +0300 Subject: [PATCH] OpenCoreAcpi: Put ACPI -> Add to a dictionary --- Docs/Configuration.pdf | Bin 261131 -> 261210 bytes Docs/Configuration.tex | 42 +++++++++++++++++--- Docs/Sample.plist | 36 +++++++++++++++-- Platform/OpenCore/OpenCore.c | 66 +++++++++++++++++++++++++++++++ Platform/OpenCore/OpenCoreAcpi.c | 15 ++++--- 5 files changed, 144 insertions(+), 15 deletions(-) diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index cfe4659a93c85bbbfd56b6fd6ecf74e43cb5ab88..c05fd9790a4c3e8769d42436bf2743f23ad97148 100644 GIT binary patch delta 30770 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 diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex index 1c8f7513..af2c0149 100644 --- a/Docs/Configuration.tex +++ b/Docs/Configuration.tex @@ -513,12 +513,9 @@ some of those are provided as a part of OpenCore. \textbf{Description}: Load selected tables from \texttt{OC/ACPI/Custom} directory. - Designed to be filled with string filenames meant to be loaded as ACPI - tables. Example values include \texttt{DSDT.aml}, \texttt{SSDT-8.aml}, - \texttt{SSDT-USBX.aml}, etc. ACPI table load order follows the item order in the array. + Designed to be filled with \texttt{plist\ dict} values, describing each block entry. + See \hyperref[acpipropsadd]{Add Properties} section below. - \textbf{Note}: All values but \texttt{DSDT.aml} insert new tables into ACPI stack. - \texttt{DSDT.aml}, unlike the rest, performs replacement of DSDT table. \item \texttt{Block}\\ \textbf{Type}: \texttt{plist\ array}\\ @@ -546,6 +543,41 @@ some of those are provided as a part of OpenCore. \end{enumerate} +\subsection{Add Properties}\label{acpipropsadd} + +\begin{enumerate} +\item + \texttt{Comment}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Default value}: Empty string\\ + \textbf{Description}: Arbitrary ASCII string used to provide human readable + reference for the entry. It is implementation defined whether this value is + used. + +\item + \texttt{Enabled}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Default value}: \texttt{false}\\ + \textbf{Description}: This ACPI table will not be removed unless set to + \texttt{true}. + +\item + \texttt{Path}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Default value}: Empty string\\ + \textbf{Description}: File paths meant to be loaded as ACPI tables. + Example values include \texttt{DSDT.aml}, \texttt{SubDir/SSDT-8.aml}, + \texttt{SSDT-USBX.aml}, etc. + + ACPI table load order follows the item order in the array. All ACPI tables + load from \texttt{OC/ACPI/Custom} directory. + + \textbf{Note}: All tables but tables with \texttt{DSDT} table identifier + (determined by parsing data not by filename) insert new tables into ACPI stack. + \texttt{DSDT}, unlike the rest, performs replacement of DSDT table. + +\end{enumerate} + \subsection{Block Properties}\label{acpipropsblock} \begin{enumerate} diff --git a/Docs/Sample.plist b/Docs/Sample.plist index 9e6db67e..1430972e 100644 --- a/Docs/Sample.plist +++ b/Docs/Sample.plist @@ -10,10 +10,38 @@ Add - DSDT.aml - SSDT.aml - SSDT-1.aml - SSDT-ACPI.aml + + Enabled + + Comment + DSDT + Path + DSDT.aml + + + Enabled + + Comment + Fix 123 + Path + SSDT.aml + + + Enabled + + Comment + Fix 456 + Path + SSDT-1.aml + + + Enabled + + Comment + + Path + SSDT-ACPI.aml + Block diff --git a/Platform/OpenCore/OpenCore.c b/Platform/OpenCore/OpenCore.c index cfd980bb..4fee2f36 100644 --- a/Platform/OpenCore/OpenCore.c +++ b/Platform/OpenCore/OpenCore.c @@ -232,6 +232,70 @@ OcMain ( } } +STATIC +VOID +RunStorageTests ( + IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem + ) +{ + EFI_STATUS Status; + EFI_FILE_PROTOCOL *RootVolume; + EFI_FILE_PROTOCOL *FileHandle; + + DEBUG ((DEBUG_WARN, "Running FS tests...\n")); + + Status = FileSystem->OpenVolume (FileSystem, &RootVolume); + + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Cannot open root volume - %r\n", Status)); + return; + } + + STATIC CONST CHAR16 *Paths[] = { + L"EFI", + L"\\EFI", + L"EFI\\", + L"\\EFI\\", + L"EFI\\OC", + L"\\EFI\\OC", + L"EFI\\OC\\", + L"\\EFI\\OC\\", + L"EFI\\OC\\config.plist", + L"\\EFI\\OC\\config.plist", + }; + + for (UINTN Index = 0; Index < ARRAY_SIZE (Paths); ++Index) { + FileHandle = NULL; + Status = RootVolume->Open ( + RootVolume, + &FileHandle, + (CHAR16 *) Paths[Index], + EFI_FILE_MODE_READ, + 0 + ); + + DEBUG (( + DEBUG_WARN, + "Testing (%u/%u) %s - %r (%p)\n", + (UINT32) Index+1, + (UINT32) ARRAY_SIZE (Paths), + Paths[Index], + Status, + FileHandle + )); + + if (!EFI_ERROR (Status)) { + FileHandle->Close (FileHandle); + } + } + + RootVolume->Close (RootVolume); + + DEBUG ((DEBUG_WARN, "Done tests, waiting 5 seconds.\n")); + + gBS->Stall (5000000); +} + STATIC VOID EFIAPI @@ -245,6 +309,8 @@ OcBootstrapRerun ( DEBUG ((DEBUG_INFO, "OC: ReRun executed!\n")); + RunStorageTests (FileSystem); + ++This->NestedCount; if (This->NestedCount == 1) { diff --git a/Platform/OpenCore/OpenCoreAcpi.c b/Platform/OpenCore/OpenCoreAcpi.c index beb0d014..aeeb5b99 100644 --- a/Platform/OpenCore/OpenCoreAcpi.c +++ b/Platform/OpenCore/OpenCoreAcpi.c @@ -35,17 +35,20 @@ OcAcpiAddTables ( UINT8 *TableData; UINT32 TableDataLength; UINT32 Index; - CONST CHAR8 *Table; + OC_ACPI_ADD_ENTRY *Table; + CONST CHAR8 *TablePath; CHAR16 FullPath[128]; for (Index = 0; Index < Config->Acpi.Add.Count; ++Index) { - Table = OC_BLOB_GET (Config->Acpi.Add.Values[Index]); + Table = Config->Acpi.Add.Values[Index]; + TablePath = OC_BLOB_GET (&Table->Path); - if (Table[0] == '\0') { + if (!Table->Enabled || TablePath[0] == '\0') { + DEBUG ((DEBUG_INFO, "OC: Skipping add ACPI %a (%d)\n", TablePath, Table->Enabled)); continue; } - UnicodeSPrint (FullPath, sizeof (FullPath), OPEN_CORE_ACPI_PATH "%a", Table); + UnicodeSPrint (FullPath, sizeof (FullPath), OPEN_CORE_ACPI_PATH "%a", TablePath); UnicodeUefiSlashes (FullPath); TableData = OcStorageReadFileUnicode (Storage, FullPath, &TableDataLength); @@ -54,7 +57,7 @@ OcAcpiAddTables ( DEBUG (( DEBUG_WARN, "OC: Failed to find ACPI %a\n", - Table + TablePath )); continue; } @@ -65,7 +68,7 @@ OcAcpiAddTables ( DEBUG (( DEBUG_WARN, "OC: Failed to add ACPI %a - %r\n", - Table, + TablePath, Status )); }