diff mbox series

[RFC,1/4] ACPICA: IORT: Update for revision E

Message ID 20201027112646.44680-2-shameerali.kolothum.thodi@huawei.com
State Accepted
Commit 8e1fdd7f1655c538fb017d0493c80d02cbc8d8d4
Headers show
Series ACPI/IORT: Support for IORT RMR node | expand

Commit Message

Shameerali Kolothum Thodi Oct. 27, 2020, 11:26 a.m. UTC
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 <shameerali.kolothum.thodi@huawei.com>
---
 -This should be updated through acpica git. I have sent out a pull
  request for the same here,
  https://github.com/acpica/acpica/pull/638

Please help to review.
---
 include/acpi/actbl2.h | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

Comments

Shameerali Kolothum Thodi Oct. 28, 2020, 6:40 p.m. UTC | #1
Hi Erik,

[Adding back the original MLs + CC list]

> -----Original Message-----

> From: Kaneda, Erik [mailto:erik.kaneda@intel.com]

> Sent: 28 October 2020 18:20

> To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>;

> Moore, Robert <robert.moore@intel.com>; Wysocki, Rafael J

> <rafael.j.wysocki@intel.com>

> Subject: RE: [Devel] [RFC PATCH 1/4] ACPICA: IORT: Update for revision E

> 

> 

> 

> > -----Original Message-----

> > From: Shameerali Kolothum Thodi

> > <shameerali.kolothum.thodi@huawei.com>

> > Sent: Wednesday, October 28, 2020 1:15 AM

> > To: Moore, Robert <robert.moore@intel.com>

> > Cc: Kaneda, Erik <erik.kaneda@intel.com>

> > Subject: RE: [Devel] [RFC PATCH 1/4] ACPICA: IORT: Update for revision

> > E

> >

> > Hi,

> >

> > > -----Original Message-----

> > > From: Moore, Robert [mailto:robert.moore@intel.com]

> > > Sent: 27 October 2020 21:46

> > > To: Shameerali Kolothum Thodi

> > <shameerali.kolothum.thodi@huawei.com>

> > > Cc: Kaneda, Erik <erik.kaneda@intel.com>

> > > Subject: RE: [Devel] [RFC PATCH 1/4] ACPICA: IORT: Update for

> > > revision E

> > >

> > > This patch will need to be ported to the native ACPICA format.

> >

> > Thanks for your feedback. Sorry that, I am not familiar with the process here.

> > As mentioned

> > below, I thought a pull request via acpica git is enough, which you

> > can find here,

> >

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

> >

> > The above pull includes this header file change + other changes

> > related to RMR for tools.

> >

> > Please let me know what else needs to be done when you say "native

> > format".

> 

> Oh ok, thanks for the pull request. You're submitting this as an RFC for linux. Do

> you expect the IORT definition to change throughout linux's RFC period? If you

> don't plan on changing the IORT definition, we can look at the pull request.


The IORT revision E document is published here,
https://developer.arm.com/documentation/den0049/latest/
and I don’t think it will change now (But ARM folks can confirm this).

I submitted this as an RFC, because of the very dependency on this actbl2.h
header updates and this being not available in kernel. 

> Once we merge it, I'll submit the ACPICA patches to Rafael after we do a

> release.


Ok. Thanks for the details. Looking forward to getting this merged to kernel soon :)

Thanks,
Shameer
 
> Erik

> >

> > Thanks,

> > Shameer

> >

> >

> > >

> > >

> > > -----Original Message-----

> > > From: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > > Sent: Tuesday, October 27, 2020 4:27 AM

> > > To: linux-arm-kernel@lists.infradead.org;

> > > linux-acpi@vger.kernel.org; iommu@lists.linux-foundation.org;

> > > devel@acpica.org

> > > Cc: linuxarm@huawei.com; lorenzo.pieralisi@arm.com; joro@8bytes.org;

> > > robin.murphy@arm.com; wanghuiqiang@huawei.com;

> > > jonathan.cameron@huawei.com

> > > Subject: [Devel] [RFC PATCH 1/4] 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

> > <shameerali.kolothum.thodi@huawei.com>

> > > ---

> > >  -This should be updated through acpica git. I have sent out a pull

> > >   request for the same here,

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

> > >

> > > Please help to review.

> > > ---

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

> > > _______________________________________________

> > > Devel mailing list -- devel@acpica.org To unsubscribe send an email

> > > to

> > > devel-

> > leave@acpica.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name

> > > )s
diff mbox series

Patch

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