diff mbox series

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

Message ID 20201119121150.3316-2-shameerali.kolothum.thodi@huawei.com
State New
Headers show
Series ACPI/IORT: Support for IORT RMR node | expand

Commit Message

Shameerali Kolothum Thodi Nov. 19, 2020, 12:11 p.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>

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

-- 
2.17.1

Comments

Shameerali Kolothum Thodi March 22, 2021, 10:36 a.m. UTC | #1
[+]

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.

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.

Thanks,
Shameer

1. https://developer.arm.com/documentation/den0049/latest/

> -----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 <linuxarm@huawei.com>; steven.price@arm.com; Guohanjun

> (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

> 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 <shameerali.kolothum.thodi@huawei.com>

> ---

>  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
Erik Kaneda March 22, 2021, 9:57 p.m. UTC | #2
> -----Original Message-----

> From: Shameerali Kolothum Thodi

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

> Sent: Monday, March 22, 2021 3:36 AM

> To: Kaneda, Erik <erik.kaneda@intel.com>; linux-arm-

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

> foundation.org; devel@acpica.org; Lorenzo Pieralisi

> <lorenzo.pieralisi@arm.com>; Moore, Robert <robert.moore@intel.com>

> Cc: Linuxarm <linuxarm@huawei.com>; steven.price@arm.com;

> Sami.Mujawar@arm.com; robin.murphy@arm.com; wanghuiqiang

> <wanghuiqiang@huawei.com>

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

> 

> [+]

> 

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

> 

> So could you please revert the merge and I am planning to work on the E.b

> soon.

Hi,

> Please let me know if I need to explicitly send a revert pull request or not.


Please send a revert pull request and I'll remember to not submit Linux-ize the IORT patches.

From all of the activity that I've seen with the IORT specification, it looks like this table is nontrivial to design and maintain. The difficulty I have with the table is that I do not understand which table revisions are in active use.

So my question is this: which IORT revisions are being actively used?

Thanks,
Erik
> 

> Thanks,

> Shameer

> 

> 1. https://developer.arm.com/documentation/den0049/latest/

> 

> > -----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 <linuxarm@huawei.com>; steven.price@arm.com;

> Guohanjun

> > (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

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

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

> > ---

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

> _______________________________________________

> 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
Lorenzo Pieralisi March 23, 2021, 3:53 p.m. UTC | #3
On Mon, Mar 22, 2021 at 09:57:58PM +0000, Kaneda, Erik wrote:
> 

> 

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

> > From: Shameerali Kolothum Thodi

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

> > Sent: Monday, March 22, 2021 3:36 AM

> > To: Kaneda, Erik <erik.kaneda@intel.com>; linux-arm-

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

> > foundation.org; devel@acpica.org; Lorenzo Pieralisi

> > <lorenzo.pieralisi@arm.com>; Moore, Robert <robert.moore@intel.com>

> > Cc: Linuxarm <linuxarm@huawei.com>; steven.price@arm.com;

> > Sami.Mujawar@arm.com; robin.murphy@arm.com; wanghuiqiang

> > <wanghuiqiang@huawei.com>

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

> > 

> > [+]

> > 

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

> > 

> > So could you please revert the merge and I am planning to work on the E.b

> > soon.

> Hi,

> 

> > Please let me know if I need to explicitly send a revert pull request or not.

> 

> Please send a revert pull request and I'll remember to not submit Linux-ize the IORT patches.

> 

> From all of the activity that I've seen with the IORT specification,

> it looks like this table is nontrivial to design and maintain. The

> difficulty I have with the table is that I do not understand which

> table revisions are in active use.


Possibly all of them in firmware in the field - I am not sure what you
are asking though; if you can elaborate I'd be grateful.

> So my question is this: which IORT revisions are being actively used?


See above.

Thanks,
Lorenzo

> 

> Thanks,

> Erik

> > 

> > Thanks,

> > Shameer

> > 

> > 1. https://developer.arm.com/documentation/den0049/latest/

> > 

> > > -----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 <linuxarm@huawei.com>; steven.price@arm.com;

> > Guohanjun

> > > (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

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

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

> > > ---

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

> > _______________________________________________

> > 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
Erik Kaneda March 23, 2021, 6:51 p.m. UTC | #4
> -----Original Message-----

> From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

> Sent: Tuesday, March 23, 2021 8:54 AM

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

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

> linux-arm-kernel@lists.infradead.org; linux-acpi@vger.kernel.org;

> iommu@lists.linux-foundation.org; devel@acpica.org; Moore, Robert

> <robert.moore@intel.com>; Linuxarm <linuxarm@huawei.com>;

> steven.price@arm.com; Sami.Mujawar@arm.com; robin.murphy@arm.com;

> wanghuiqiang <wanghuiqiang@huawei.com>

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

> 

> On Mon, Mar 22, 2021 at 09:57:58PM +0000, Kaneda, Erik wrote:

> >

> >

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

> > > From: Shameerali Kolothum Thodi

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

> > > Sent: Monday, March 22, 2021 3:36 AM

> > > To: Kaneda, Erik <erik.kaneda@intel.com>; linux-arm-

> > > kernel@lists.infradead.org; linux-acpi@vger.kernel.org;

> iommu@lists.linux-

> > > foundation.org; devel@acpica.org; Lorenzo Pieralisi

> > > <lorenzo.pieralisi@arm.com>; Moore, Robert

> <robert.moore@intel.com>

> > > Cc: Linuxarm <linuxarm@huawei.com>; steven.price@arm.com;

> > > Sami.Mujawar@arm.com; robin.murphy@arm.com; wanghuiqiang

> > > <wanghuiqiang@huawei.com>

> > > Subject: [Devel] Re: [RFC PATCH v2 1/8] ACPICA: IORT: Update for

> revision E

> > >

> > > [+]

> > >

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

> > >

> > > So could you please revert the merge and I am planning to work on the

> E.b

> > > soon.

> > Hi,

> >

> > > Please let me know if I need to explicitly send a revert pull request or not.

> >

> > Please send a revert pull request and I'll remember to not submit Linux-ize

> the IORT patches.

> >

> > From all of the activity that I've seen with the IORT specification,

> > it looks like this table is nontrivial to design and maintain. The

> > difficulty I have with the table is that I do not understand which

> > table revisions are in active use.

> 

Hi Lorenzo,

> Possibly all of them in firmware in the field - I am not sure what you

> are asking though; if you can elaborate I'd be grateful.


Yes, I'd be happy to explain.

The ACPICA project contains code that provides definitions for ACPI tables. After each release of this project, the codebase gets translated to a Linux style syntax and relevant patches are submitted to Linux so that it can use these table definitions in their driver codebase. From ACPICA's perspective, the code providing these definitions are used to implement a compiler/disassembler called iASL. This tool disassembles table definitions so that the user doesn't have to open a hex editor to decipher ACPI tables. Our goal with iASL is to be able to disassemble as many ACPI tables as possible to give users the ability to compile and debug ACPI tables.

Out of the 60+ tables that we support, IORT has been tricky to maintain. There are revisions A-E and we have received pull requests from engineers from ARM or companies that work with ARM. We are grateful of their contributions but some of these pull requests have broken support for earlier versions of IORT. In addition, we sometimes receive communication from people like Shameer saying that revision E does not currently have users. This leaves Bob and I very confused about which revisions we should be focused on supporting in iASL.

We need your help in understanding which versions of IORT should be supported by iASL as well as Linux.

I hope this helps.. Let me know if you need me to clarify anything that I've written.

Thanks,
Erik
> 

> > So my question is this: which IORT revisions are being actively used?

> 

> See above.

> 

> Thanks,

> Lorenzo

> 

> >

> > Thanks,

> > Erik

> > >

> > > Thanks,

> > > Shameer

> > >

> > > 1. https://developer.arm.com/documentation/den0049/latest/

> > >

> > > > -----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 <linuxarm@huawei.com>; steven.price@arm.com;

> > > Guohanjun

> > > > (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

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

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

> > > > ---

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

> > > _______________________________________________

> > > 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
Lorenzo Pieralisi March 24, 2021, 9:50 a.m. UTC | #5
On Tue, Mar 23, 2021 at 06:51:44PM +0000, Kaneda, Erik wrote:
> 

> 

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

> > From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

> > Sent: Tuesday, March 23, 2021 8:54 AM

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

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

> > linux-arm-kernel@lists.infradead.org; linux-acpi@vger.kernel.org;

> > iommu@lists.linux-foundation.org; devel@acpica.org; Moore, Robert

> > <robert.moore@intel.com>; Linuxarm <linuxarm@huawei.com>;

> > steven.price@arm.com; Sami.Mujawar@arm.com; robin.murphy@arm.com;

> > wanghuiqiang <wanghuiqiang@huawei.com>

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

> > 

> > On Mon, Mar 22, 2021 at 09:57:58PM +0000, Kaneda, Erik wrote:

> > >

> > >

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

> > > > From: Shameerali Kolothum Thodi

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

> > > > Sent: Monday, March 22, 2021 3:36 AM

> > > > To: Kaneda, Erik <erik.kaneda@intel.com>; linux-arm-

> > > > kernel@lists.infradead.org; linux-acpi@vger.kernel.org;

> > iommu@lists.linux-

> > > > foundation.org; devel@acpica.org; Lorenzo Pieralisi

> > > > <lorenzo.pieralisi@arm.com>; Moore, Robert

> > <robert.moore@intel.com>

> > > > Cc: Linuxarm <linuxarm@huawei.com>; steven.price@arm.com;

> > > > Sami.Mujawar@arm.com; robin.murphy@arm.com; wanghuiqiang

> > > > <wanghuiqiang@huawei.com>

> > > > Subject: [Devel] Re: [RFC PATCH v2 1/8] ACPICA: IORT: Update for

> > revision E

> > > >

> > > > [+]

> > > >

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

> > > >

> > > > So could you please revert the merge and I am planning to work on the

> > E.b

> > > > soon.

> > > Hi,

> > >

> > > > Please let me know if I need to explicitly send a revert pull request or not.

> > >

> > > Please send a revert pull request and I'll remember to not submit Linux-ize

> > the IORT patches.

> > >

> > > From all of the activity that I've seen with the IORT specification,

> > > it looks like this table is nontrivial to design and maintain. The

> > > difficulty I have with the table is that I do not understand which

> > > table revisions are in active use.

> > 

> Hi Lorenzo,

> 

> > Possibly all of them in firmware in the field - I am not sure what you

> > are asking though; if you can elaborate I'd be grateful.

> 

> Yes, I'd be happy to explain.

> 

> The ACPICA project contains code that provides definitions for ACPI tables. After each release of this project, the codebase gets translated to a Linux style syntax and relevant patches are submitted to Linux so that it can use these table definitions in their driver codebase. From ACPICA's perspective, the code providing these definitions are used to implement a compiler/disassembler called iASL. This tool disassembles table definitions so that the user doesn't have to open a hex editor to decipher ACPI tables. Our goal with iASL is to be able to disassemble as many ACPI tables as possible to give users the ability to compile and debug ACPI tables.

> 

> Out of the 60+ tables that we support, IORT has been tricky to maintain. There are revisions A-E and we have received pull requests from engineers from ARM or companies that work with ARM. We are grateful of their contributions but some of these pull requests have broken support for earlier versions of IORT. In addition, we sometimes receive communication from people like Shameer saying that revision E does not currently have users. This leaves Bob and I very confused about which revisions we should be focused on supporting in iASL.

> 

> We need your help in understanding which versions of IORT should be supported by iASL as well as Linux.

> 

> I hope this helps.. Let me know if you need me to clarify anything that I've written.


Yes, it does, it is my question that wasn't clear, I maintain the
Linux ACPI ARM64 code, I am familiar with ACPICA and all of the above.

What I wanted to say is that overall, all versions should be supported
and I *think* ACPICA is designed so that the static table headers are
meant to support the *latest* table version (whose firmware bindings are
supposed to be backward compatible with all existing versions "in use").

However, revision E and E.a required a spec update, hence Shameer revert
request (which I support).

I think what you are asking is someone from Arm to act as a gatekeeper
to help you ACK/NAK ACPICA IORT changes because you have no visibility
into IORT specs evolution and actual deployment.

Is my understanding correct ?

Thanks,
Lorenzo

> Thanks,

> Erik

> > 

> > > So my question is this: which IORT revisions are being actively used?

> > 

> > See above.

> > 

> > Thanks,

> > Lorenzo

> > 

> > >

> > > Thanks,

> > > Erik

> > > >

> > > > Thanks,

> > > > Shameer

> > > >

> > > > 1. https://developer.arm.com/documentation/den0049/latest/

> > > >

> > > > > -----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 <linuxarm@huawei.com>; steven.price@arm.com;

> > > > Guohanjun

> > > > > (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

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

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

> > > > > ---

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

> > > > _______________________________________________

> > > > 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
Jon Nettleton March 25, 2021, 8:40 a.m. UTC | #6
On Mon, Mar 22, 2021 at 11:37 AM Shameerali Kolothum Thodi
<shameerali.kolothum.thodi@huawei.com> 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/

>

> > -----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 <linuxarm@huawei.com>; steven.price@arm.com; Guohanjun

> > (Hanjun Guo) <guohanjun@huawei.com>; Sami.Mujawar@arm.com;

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

> > 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 <shameerali.kolothum.thodi@huawei.com>

> > ---

> >  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
Shameerali Kolothum Thodi March 25, 2021, 3:54 p.m. UTC | #7
> -----Original Message-----

> From: Jon Nettleton [mailto:jon@solid-run.com]

> Sent: 25 March 2021 08:40

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

> Cc: erik.kaneda@intel.com; linux-arm-kernel@lists.infradead.org;

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

> devel@acpica.org; Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>;

> robert.moore@intel.com; Linuxarm <linuxarm@huawei.com>;

> steven.price@arm.com; Guohanjun (Hanjun Guo) <guohanjun@huawei.com>;

> Sami.Mujawar@arm.com; robin.murphy@arm.com; wanghuiqiang

> <wanghuiqiang@huawei.com>

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


[...]

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


Ok. Sorry didn’t know that you already had a firmware with that revision.
Thanks for agreeing to update to latest.

> >

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


Sure. Will CC you.

Hi All,

I have send pull requests to acpica git for reverting rev E and to update it with E.b,

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

Please take a look and let me know.

Thanks,
Shameer
Eric Auger April 15, 2021, 7:27 a.m. UTC | #8
Hi Shameer,

On 11/19/20 1:11 PM, Shameer Kolothum wrote:
> 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>

> ---

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

so indeed in E.b there is a new field here.
u32 flags
> +	u32 rmr_count;

> +	u32 rmr_offset;

> +};

> +

> +struct acpi_iort_rmr_desc {

> +	u64 base_address;

> +	u64 length;

> +	u32 reserved;

> +};

> +

>  /*******************************************************************************

>   *

>   * IVRS - I/O Virtualization Reporting Structure

> 

Thanks

Eric
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