[edk2-devel] [PATCH v1 4/4] DynamicTablesPkg: Set the Access size for the DBG2 table

Joey Gouly posted 4 patches 4 years, 10 months ago
[edk2-devel] [PATCH v1 4/4] DynamicTablesPkg: Set the Access size for the DBG2 table
Posted by Joey Gouly 4 years, 10 months ago
The DBG2 table generator set the access size for the UART to
DWORD (4 bytes) by default. However, according to Section B
Generic UART, Arm Base System Architecture 1.0, Platform
Design Document, a Generic UART can have BYTE, WORD or DWORD
access sizes. To address this an AccessSize field has been
introduced in CM_ARM_SERIAL_PORT_INFO object.

This patch updates the DBG2 generator to setup the AccessSize
field in the Generic Address Structure (GAS) for the UART in
the DBG2 table with information provided by the platform.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
---
 DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c | 24 +++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
index d902bbc8463921624f1a6333e8d6bd84c6cb38f2..a7508d4a8834fd2038946a62de39e9cd0894bf79 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
@@ -1,7 +1,7 @@
 /** @file
   DBG2 Table Generator
 
-  Copyright (c) 2017 - 2020, Arm Limited. All rights reserved.<BR>
+  Copyright (c) 2017 - 2021, Arm Limited. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -420,6 +420,28 @@ BuildDbg2TableEx (
   AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.Address =
     SerialPortInfo->BaseAddress;
 
+  // Set the access size
+  if (SerialPortInfo->AccessSize >= EFI_ACPI_6_3_QWORD) {
+    Status = EFI_INVALID_PARAMETER;
+    DEBUG ((
+      DEBUG_ERROR,
+      "ERROR: DBG2: Access size must be <= 3 (DWORD). Status = %r\n",
+      Status
+      ));
+    goto error_handler;
+  } else if (SerialPortInfo->AccessSize == EFI_ACPI_6_3_UNDEFINED) {
+    // 0 Undefined (legacy reasons)
+    // Default to DWORD access size as the access
+    // size field was introduced at a later date
+    // and some ConfigurationManager implementations
+    // may not be providing this field data
+    AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.AccessSize =
+      EFI_ACPI_6_3_DWORD;
+  } else {
+    AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.AccessSize =
+      SerialPortInfo->AccessSize;
+  }
+
   // Update the serial port subtype
   AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].Dbg2Device.PortSubtype =
     SerialPortInfo->PortSubtype;
-- 
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#74126): https://edk2.groups.io/g/devel/message/74126
Mute This Topic: https://groups.io/mt/82115095/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [PATCH v1 4/4] DynamicTablesPkg: Set the Access size for the DBG2 table
Posted by Sami Mujawar 4 years, 9 months ago
Hi Joey,

This patch looks good to me.

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>

Regards,

Sami Mujawar

On 15/04/2021, 13:17, "Joey Gouly" <joey.gouly@arm.com> wrote:

    The DBG2 table generator set the access size for the UART to
    DWORD (4 bytes) by default. However, according to Section B
    Generic UART, Arm Base System Architecture 1.0, Platform
    Design Document, a Generic UART can have BYTE, WORD or DWORD
    access sizes. To address this an AccessSize field has been
    introduced in CM_ARM_SERIAL_PORT_INFO object.

    This patch updates the DBG2 generator to setup the AccessSize
    field in the Generic Address Structure (GAS) for the UART in
    the DBG2 table with information provided by the platform.

    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    ---
     DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c | 24 +++++++++++++++++++-
     1 file changed, 23 insertions(+), 1 deletion(-)

    diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
    index d902bbc8463921624f1a6333e8d6bd84c6cb38f2..a7508d4a8834fd2038946a62de39e9cd0894bf79 100644
    --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
    +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c
    @@ -1,7 +1,7 @@
     /** @file
       DBG2 Table Generator

    -  Copyright (c) 2017 - 2020, Arm Limited. All rights reserved.<BR>
    +  Copyright (c) 2017 - 2021, Arm Limited. All rights reserved.<BR>

       SPDX-License-Identifier: BSD-2-Clause-Patent

    @@ -420,6 +420,28 @@ BuildDbg2TableEx (
       AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.Address =
         SerialPortInfo->BaseAddress;

    +  // Set the access size
    +  if (SerialPortInfo->AccessSize >= EFI_ACPI_6_3_QWORD) {
    +    Status = EFI_INVALID_PARAMETER;
    +    DEBUG ((
    +      DEBUG_ERROR,
    +      "ERROR: DBG2: Access size must be <= 3 (DWORD). Status = %r\n",
    +      Status
    +      ));
    +    goto error_handler;
    +  } else if (SerialPortInfo->AccessSize == EFI_ACPI_6_3_UNDEFINED) {
    +    // 0 Undefined (legacy reasons)
    +    // Default to DWORD access size as the access
    +    // size field was introduced at a later date
    +    // and some ConfigurationManager implementations
    +    // may not be providing this field data
    +    AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.AccessSize =
    +      EFI_ACPI_6_3_DWORD;
    +  } else {
    +    AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].BaseAddressRegister.AccessSize =
    +      SerialPortInfo->AccessSize;
    +  }
    +
       // Update the serial port subtype
       AcpiDbg2.Dbg2DeviceInfo[INDEX_DBG_PORT0].Dbg2Device.PortSubtype =
         SerialPortInfo->PortSubtype;
    -- 
    Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#74207): https://edk2.groups.io/g/devel/message/74207
Mute This Topic: https://groups.io/mt/82115095/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-