* [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