Thread (34 messages) 34 messages, 7 authors, 2021-04-15

Re: [RFC PATCH v2 1/8] ACPICA: IORT: Update for revision E

From: Jon Nettleton <hidden>
Date: 2021-03-25 08:44:45
Also in: linux-acpi, linux-iommu

On Mon, Mar 22, 2021 at 11:37 AM Shameerali Kolothum Thodi
[off-list ref] wrote:
[+]

Hi Erik,

As this is now just merged ino acpica-master and based on the discussion we had here,

https://github.com/acpica/acpica/pull/638

I had a discussion with ARM folks(Lorenzo) in the linaro-open-discussions call and
can confirm that the IORT Revision E is not the final specification and has some issues
which is now corrected in the latest E.b revision[1]. Also there are no current users
for the Rev E and it may not be a good idea to push this version into the Linux kernel
or elsewhere.
Well it was a released revision, although it was found to have issues.
Currently
HoneyComb Systems Ready certified firmware does include support for this table,
although incomplete.  Without agreement on mainline support I am fine to update
to the latest spec bump.
So could you please revert the merge and I am planning to work on the E.b soon.
Please let me know if I need to explicitly send a revert pull request or not.
Can you please CC. me on your next release.  I was planning on spending time
on this regardless.  I already have a patchset for the fsl-mc-bus driver that
needs to change in order to function properly with RMR support.

Thanks.
Thanks,
Shameer

1. https://developer.arm.com/documentation/den0049/latest/
quoted
-----Original Message-----
From: iommu [mailto:iommu-bounces@lists.linux-foundation.org] On Behalf Of
Shameer Kolothum
Sent: 19 November 2020 12:12
To: linux-arm-kernel@lists.infradead.org; linux-acpi@vger.kernel.org;
iommu@lists.linux-foundation.org; devel@acpica.org
Cc: Linuxarm <redacted>; steven.price@arm.com; Guohanjun
(Hanjun Guo) [off-list ref]; Sami.Mujawar@arm.com;
robin.murphy@arm.com; wanghuiqiang [off-list ref]
Subject: [RFC PATCH v2 1/8] ACPICA: IORT: Update for revision E

IORT revision E contains a few additions like,
    -Added an identifier field in the node descriptors to aid table
     cross-referencing.
    -Introduced the Reserved Memory Range(RMR) node. This is used
     to describe memory ranges that are used by endpoints and requires
     a unity mapping in SMMU.
    -Introduced a flag in the RC node to express support for PRI.

Signed-off-by: Shameer Kolothum <redacted>
---
 include/acpi/actbl2.h | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index
ec66779cb193..274fce7b5c01 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -68,7 +68,7 @@
  * IORT - IO Remapping Table
  *
  * Conforms to "IO Remapping Table System Software on ARM Platforms",
- * Document number: ARM DEN 0049D, March 2018
+ * Document number: ARM DEN 0049E, June 2020
  *
****************************************************************
**************/
@@ -86,7 +86,8 @@ struct acpi_iort_node {
      u8 type;
      u16 length;
      u8 revision;
-     u32 reserved;
+     u16 reserved;
+     u16 identifier;
      u32 mapping_count;
      u32 mapping_offset;
      char node_data[1];
@@ -100,7 +101,8 @@ enum acpi_iort_node_type {
      ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02,
      ACPI_IORT_NODE_SMMU = 0x03,
      ACPI_IORT_NODE_SMMU_V3 = 0x04,
-     ACPI_IORT_NODE_PMCG = 0x05
+     ACPI_IORT_NODE_PMCG = 0x05,
+     ACPI_IORT_NODE_RMR = 0x06,
 };

 struct acpi_iort_id_mapping {
@@ -167,10 +169,10 @@ struct acpi_iort_root_complex {
      u8 reserved[3];         /* Reserved, must be zero */
 };

-/* Values for ats_attribute field above */
+/* Masks for ats_attribute field above */

-#define ACPI_IORT_ATS_SUPPORTED         0x00000001   /* The root
complex supports ATS */
-#define ACPI_IORT_ATS_UNSUPPORTED       0x00000000   /* The root
complex doesn't support ATS */
+#define ACPI_IORT_ATS_SUPPORTED         (1)  /* The root complex
supports ATS */
+#define ACPI_IORT_PRI_SUPPORTED         (1<<1)       /* The root complex
supports PRI */

 struct acpi_iort_smmu {
      u64 base_address;       /* SMMU base address */
@@ -241,6 +243,17 @@ struct acpi_iort_pmcg {
      u64 page1_base_address;
 };

+struct acpi_iort_rmr {
+     u32 rmr_count;
+     u32 rmr_offset;
+};
+
+struct acpi_iort_rmr_desc {
+     u64 base_address;
+     u64 length;
+     u32 reserved;
+};
+
/***************************************************************
****************
  *
  * IVRS - I/O Virtualization Reporting Structure
--
2.17.1

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help