From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.33169.1644840795681456047 for ; Mon, 14 Feb 2022 04:13:16 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: vivek.gautam@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 02D151424; Mon, 14 Feb 2022 04:13:15 -0800 (PST) Received: from usa.arm.com (a074945.blr.arm.com [10.162.16.71]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 593F53F718; Mon, 14 Feb 2022 04:13:13 -0800 (PST) From: "Vivek Kumar Gautam" To: devel@edk2.groups.io Cc: Sami Mujawar , Ard Biesheuvel , Leif Lindholm , Vivek Gautam Subject: [edk2-platforms][PATCH V1 0/6] Add non-discoverable IO block for Rd-N2 Date: Mon, 14 Feb 2022 17:43:01 +0530 Message-Id: <20220214121307.14608-1-vivek.gautam@arm.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Arm reference design platforms such as RD-N2 and RD-N2-Cfg1 have multiple I/O virtualization blocks that allow connecting PCIe root bus or non-PCIe (non-discoverable) devices to the system. Each of the I/O virtualization blocks consists of an Arm SMMUv3 compliant MMU-700 controller to handle address translations and a GIC-700 Interrupt Translation Service (ITS) to support message signaled interrupts (MSIs). Platforms can connect various devices to these I/O virtualization blocks through x4/x8/x16 ports exposed by the system. For example, there are two PL011 UART controllers and two PL330 DMA controllers connected to the non-PCIe IO virtualization block on RD-N2 and RD-N2-Cfg1 platforms. This patch series adds ACPI table support - SSDT and IORT, for Rd-N2 and Rd-N2-Cfg1 platforms to describe the devices connected devices to the I/O virtualization block. The patches also add suppot for platform DXE driver to initialize the UART controllers connected on Rd-N2 and Rd-N2-Cfg1 platforms. More details on how to obtain the platform software stack and how to test non-discoverable I/O virtualization blocks can be found on gitlab: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-do= cs/-/blob/master/docs/infra/common/iovirt_nonpcie.rst Link to github branch with the patches in this series - https://github.com/vivgau01/edk2-platforms/tree/topics/non-PCI-IO-virt-bl= k Shriram K (1): Platform/Sgi: Initialize additional uart controllers Vivek Gautam (5): Platform/Sgi: add PCDs for SMMUv3 base address and interrupts Platform/Sgi: add ssdt table for non-discoverable IO virtualization block Platform/Sgi: add helper macros for ITS, SMMUv3 and DMA IORT nodes Platform/Sgi: add IORT table for I/O virtualization block on RD-N2-Cfg1 Platform/Sgi: add IORT table for I/O virtualization block on RD-N2 Platform/ARM/SgiPkg/SgiPlatform.dec | 56 ++++- Platform/ARM/SgiPkg/SgiMemoryMap.dsc.inc | 6 +- Platform/ARM/SgiPkg/SgiMemoryMap2.dsc.inc | 49 ++++- Platform/ARM/SgiPkg/RdN2/RdN2.dsc | 4 + Platform/ARM/SgiPkg/RdN2Cfg1/RdN2Cfg1.dsc | 6 +- .../SgiPkg/AcpiTables/RdE1EdgeAcpiTables.inf | 8 +- .../SgiPkg/AcpiTables/RdN1EdgeAcpiTables.inf | 8 +- .../AcpiTables/RdN1EdgeX2AcpiTables.inf | 8 +- .../ARM/SgiPkg/AcpiTables/RdN2AcpiTables.inf | 58 ++++- .../SgiPkg/AcpiTables/RdN2Cfg1AcpiTables.inf | 57 ++++- .../ARM/SgiPkg/AcpiTables/RdV1AcpiTables.inf | 8 +- .../SgiPkg/AcpiTables/RdV1McAcpiTables.inf | 8 +- .../SgiPkg/AcpiTables/Sgi575AcpiTables.inf | 8 +- .../Drivers/PlatformDxe/PlatformDxe.inf | 7 +- .../Library/PlatformLib/PlatformLib.inf | 8 +- Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h | 197 ++++++++++++++++- .../SgiPkg/Drivers/PlatformDxe/PlatformDxe.c | 73 ++++++- .../Library/PlatformLib/PlatformLibMem.c | 19 +- Platform/ARM/SgiPkg/AcpiTables/Iort.aslc | 14 +- .../AcpiTables/RdN2/IortNonPciIoVirtBlk.aslc | 58 +++++ .../RdN2Cfg1/IortNonPciIoVirtBlk.aslc | 58 +++++ .../SgiPkg/AcpiTables/SsdtNonPciIoVirtBlk.asl | 203 ++++++++++++++++++ 22 files changed, 890 insertions(+), 31 deletions(-) create mode 100644 Platform/ARM/SgiPkg/AcpiTables/RdN2/IortNonPciIoVirtB= lk.aslc create mode 100644 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/IortNonPciIoV= irtBlk.aslc create mode 100644 Platform/ARM/SgiPkg/AcpiTables/SsdtNonPciIoVirtBlk.as= l --=20 2.17.1