From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x229.google.com (mail-it0-x229.google.com [IPv6:2607:f8b0:4001:c0b::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 019F421A6F106 for ; Tue, 18 Apr 2017 15:21:28 -0700 (PDT) Received: by mail-it0-x229.google.com with SMTP id a140so3303129ita.0 for ; Tue, 18 Apr 2017 15:21:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FrcXriW/zSq3XQ1JEk3iLivCuDjiDTkYgqk9lv+/rHk=; b=cO+BgcmUKbx2wJuL+gxJbVWXo9EDcQ0cJBroXZw3ZA/ggxJCZGkKxmwL+4huHbjddS fhW7dikWBWhsr1t88tP0+h0YGnTFrpOIY/9YLW6DKO8v+xDw/nUBoyno3RYpi8w9himi 8e0rfUMXgmMFzIqAP2rIOa5Y+lXp2j/+3TR30= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FrcXriW/zSq3XQ1JEk3iLivCuDjiDTkYgqk9lv+/rHk=; b=SDsZzYmQ/3o83JPWIPhhLAcQGZEQZ8XfkDd6D7ulapUdsiBzQYG2uwWNKdouB5PGJH G9e5DQhC1QagbBJmaRjRlGPcl8oSjTHW7MiFTMvYN2rF7hJhVGVHCnslmAog55yL6lI4 HDcp3gx6k/tEVBB1vyP9MsYiZf+cxCp0cj4UHL1aL6Lbl+ahCwmULVQ6QEtkhKmnrSt3 7sWehZZJ1yP8WxXRh2X4H6yaoUreI5UbqBfwkEilghMcgq8vpUifpNiuxKxafv62kQXJ fpBQwVloML+6l7PmRO9p358LjrL905sMZEq0dgs0fyzRCZAKicOGcFPctSMZfFjume25 ctEw== X-Gm-Message-State: AN3rC/6D1RXHr4VZLh8Q+db9DST0XgNhOhwPzLCuxkG4Ap3gPvxGyqWc bDBTEwS2G33Co6sR51LXD6iP+9grVIrZ X-Received: by 10.36.46.69 with SMTP id i66mr237572ita.59.1492554086972; Tue, 18 Apr 2017 15:21:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.201.76 with HTTP; Tue, 18 Apr 2017 15:21:26 -0700 (PDT) In-Reply-To: References: <20170413163705.26316-1-ard.biesheuvel@linaro.org> From: Ard Biesheuvel Date: Tue, 18 Apr 2017 23:21:26 +0100 Message-ID: To: "Kinney, Michael D" Cc: "edk2-devel@lists.01.org" , Leif Lindholm , "Gao, Liming" , Lorenzo Pieralisi Subject: Re: [PATCH] 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: Tue, 18 Apr 2017 22:21:28 -0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 18 April 2017 at 21:54, Kinney, Michael D w= rote: > Ard, > > 1) Please add the link to the document in the file header OK > 2) Why are there commented out /* */ fields in 2 of the structures? Those are subtables/subfields that may legally occur 0 or more times, so they should not be accounted for in the size of the respective structures. So they are essentially for documentation purposes only, and when used in .aslc code, the table should be composed using an ad-hoc struct typedef that concatenates them together. > 3) Why isn=E2=80=99t there a #define for the table signature? > OK, I will add that. --=20 Ard. >> -----Original Message----- >> From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] >> Sent: Tuesday, April 18, 2017 10:57 AM >> To: edk2-devel@lists.01.org; Leif Lindholm ; K= inney, >> Michael D ; Gao, Liming >> Cc: Lorenzo Pieralisi ; Ard Biesheuvel >> >> Subject: Re: [PATCH] MdePkg/IndustryStandard: add definitions for ACPI 6= .0 IORT >> >> On 13 April 2017 at 17:37, Ard Biesheuvel wr= ote: >> > This adds #defines and struct typedefs for the various node types in >> > the ACPI 6.0 IO Remapping Table (IORT). >> > >> > Contributed-under: TianoCore Contribution Agreement 1.0 >> > Signed-off-by: Ard Biesheuvel >> > --- >> > MdePkg/Include/IndustryStandard/IoRemappingTable.h | 187 ++++++++++++= ++++++++ >> > 1 file changed, 187 insertions(+) >> > >> >> Liming, Michael, >> >> Are there any concerns with this patch? >> >> Thanks, >> Ard. >> >> >> > diff --git a/MdePkg/Include/IndustryStandard/IoRemappingTable.h >> b/MdePkg/Include/IndustryStandard/IoRemappingTable.h >> > new file mode 100644 >> > index 000000000000..674cb611961d >> > --- /dev/null >> > +++ b/MdePkg/Include/IndustryStandard/IoRemappingTable.h >> > @@ -0,0 +1,187 @@ >> > +/** @file >> > + ACPI IO Remapping Table (IORT) as specified in ARM spec DEN0049B >> > + >> > + 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 t= he 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" BASI= S, >> > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS O= R >> 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; >> > + >> > +// >> > +// 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 NumIts; >> > +/* >> > + UINT32 ItsIdentifiers[0]; >> > +*/ >> > +} 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; >> > +/* >> > + CHAR8 ObjectName[0]; >> > +*/ >> > +} 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[0]; >> > + EFI_ACPI_6_0_IO_REMAPPING_SMMU_CTX_INT PmuInterrupt[0]; >> > +*/ >> > +} 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.9.3 >> >