The changes looks good to me.

One minor comment about the coding style:
Could we make the "else if" at the same line with brace "}", which is aligned 
with current edk2 coding style, rather than in a new line ?  Thanks.

Like:
} else if (((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *)ChildTable)->Dsdt != 
0) {

Rather than:
}

 else if (((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *)ChildTable)->Dsdt != 0)



Thanks,
Dandan

-----Original Message-----
From: Dhaval <[email protected]> 
Sent: Thursday, September 28, 2023 2:45 PM
To: [email protected]
Cc: Wang, Jian J <[email protected]>; Gao, Liming 
<[email protected]>; Liu, Zhiguang <[email protected]>; Bi, Dandan 
<[email protected]>
Subject: [PATCH v1 1/1] MdeModulePkg: Fix issue with ACPI table creation

As per spec if xDSDT is avaialble, it should be used first.
Handle required flow when xDSDT is abscent or present.

Test: Tested on RISCV64 Qemu platform with xDSDT and booted to linux kernel.

Cc: Jian J Wang <[email protected]>
Cc: Liming Gao <[email protected]>
Cc: Zhiguang Liu <[email protected]>
Cc: Dandan Bi <[email protected]>
Signed-off-by: Dhaval Sharma <[email protected]>
---
 MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 15 
++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c 
b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
index e09bc9b704f5..d153c96a6bdb 100644
--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
+++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
@@ -1892,7 +1892,20 @@ InstallAcpiTableFromHob (
           }         } -        if (((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE 
*)ChildTable)->Dsdt != 0) {+        //+        // First check if xDSDT is 
available that is preferred+        //+        if 
(((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *)ChildTable)->XDsdt != 0) {+      
    TableToInstall = (VOID *)(UINTN)((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE 
*)ChildTable)->XDsdt;+          Status         = AddTableToList 
(AcpiTableInstance, TableToInstall, TRUE, Version, TRUE, &TableKey);+          
if (EFI_ERROR (Status)) {+            DEBUG ((DEBUG_ERROR, 
"InstallAcpiTableFromHob: Fail to add ACPI table xDSDT\n"));+            
ASSERT_EFI_ERROR (Status);+            break;+          }+        }++        
else if (((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *)ChildTable)->Dsdt != 0) 
{           TableToInstall = (VOID 
*)(UINTN)((EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE *)ChildTable)->Dsdt;       
    Status         = AddTableToList (AcpiTableInstance, TableToInstall, TRUE, 
Version, TRUE, &TableKey);           if (EFI_ERROR (Status)) {-- 
2.39.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#110899): https://edk2.groups.io/g/devel/message/110899
Mute This Topic: https://groups.io/mt/101633356/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to