Sure Jiewen. Will add these two defines and send v2 patch.

Thanks,
-Giri

> -----Original Message-----
> From: Yao, Jiewen
> Sent: Thursday, July 28, 2016 12:28 AM
> To: Mudusuru, Giri P <[email protected]>; [email protected]
> Cc: Kinney, Michael D <[email protected]>; Gao, Liming
> <[email protected]>
> Subject: RE: [edk2] [PATCH] MdePkg: Add DmaRemappingReportingTable.h
> 
> Thanks. It looks good.
> Reviewed-by: [email protected]
> 
> Do you think we can define below MACRO too?
> 
> #define EFI_ACPI_DMAR_DRHD_FLAG_INCLUDE_PCI_ALL  BIT0
> 
> #define EFI_ACPI_DMAR_ATSR_FALG_ALL_PORTS  BIT0
> 
> 
> > -----Original Message-----
> > From: Mudusuru, Giri P
> > Sent: Thursday, July 28, 2016 2:46 PM
> > To: [email protected]
> > Cc: Kinney, Michael D <[email protected]>; Gao, Liming
> > <[email protected]>; Yao, Jiewen <[email protected]>
> > Subject: [edk2] [PATCH] MdePkg: Add DmaRemappingReportingTable.h
> >
> > DMA Remapping Reporting (DMAR) ACPI table definitions from Intel(R)
> > Virtualization Technology for Directed I/O (VT-D) Architecture
> > Specification v2.4 dated June 2016.
> >
> > This replaces the DMARemappingReportingTable.h from
> > EdkCompatibilityPkg\Foundation\Include\IndustryStandard
> >
> > Cc: Michael Kinney <[email protected]>
> > Cc: Liming Gao <[email protected]>
> > Cc: Jiewen Yao <[email protected]>
> > Contributed-under: TianoCore Contribution Agreement 1.0
> > Signed-off-by: Giri P Mudusuru <[email protected]>
> > ---
> >  .../IndustryStandard/DmaRemappingReportingTable.h  | 254
> > +++++++++++++++++++++
> >  1 file changed, 254 insertions(+)
> >  create mode 100644
> > MdePkg/Include/IndustryStandard/DmaRemappingReportingTable.h
> >
> > diff --git
> > a/MdePkg/Include/IndustryStandard/DmaRemappingReportingTable.h
> > b/MdePkg/Include/IndustryStandard/DmaRemappingReportingTable.h
> > new file mode 100644
> > index 0000000..691aea0
> > --- /dev/null
> > +++ b/MdePkg/Include/IndustryStandard/DmaRemappingReportingTable.h
> > @@ -0,0 +1,254 @@
> > +/** @file
> > +  DMA Remapping Reporting (DMAR) ACPI table definition from Intel(R)
> > +  Virtualization Technology for Directed I/O (VT-D) Architecture
> > Specification.
> > +
> > +  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
> > +  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.
> > +
> > +  @par Revision Reference:
> > +    - Intel(R) Virtualization Technology for Directed I/O (VT-D) 
> > Architecture
> > +      Specification v2.4, Dated June 2016.
> > +
> > http://www.intel.com/content/dam/www/public/us/en/documents/product
> > -specifications/vt-directed-io-spec.pdf
> > +
> > +  @par Glossary:
> > +    - HPET - High Precision Event Timer
> > +    - NUMA - Non-uniform Memory Access
> > +**/
> > +#ifndef _DMA_REMAPPING_REPORTING_TABLE_H_
> > +#define _DMA_REMAPPING_REPORTING_TABLE_H_
> > +
> > +#pragma pack(1)
> > +
> > +///
> > +/// DMA Remapping Reporting Table Revision
> > +///
> > +#define EFI_ACPI_DMAR_DESCRIPTION_TABLE_REVISION   0x01
> > +
> > +///
> > +/// DMA-Remapping Reporting ACPI Table definitions from section 8.1
> > +///@{
> > +#define EFI_ACPI_DMAR_TABLE_FLAGS_INTR_REMAP_SET
> > BIT0
> > +#define EFI_ACPI_DMAR_TABLE_FLAGS_X2APIC_OPT_OUT_SET
> > BIT1
> > +///@}
> > +
> > +///
> > +/// Remapping Structure Types definitions from section 8.2
> > +///@{
> > +#define EFI_ACPI_DMAR_TYPE_DRHD   0x00
> > +#define EFI_ACPI_DMAR_TYPE_RMRR   0x01
> > +#define EFI_ACPI_DMAR_TYPE_ATSR   0x02
> > +#define EFI_ACPI_DMAR_TYPE_RHSA   0x03
> > +#define EFI_ACPI_DMAR_TYPE_ANDD   0x04
> > +///@}
> > +
> > +///
> > +/// Definition for DMA Remapping Structure Header
> > +///
> > +typedef struct {
> > +  UINT16        Type;
> > +  UINT16        Length;
> > +} EFI_ACPI_DMAR_STRUCTURE_HEADER;
> > +
> > +///
> > +/// Definition for DMA-Remapping PCI Path
> > +///
> > +typedef struct {
> > +  UINT8         Device;
> > +  UINT8         Function;
> > +} EFI_ACPI_DMAR_PCI_PATH;
> > +
> > +///
> > +/// DMA-Remapping Device Scope Entry Structure definitions from section
> > 8.3.1
> > +///@{
> > +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_PCI_ENDPOINT
> > 0x01
> > +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_PCI_BRIDGE
> > 0x02
> > +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_IOAPIC
> > 0x03
> > +#define EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_MSI_CAPABLE_HPET
> > 0x04
> > +#define
> > EFI_ACPI_DEVICE_SCOPE_ENTRY_TYPE_ACPI_NAMESPACE_DEVICE  0x05
> > +///@}
> > +
> > +///
> > +/// Device Scope Structure is defined in section 8.3.1
> > +///
> > +typedef struct {
> > +  UINT8         Type;
> > +  UINT8         Length;
> > +  UINT16        Reserved2;
> > +  UINT8         EnumerationId;
> > +  UINT8         StartBusNumber;
> > +} EFI_ACPI_DMAR_DEVICE_SCOPE_STRUCTURE_HEADER;
> > +
> > +/**
> > +  DMA-remapping hardware unit definition (DRHD) structure is defined in
> > +  section 8.3. This uniquely represents a remapping hardware unit present
> > +  in the platform. There must be at least one instance of this structure
> > +  for each PCI segment in the platform.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DMAR_STRUCTURE_HEADER  Header;
> > +  /**
> > +    - Bit[0]: INCLUDE_PCI_ALL
> > +              - If Set, this remapping hardware unit has under its scope
> > all
> > +                PCI compatible devices in the specified Segment, except
> > devices
> > +                reported under the scope of other remapping hardware
> > units for
> > +                the same Segment.
> > +              - If Clear, this remapping hardware unit has under its
> > scope only
> > +                devices in the specified Segment that are explicitly
> > identified
> > +                through the DeviceScope field.
> > +    - Bits[7:1] Reserved.
> > +  **/
> > +  UINT8                           Flags;
> > +  UINT8                           Reserved;
> > +  ///
> > +  /// The PCI Segment associated with this unit.
> > +  ///
> > +  UINT16                          SegmentNumber;
> > +  ///
> > +  /// Base address of remapping hardware register-set for this unit.
> > +  ///
> > +  UINT64                          RegisterBaseAddress;
> > +} EFI_ACPI_DMAR_DRHD_HEADER;
> > +
> > +/**
> > +  Reserved Memory Region Reporting Structure (RMRR) is described in
> > section 8.4
> > +  Reserved memory ranges that may be DMA targets may be reported
> > through the
> > +  RMRR structures, along with the devices that requires access to the
> > specified
> > +  reserved memory region.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DMAR_STRUCTURE_HEADER  Header;
> > +  UINT8                           Reserved[2];
> > +  ///
> > +  /// PCI Segment Number associated with devices identified through
> > +  /// the Device Scope field.
> > +  ///
> > +  UINT16                          SegmentNumber;
> > +  ///
> > +  /// Base address of 4KB-aligned reserved memory region
> > +  ///
> > +  UINT64
> > ReservedMemoryRegionBaseAddress;
> > +  /**
> > +    Last address of the reserved memory region. Value in this field must be
> > +    greater than the value in Reserved Memory Region Base Address field.
> > +    The reserved memory region size (Limit - Base + 1) must be an integer
> > +    multiple of 4KB.
> > +  **/
> > +  UINT64
> > ReservedMemoryRegionLimitAddress;
> > +} EFI_ACPI_DMAR_RMRR_HEADER;
> > +
> > +/**
> > +  Root Port ATS Capability Reporting (ATSR) structure is defined in section
> > 8.5.
> > +  This structure is applicable only for platforms supporting Device-TLBs as
> > +  reported through the Extended Capability Register. For each PCI Segment
> > in
> > +  the platform that supports Device-TLBs, BIOS provides an ATSR structure.
> > The
> > +  ATSR structures identifies PCI-Express Root-Ports supporting Address
> > +  Translation Services (ATS) transactions. Software must enable ATS on
> > endpoint
> > +  devices behind a Root Port only if the Root Port is reported as 
> > supporting
> > +  ATS transactions.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DMAR_STRUCTURE_HEADER  Header;
> > +  /**
> > +    - Bit[0]: ALL_PORTS:
> > +              - If Set, indicates all PCI Express Root Ports in the 
> > specified
> > +                PCI Segment supports ATS transactions.
> > +              - If Clear, indicates ATS transactions are supported only on
> > +                Root Ports identified through the Device Scope field.
> > +    - Bits[7:1] Reserved.
> > +  **/
> > +  UINT8                           Flags;
> > +  UINT8                           Reserved;
> > +  ///
> > +  /// The PCI Segment associated with this ATSR structure
> > +  ///
> > +  UINT16                          SegmentNumber;
> > +} EFI_ACPI_DMAR_ATSR_HEADER;
> > +
> > +/**
> > +  Remapping Hardware Static Affinity (RHSA) is an optional structure
> > defined
> > +  in section 8.6. This is intended to be used only on NUMA platforms with
> > +  Remapping hardware units and memory spanned across multiple nodes.
> > +  When used, there must be a RHSA structure for each Remapping
> > hardware unit
> > +  reported through DRHD structure.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DMAR_STRUCTURE_HEADER  Header;
> > +  UINT8                           Reserved[4];
> > +  ///
> > +  /// Register Base Address of this Remap hardware unit reported in the
> > +  /// corresponding DRHD structure.
> > +  ///
> > +  UINT64                          RegisterBaseAddress;
> > +  ///
> > +  /// Proximity Domain to which the Remap hardware unit identified by the
> > +  /// Register Base Address field belongs.
> > +  ///
> > +  UINT32                          ProximityDomain;
> > +} EFI_ACPI_DMAR_RHSA_HEADER;
> > +
> > +/**
> > +  An ACPI Name-space Device Declaration (ANDD) structure is defined in
> > section
> > +  8.7 and uniquely represents an ACPI name-space enumerated device
> > capable of
> > +  issuing DMA requests in the platform. ANDD structures are used in
> > conjunction
> > +  with Device-Scope entries of type ACPI_NAMESPACE_DEVICE.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DMAR_STRUCTURE_HEADER  Header;
> > +  UINT8                           Reserved[3];
> > +  /**
> > +    Each ACPI device enumerated through an ANDD structure must have a
> > unique
> > +    value for this field. To report an ACPI device with ACPI Device Number
> > +    value of X, under the scope of a DRHD unit, a Device-Scope entry of
> > type
> > +    ACPI_NAMESPACE_DEVICE is used with value of X in the Enumeration
> > ID field.
> > +    The Start Bus Number and Path fields in the Device-Scope together
> > +    provides the 16-bit source-id allocated by platform for the ACPI
> > device.
> > +  **/
> > +  UINT8                           AcpiDeviceNumber;
> > +} EFI_ACPI_DMAR_ANDD_HEADER;
> > +
> > +/**
> > +  DMA Remapping Reporting Structure Header as defined in section 8.1
> > +  This header will be followed by list of Remapping Structures listed below
> > +    - DMA Remapping Hardware Unit Definition (DRHD)
> > +    - Reserved Memory Region Reporting (RMRR)
> > +    - Root Port ATS Capability Reporting (ATSR)
> > +    - Remapping Hardware Static Affinity (RHSA)
> > +    - ACPI Name-space Device Declaration (ANDD)
> > +  These structure types must by reported in numerical order.
> > +  i.e., All remapping structures of type 0 (DRHD) enumerated before
> > remapping
> > +  structures of type 1 (RMRR), and so forth.
> > +**/
> > +typedef struct {
> > +  EFI_ACPI_DESCRIPTION_HEADER     Header;
> > +  /**
> > +    This field indicates the maximum DMA physical addressability
> > supported by
> > +    this platform. The system address map reported by the BIOS indicates
> > what
> > +    portions of this addresses are populated. The Host Address Width
> > (HAW) of
> > +    the platform is computed as (N+1), where N is the value reported in
> > this
> > +    field.
> > +    For example, for a platform supporting 40 bits of physical
> > addressability,
> > +    the value of 100111b is reported in this field.
> > +  **/
> > +  UINT8                           HostAddressWidth;
> > +  /**
> > +    - Bit[0]:   INTR_REMAP - If Clear, the platform does not support
> > interrupt
> > +                remapping. If Set, the platform supports interrupt
> > remapping.
> > +    - Bit[1]:   X2APIC_OPT_OUT - For firmware compatibility reasons,
> > platform
> > +                firmware may Set this field to request system software
> > to opt
> > +                out of enabling Extended xAPIC (X2APIC) mode. This
> > field is
> > +                valid only when the INTR_REMAP field (bit 0) is Set.
> > +    - Bits[7:2] Reserved.
> > +  **/
> > +  UINT8                           Flags;
> > +  UINT8                           Reserved[10];
> > +} EFI_ACPI_DMAR_HEADER;
> > +
> > +#pragma pack()
> > +
> > +#endif
> > --
> > 2.9.0.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to