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 <dha...@rivosinc.com> 
Sent: Thursday, September 28, 2023 2:45 PM
To: devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.w...@intel.com>; Gao, Liming 
<gaolim...@byosoft.com.cn>; Liu, Zhiguang <zhiguang....@intel.com>; Bi, Dandan 
<dandan...@intel.com>
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 <jian.j.w...@intel.com>
Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang....@intel.com>
Cc: Dandan Bi <dandan...@intel.com>
Signed-off-by: Dhaval Sharma <dha...@rivosinc.com>
---
 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: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to