public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources
@ 2023-09-21 20:10 Jeff Brasen via groups.io
  2023-09-21 20:10 ` [edk2-devel] [PATCH v2 1/2] DynamicTablesPkg: AML Code generation for I/O ranges Jeff Brasen via groups.io
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jeff Brasen via groups.io @ 2023-09-21 20:10 UTC (permalink / raw)
  To: devel
  Cc: pierre.gondois, Sami.Mujawar, quic_llindhol, ardb+tianocore,
	Jeff Brasen

Use AmlCodeGenRdQWordIo() to generate the I/O range in _CRS instead of
AmlCodeGenRdDWordIo() to cater to the scenarios where 64-bit 
addresses can be used to generate I/O packets over the PCIe bus.

Changes:
v2 - Rebased and set transferEncoding = 8bit

Vidya Sagar (2):
  DynamicTablesPkg: AML Code generation for I/O ranges
  DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range

 .../Include/Library/AmlLib/AmlLib.h           | 67 ++++++++++++++
 .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    |  2 +-
 .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 90 +++++++++++++++++++
 3 files changed, 158 insertions(+), 1 deletion(-)

-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108969): https://edk2.groups.io/g/devel/message/108969
Mute This Topic: https://groups.io/mt/101508452/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [edk2-devel] [PATCH v2 1/2] DynamicTablesPkg: AML Code generation for I/O ranges
  2023-09-21 20:10 [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources Jeff Brasen via groups.io
@ 2023-09-21 20:10 ` Jeff Brasen via groups.io
  2023-09-21 20:10 ` [edk2-devel] [PATCH v2 2/2] DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range Jeff Brasen via groups.io
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jeff Brasen via groups.io @ 2023-09-21 20:10 UTC (permalink / raw)
  To: devel
  Cc: pierre.gondois, Sami.Mujawar, quic_llindhol, ardb+tianocore,
	Vidya Sagar, Jeff Brasen

From: Vidya Sagar <vidyas@nvidia.com>

Add helper functions to generate AML Resource Data describing I/O
ranges of four words long. API AmlCodeGenRdQWordIo () is exposed.

Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
---
 .../Include/Library/AmlLib/AmlLib.h           | 67 ++++++++++++++
 .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 90 +++++++++++++++++++
 2 files changed, 157 insertions(+)

diff --git a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
index 9210c5091548..8e24cecdd77b 100644
--- a/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
+++ b/DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
@@ -683,6 +683,73 @@ AmlCodeGenRdWordBusNumber (
   OUT       AML_DATA_NODE_HANDLE    *NewRdNode  OPTIONAL
   );
 
+/** Code generation for the "QWordIO ()" ASL function.
+
+  The Resource Data effectively created is a QWord Address Space Resource
+  Data. Cf ACPI 6.4:
+   - s6.4.3.5.1 "QWord Address Space Descriptor".
+   - s19.6.109 "QWordIO".
+
+  The created resource data node can be:
+   - appended to the list of resource data elements of the NameOpNode.
+     In such case NameOpNode must be defined by a the "Name ()" ASL statement
+     and initially contain a "ResourceTemplate ()".
+   - returned through the NewRdNode parameter.
+
+  See ACPI 6.4 spec, s19.6.109 for more.
+
+  @param [in]  IsResourceConsumer   ResourceUsage parameter.
+  @param [in]  IsMinFixed           Minimum address is fixed.
+  @param [in]  IsMaxFixed           Maximum address is fixed.
+  @param [in]  IsPosDecode          Decode parameter
+  @param [in]  IsaRanges            Possible values are:
+                                     0-Reserved
+                                     1-NonISAOnly
+                                     2-ISAOnly
+                                     3-EntireRange
+  @param [in]  AddressGranularity   Address granularity.
+  @param [in]  AddressMinimum       Minimum address.
+  @param [in]  AddressMaximum       Maximum address.
+  @param [in]  AddressTranslation   Address translation.
+  @param [in]  RangeLength          Range length.
+  @param [in]  ResourceSourceIndex  Resource Source index.
+                                    Unused. Must be 0.
+  @param [in]  ResourceSource       Resource Source.
+                                    Unused. Must be NULL.
+  @param [in]  IsDenseTranslation   TranslationDensity parameter.
+  @param [in]  IsTypeStatic         TranslationType parameter.
+  @param [in]  NameOpNode           NameOp object node defining a named object.
+                                    If provided, append the new resource data
+                                    node to the list of resource data elements
+                                    of this node.
+  @param [out] NewRdNode            If provided and success,
+                                    contain the created node.
+
+  @retval EFI_SUCCESS             The function completed successfully.
+  @retval EFI_INVALID_PARAMETER   Invalid parameter.
+  @retval EFI_OUT_OF_RESOURCES    Could not allocate memory.
+**/
+EFI_STATUS
+EFIAPI
+AmlCodeGenRdQWordIo (
+  IN        BOOLEAN IsResourceConsumer,
+  IN        BOOLEAN IsMinFixed,
+  IN        BOOLEAN IsMaxFixed,
+  IN        BOOLEAN IsPosDecode,
+  IN        UINT8 IsaRanges,
+  IN        UINT64 AddressGranularity,
+  IN        UINT64 AddressMinimum,
+  IN        UINT64 AddressMaximum,
+  IN        UINT64 AddressTranslation,
+  IN        UINT64 RangeLength,
+  IN        UINT8 ResourceSourceIndex,
+  IN  CONST CHAR8 *ResourceSource,
+  IN        BOOLEAN IsDenseTranslation,
+  IN        BOOLEAN IsTypeStatic,
+  IN        AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL
+  OUT       AML_DATA_NODE_HANDLE    *NewRdNode  OPTIONAL
+  );
+
 /** Code generation for the "QWordMemory ()" ASL function.
 
   The Resource Data effectively created is a QWord Address Space Resource
diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
index 4ca63ccd2396..9c6700b9e08c 100644
--- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
+++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen.c
@@ -1012,6 +1012,96 @@ AmlCodeGenRdQWordSpace (
   return LinkRdNode (RdNode, NameOpNode, NewRdNode);
 }
 
+/** Code generation for the "QWordIO ()" ASL function.
+
+  The Resource Data effectively created is a QWord Address Space Resource
+  Data. Cf ACPI 6.4:
+   - s6.4.3.5.1 "QWord Address Space Descriptor".
+   - s19.6.109 "QWordIO".
+
+  The created resource data node can be:
+   - appended to the list of resource data elements of the NameOpNode.
+     In such case NameOpNode must be defined by a the "Name ()" ASL statement
+     and initially contain a "ResourceTemplate ()".
+   - returned through the NewRdNode parameter.
+
+  See ACPI 6.4 spec, s19.6.109 for more.
+
+  @param [in]  IsResourceConsumer   ResourceUsage parameter.
+  @param [in]  IsMinFixed           Minimum address is fixed.
+  @param [in]  IsMaxFixed           Maximum address is fixed.
+  @param [in]  IsPosDecode          Decode parameter
+  @param [in]  IsaRanges            Possible values are:
+                                     0-Reserved
+                                     1-NonISAOnly
+                                     2-ISAOnly
+                                     3-EntireRange
+  @param [in]  AddressGranularity   Address granularity.
+  @param [in]  AddressMinimum       Minimum address.
+  @param [in]  AddressMaximum       Maximum address.
+  @param [in]  AddressTranslation   Address translation.
+  @param [in]  RangeLength          Range length.
+  @param [in]  ResourceSourceIndex  Resource Source index.
+                                    Unused. Must be 0.
+  @param [in]  ResourceSource       Resource Source.
+                                    Unused. Must be NULL.
+  @param [in]  IsDenseTranslation   TranslationDensity parameter.
+  @param [in]  IsTypeStatic         TranslationType parameter.
+  @param [in]  NameOpNode           NameOp object node defining a named object.
+                                    If provided, append the new resource data
+                                    node to the list of resource data elements
+                                    of this node.
+  @param [out] NewRdNode            If provided and success,
+                                    contain the created node.
+
+  @retval EFI_SUCCESS             The function completed successfully.
+  @retval EFI_INVALID_PARAMETER   Invalid parameter.
+  @retval EFI_OUT_OF_RESOURCES    Could not allocate memory.
+**/
+EFI_STATUS
+EFIAPI
+AmlCodeGenRdQWordIo (
+  IN        BOOLEAN IsResourceConsumer,
+  IN        BOOLEAN IsMinFixed,
+  IN        BOOLEAN IsMaxFixed,
+  IN        BOOLEAN IsPosDecode,
+  IN        UINT8 IsaRanges,
+  IN        UINT64 AddressGranularity,
+  IN        UINT64 AddressMinimum,
+  IN        UINT64 AddressMaximum,
+  IN        UINT64 AddressTranslation,
+  IN        UINT64 RangeLength,
+  IN        UINT8 ResourceSourceIndex,
+  IN  CONST CHAR8 *ResourceSource,
+  IN        BOOLEAN IsDenseTranslation,
+  IN        BOOLEAN IsTypeStatic,
+  IN        AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL
+  OUT       AML_DATA_NODE_HANDLE    *NewRdNode  OPTIONAL
+  )
+{
+  return AmlCodeGenRdQWordSpace (
+           ACPI_ADDRESS_SPACE_TYPE_IO,
+           IsResourceConsumer,
+           IsPosDecode,
+           IsMinFixed,
+           IsMaxFixed,
+           RdIoRangeSpecificFlags (
+             IsaRanges,
+             IsDenseTranslation,
+             IsTypeStatic
+             ),
+           AddressGranularity,
+           AddressMinimum,
+           AddressMaximum,
+           AddressTranslation,
+           RangeLength,
+           ResourceSourceIndex,
+           ResourceSource,
+           NameOpNode,
+           NewRdNode
+           );
+}
+
 /** Code generation for the "QWordMemory ()" ASL function.
 
   The Resource Data effectively created is a QWord Address Space Resource
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108970): https://edk2.groups.io/g/devel/message/108970
Mute This Topic: https://groups.io/mt/101508458/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [edk2-devel] [PATCH v2 2/2] DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range
  2023-09-21 20:10 [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources Jeff Brasen via groups.io
  2023-09-21 20:10 ` [edk2-devel] [PATCH v2 1/2] DynamicTablesPkg: AML Code generation for I/O ranges Jeff Brasen via groups.io
@ 2023-09-21 20:10 ` Jeff Brasen via groups.io
  2023-09-22  9:08 ` [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources PierreGondois
  2023-09-22 14:10 ` Sami Mujawar
  3 siblings, 0 replies; 5+ messages in thread
From: Jeff Brasen via groups.io @ 2023-09-21 20:10 UTC (permalink / raw)
  To: devel
  Cc: pierre.gondois, Sami.Mujawar, quic_llindhol, ardb+tianocore,
	Vidya Sagar, Jeff Brasen

From: Vidya Sagar <vidyas@nvidia.com>

Use AmlCodeGenRdQWordIo() to generate the I/O range in _CRS instead of
AmlCodeGenRdDWordIo() to cater to the scenarios where 64-bit addresses
can be used to generate I/O packets over the PCIe bus.

Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
---
 .../Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
index c54ae6f551f6..9ddaddc198fa 100644
--- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
+++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c
@@ -540,7 +540,7 @@ GeneratePciCrs (
 
     switch (AddrMapInfo->SpaceCode) {
       case PCI_SS_IO:
-        Status = AmlCodeGenRdDWordIo (
+        Status = AmlCodeGenRdQWordIo (
                    FALSE,
                    TRUE,
                    TRUE,
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108971): https://edk2.groups.io/g/devel/message/108971
Mute This Topic: https://groups.io/mt/101508459/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources
  2023-09-21 20:10 [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources Jeff Brasen via groups.io
  2023-09-21 20:10 ` [edk2-devel] [PATCH v2 1/2] DynamicTablesPkg: AML Code generation for I/O ranges Jeff Brasen via groups.io
  2023-09-21 20:10 ` [edk2-devel] [PATCH v2 2/2] DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range Jeff Brasen via groups.io
@ 2023-09-22  9:08 ` PierreGondois
  2023-09-22 14:10 ` Sami Mujawar
  3 siblings, 0 replies; 5+ messages in thread
From: PierreGondois @ 2023-09-22  9:08 UTC (permalink / raw)
  To: Jeff Brasen, devel; +Cc: Sami.Mujawar, quic_llindhol, ardb+tianocore

Hi Jeff,

On 9/21/23 22:10, Jeff Brasen wrote:
> Use AmlCodeGenRdQWordIo() to generate the I/O range in _CRS instead of
> AmlCodeGenRdDWordIo() to cater to the scenarios where 64-bit
> addresses can be used to generate I/O packets over the PCIe bus.
> 
> Changes:
> v2 - Rebased and set transferEncoding = 8bit

The patches applied cleanly, thanks!

Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>

> 
> Vidya Sagar (2):
>    DynamicTablesPkg: AML Code generation for I/O ranges
>    DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range
> 
>   .../Include/Library/AmlLib/AmlLib.h           | 67 ++++++++++++++
>   .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    |  2 +-
>   .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 90 +++++++++++++++++++
>   3 files changed, 158 insertions(+), 1 deletion(-)
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108987): https://edk2.groups.io/g/devel/message/108987
Mute This Topic: https://groups.io/mt/101508452/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources
  2023-09-21 20:10 [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources Jeff Brasen via groups.io
                   ` (2 preceding siblings ...)
  2023-09-22  9:08 ` [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources PierreGondois
@ 2023-09-22 14:10 ` Sami Mujawar
  3 siblings, 0 replies; 5+ messages in thread
From: Sami Mujawar @ 2023-09-22 14:10 UTC (permalink / raw)
  To: Jeff Brasen, devel
  Cc: pierre.gondois, quic_llindhol, ardb+tianocore, nd@arm.com

Hi Jeff,

Thank out for this patch series.

These changes look good to me.

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

Regards,

Sami Mujawar


On 21/09/2023 09:10 pm, Jeff Brasen wrote:
> Use AmlCodeGenRdQWordIo() to generate the I/O range in _CRS instead of
> AmlCodeGenRdDWordIo() to cater to the scenarios where 64-bit
> addresses can be used to generate I/O packets over the PCIe bus.
>
> Changes:
> v2 - Rebased and set transferEncoding = 8bit
>
> Vidya Sagar (2):
>    DynamicTablesPkg: AML Code generation for I/O ranges
>    DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range
>
>   .../Include/Library/AmlLib/AmlLib.h           | 67 ++++++++++++++
>   .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c    |  2 +-
>   .../AmlLib/CodeGen/AmlResourceDataCodeGen.c   | 90 +++++++++++++++++++
>   3 files changed, 158 insertions(+), 1 deletion(-)
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108990): https://edk2.groups.io/g/devel/message/108990
Mute This Topic: https://groups.io/mt/101508452/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-09-22 14:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-21 20:10 [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources Jeff Brasen via groups.io
2023-09-21 20:10 ` [edk2-devel] [PATCH v2 1/2] DynamicTablesPkg: AML Code generation for I/O ranges Jeff Brasen via groups.io
2023-09-21 20:10 ` [edk2-devel] [PATCH v2 2/2] DynamicTablesPkg: AcpiSsdtPcieLibArm: Use QWord todescribe I/O range Jeff Brasen via groups.io
2023-09-22  9:08 ` [edk2-devel] [PATCH v2 0/2] Add support for PCI IO using Qword resources PierreGondois
2023-09-22 14:10 ` Sami Mujawar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox