From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id CA11C21A6F106 for ; Wed, 19 Apr 2017 00:24:43 -0700 (PDT) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Apr 2017 00:24:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,220,1488873600"; d="scan'208";a="91591482" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga006.fm.intel.com with ESMTP; 19 Apr 2017 00:24:43 -0700 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 19 Apr 2017 00:24:42 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 19 Apr 2017 00:24:42 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.246]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.117]) with mapi id 14.03.0319.002; Wed, 19 Apr 2017 15:24:40 +0800 From: "Yao, Jiewen" To: Ard Biesheuvel , "edk2-devel@lists.01.org" , "Gao, Liming" , "Kinney, Michael D" CC: "leif.lindholm@linaro.org" Thread-Topic: [edk2] [PATCH v2] MdePkg/IndustryStandard: add definitions for ACPI 6.0 IORT Thread-Index: AQHSuNwgBCrU0oFJCEuNyg1Id/4kKKHMR+4A Date: Wed, 19 Apr 2017 07:24:39 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A92E62F@shsmsx102.ccr.corp.intel.com> References: <1492585843-10974-1-git-send-email-ard.biesheuvel@linaro.org> In-Reply-To: <1492585843-10974-1-git-send-email-ard.biesheuvel@linaro.org> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2] MdePkg/IndustryStandard: add definitions for ACPI 6.0 IORT X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 07:24:44 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ard Is there any special reason that we use INT32 instead of UINT32 in EFI_ACPI= _6_0_IO_REMAPPING_TABLE? + INT32 NumNodes; + INT32 NodeOffset; + INT32 Reserved; I am just curious.=20 Thank you Yao Jiewen > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ar= d > Biesheuvel > Sent: Wednesday, April 19, 2017 3:11 PM > To: edk2-devel@lists.01.org; Gao, Liming ; Kinney, > Michael D > Cc: leif.lindholm@linaro.org; Ard Biesheuvel > Subject: [edk2] [PATCH v2] MdePkg/IndustryStandard: add definitions for A= CPI > 6.0 IORT >=20 > This adds #defines and struct typedefs for the various node types in > the ACPI 6.0 IO Remapping Table (IORT). >=20 > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel > --- > v2: added PDF link to file header > updated comment style to align with other ACPI header files >=20 > MdePkg/Include/IndustryStandard/IoRemappingTable.h | 183 > ++++++++++++++++++++ > 1 file changed, 183 insertions(+) >=20 > diff --git a/MdePkg/Include/IndustryStandard/IoRemappingTable.h > b/MdePkg/Include/IndustryStandard/IoRemappingTable.h > new file mode 100644 > index 000000000000..310819b03ff5 > --- /dev/null > +++ b/MdePkg/Include/IndustryStandard/IoRemappingTable.h > @@ -0,0 +1,183 @@ > +/** @file > + ACPI IO Remapping Table (IORT) as specified in ARM spec DEN0049B > + > + > http://infocenter.arm.com/help/topic/com.arm.doc.den0049b/DEN0049B_IO_Re > mapping_Table.pdf > + > + Copyright (c) 2017, Linaro Limited. All rights reserved.
> + > + This program and the accompanying materials > + are licensed and made available under the terms and conditions of the = BSD > License > + which accompanies this distribution. The full text of the license may= be > found at > + http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS > OR IMPLIED. > +**/ > + > +#ifndef __IO_REMAPPING_TABLE_H__ > +#define __IO_REMAPPING_TABLE_H__ > + > +#include > + > +#define EFI_ACPI_IO_REMAPPING_TABLE_REVISION 0x0 > + > +#define EFI_ACPI_IORT_TYPE_ITS_GROUP 0x0 > +#define EFI_ACPI_IORT_TYPE_NAMED_COMP 0x1 > +#define EFI_ACPI_IORT_TYPE_ROOT_COMPLEX 0x2 > +#define EFI_ACPI_IORT_TYPE_SMMUv1v2 0x3 > +#define EFI_ACPI_IORT_TYPE_SMMUv3 0x4 > + > +#define EFI_ACPI_IORT_MEM_ACCESS_PROP_CCA BIT0 > + > +#define EFI_ACPI_IORT_MEM_ACCESS_PROP_AH_TR BIT0 > +#define EFI_ACPI_IORT_MEM_ACCESS_PROP_AH_WA BIT1 > +#define EFI_ACPI_IORT_MEM_ACCESS_PROP_AH_RA BIT2 > +#define EFI_ACPI_IORT_MEM_ACCESS_PROP_AH_AHO BIT3 > + > +#define EFI_ACPI_IORT_MEM_ACCESS_FLAGS_CPM BIT0 > +#define EFI_ACPI_IORT_MEM_ACCESS_FLAGS_DACS BIT1 > + > +#define EFI_ACPI_IORT_SMMUv1v2_MODEL_v1 0x0 > +#define EFI_ACPI_IORT_SMMUv1v2_MODEL_v2 0x1 > +#define EFI_ACPI_IORT_SMMUv1v2_MODEL_MMU400 0x2 > +#define EFI_ACPI_IORT_SMMUv1v2_MODEL_MMU500 0x3 > + > +#define EFI_ACPI_IORT_SMMUv1v2_FLAG_DVM BIT0 > +#define EFI_ACPI_IORT_SMMUv1v2_FLAG_COH_WALK BIT1 > + > +#define EFI_ACPI_IORT_SMMUv1v2_INT_FLAG_LEVEL 0x0 > +#define EFI_ACPI_IORT_SMMUv1v2_INT_FLAG_EDGE 0x1 > + > +#define EFI_ACPI_IORT_SMMUv3_FLAG_COHAC_OVERRIDE BIT0 > +#define EFI_ACPI_IORT_SMMUv3_FLAG_HTTU_OVERRIDE BIT1 > + > +#define EFI_ACPI_IORT_ROOT_COMPLEX_ATS_UNSUPPORTED 0x0 > +#define EFI_ACPI_IORT_ROOT_COMPLEX_ATS_SUPPORTED 0x1 > + > +#define EFI_ACPI_IORT_ID_MAPPING_FLAGS_SINGLE BIT0 > + > +#pragma pack(1) > + > +/// > +/// Table header > +/// > +typedef struct { > + EFI_ACPI_DESCRIPTION_HEADER Header; > + INT32 NumNodes; > + INT32 NodeOffset; > + INT32 Reserved; > +} EFI_ACPI_6_0_IO_REMAPPING_TABLE; > + > +/// > +/// Definition for ID mapping table shared by all node types > +/// > +typedef struct { > + UINT32 InputBase; > + UINT32 NumIds; > + UINT32 OutputBase; > + UINT32 OutputReference; > + UINT32 Flags; > +} EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE; > + > +/// > +/// Node header definition shared by all node types > +/// > +typedef struct { > + UINT8 Type; > + UINT16 Length; > + UINT8 Revision; > + UINT32 Reserved; > + UINT32 NumIdMappings; > + UINT32 IdReference; > +} EFI_ACPI_6_0_IO_REMAPPING_NODE; > + > +/// > +/// Node type 0: ITS node > +/// > +typedef struct { > + EFI_ACPI_6_0_IO_REMAPPING_NODE Node; > + > + UINT32 NumItsIdentifiers; > +//UINT32 > ItsIdentifiers[NumItsIdentifiers]; > +} EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE; > + > +/// > +/// Node type 1: root complex node > +/// > +typedef struct { > + EFI_ACPI_6_0_IO_REMAPPING_NODE Node; > + > + UINT32 CacheCoherent; > + UINT8 AllocationHints; > + UINT16 Reserved; > + UINT8 MemoryAccessFlags; > + > + UINT32 AtsAttribute; > + UINT32 PciSegmentNumber; > +} EFI_ACPI_6_0_IO_REMAPPING_RC_NODE; > + > +/// > +/// Node type 2: named component node > +/// > +typedef struct { > + EFI_ACPI_6_0_IO_REMAPPING_NODE Node; > + > + UINT32 Flags; > + UINT32 CacheCoherent; > + UINT8 AllocationHints; > + UINT16 Reserved; > + UINT8 MemoryAccessFlags; > + UINT8 AddressSizeLimit; > +//UINT8 ObjectName[]; > +} EFI_ACPI_6_0_IO_REMAPPING_NAMED_COMP_NODE; > + > +/// > +/// Node type 3: SMMUv1 or SMMUv2 node > +/// > +typedef struct { > + UINT32 Interrupt; > + UINT32 InterruptFlags; > +} EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT; > + > +typedef struct { > + EFI_ACPI_6_0_IO_REMAPPING_NODE Node; > + > + UINT64 Base; > + UINT64 Span; > + UINT32 Model; > + UINT32 Flags; > + UINT32 GlobalInterruptArrayRef; > + UINT32 NumContextInterrupts; > + UINT32 ContextInterruptArrayRef; > + UINT32 NumPmuInterrupts; > + UINT32 PmuInterruptArrayRef; > + > + UINT32 SMMU_NSgIrpt; > + UINT32 SMMU_NSgIrptFlags; > + UINT32 SMMU_NSgCfgIrpt; > + UINT32 SMMU_NSgCfgIrptFlags; > + > +//EFI_ACPI_6_0_IO_REMAPPING_SMMU_CTX_INT > ContextInterrupt[NumContextInterrupts]; > +//EFI_ACPI_6_0_IO_REMAPPING_SMMU_CTX_INT > PmuInterrupt[NumPmuInterrupts]; > +} EFI_ACPI_6_0_IO_REMAPPING_SMMU_NODE; > + > +/// > +/// Node type 4: SMMUv4 node > +/// > +typedef struct { > + EFI_ACPI_6_0_IO_REMAPPING_NODE Node; > + > + UINT64 Base; > + UINT32 Flags; > + UINT32 Reserved; > + UINT64 VatosAddress; > + UINT32 Model; > + UINT32 Event; > + UINT32 Pri; > + UINT32 Gerr; > + UINT32 Sync; > +} EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE; > + > +#pragma pack() > + > +#endif > -- > 2.7.4 >=20 > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel