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