On 15 March 2018 at 20:07, Leif Lindholm <leif.lindh...@linaro.org> wrote:
> On Thu, Mar 08, 2018 at 05:03:16PM +0000, Ard Biesheuvel wrote:
>> Add a ACPI PPTT table describing the cache topology of the Seattle SoC.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
>
> Looks plausible:
> Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>
>

Pushed as 6d6591a29e52

Thanks

>> ---
>>  Silicon/AMD/Styx/AcpiTables/AcpiTables.inf              |   1 +
>>  Silicon/AMD/Styx/AcpiTables/Pptt.c                      | 225 
>> ++++++++++++++++++++
>>  Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h                |   1 +
>>  Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c |   3 +-
>>  4 files changed, 229 insertions(+), 1 deletion(-)
>>
>> diff --git a/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf 
>> b/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
>> index cfffc73894c0..057c52512e4e 100644
>> --- a/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
>> +++ b/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
>> @@ -38,6 +38,7 @@ [Sources]
>>    Csrt.c
>>    Dsdt.c
>>    Iort.c
>> +  Pptt.c
>>
>>  [Packages]
>>    ArmPkg/ArmPkg.dec
>> diff --git a/Silicon/AMD/Styx/AcpiTables/Pptt.c 
>> b/Silicon/AMD/Styx/AcpiTables/Pptt.c
>> new file mode 100644
>> index 000000000000..d9d7c494d86f
>> --- /dev/null
>> +++ b/Silicon/AMD/Styx/AcpiTables/Pptt.c
>> @@ -0,0 +1,225 @@
>> +/** @file
>> +
>> +  Copyright (c) 2018, Linaro Ltd. 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.
>> +
>> +**/
>> +
>> +#include <IndustryStandard/Acpi.h>
>> +
>> +#include <AmdStyxAcpiLib.h>
>> +
>> +#define FIELD_OFFSET(type, name)            __builtin_offsetof(type, name)
>> +
>> +#pragma pack(1)
>> +typedef struct {
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR                     Core;
>> +  UINT32                                                    Offset[2];
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE                         DCache;
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE                         ICache;
>> +} STYX_PPTT_CORE;
>> +
>> +typedef struct {
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR                     Cluster;
>> +  UINT32                                                    Offset[1];
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE                         L2Cache;
>> +  STYX_PPTT_CORE                                            Cores[2];
>> +} STYX_PPTT_CLUSTER;
>> +
>> +typedef struct {
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_PROCESSOR                     Package;
>> +  UINT32                                                    Offset[1];
>> +  EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE                         L3Cache;
>> +  STYX_PPTT_CLUSTER                                         
>> Clusters[NUM_CORES / 2];
>> +} STYX_PPTT_PACKAGE;
>> +
>> +typedef struct {
>> +  EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER   Pptt;
>> +  STYX_PPTT_PACKAGE                                         Packages[1];
>> +} STYX_PPTT_TABLE;
>> +#pragma pack()
>> +
>> +#define PPTT_CORE(pid, cid, id) {                                           
>>   \
>> +  {                                                                         
>>   \
>> +    EFI_ACPI_6_2_PPTT_TYPE_PROCESSOR,                                       
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_CORE, DCache),                                  
>>   \
>> +    {},                                                                     
>>   \
>> +    {                                                                       
>>   \
>> +      0,                                        /* PhysicalPackage */       
>>   \
>> +      EFI_ACPI_6_2_PPTT_PROCESSOR_ID_VALID,     /* AcpiProcessorIdValid */  
>>   \
>> +    },                                                                      
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_TABLE,                                          
>>   \
>> +                  Packages[pid].Clusters[cid]), /* Parent */                
>>   \
>> +    ((cid) << 8) + (id),                        /* AcpiProcessorId */       
>>   \
>> +    2,                                          /* NumberOfPrivateResources 
>> */\
>> +  }, {                                                                      
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_TABLE,                                          
>>   \
>> +                  Packages[pid].Clusters[cid].Cores[id].DCache),            
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_TABLE,                                          
>>   \
>> +                  Packages[pid].Clusters[cid].Cores[id].ICache),            
>>   \
>> +  }, {                                                                      
>>   \
>> +    EFI_ACPI_6_2_PPTT_TYPE_CACHE,                                           
>>   \
>> +    sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE),                             
>>   \
>> +    {},                                                                     
>>   \
>> +    {                                                                       
>>   \
>> +      1,          /* SizePropertyValid */                                   
>>   \
>> +      1,          /* NumberOfSetsValid */                                   
>>   \
>> +      1,          /* AssociativityValid */                                  
>>   \
>> +      0,          /* AllocationTypeValid */                                 
>>   \
>> +      1,          /* CacheTypeValid */                                      
>>   \
>> +      1,          /* WritePolicyValid */                                    
>>   \
>> +      1,          /* LineSizeValid */                                       
>>   \
>> +    },                                                                      
>>   \
>> +    0,            /* NextLevelOfCache */                                    
>>   \
>> +    SIZE_32KB,    /* Size */                                                
>>   \
>> +    256,          /* NumberOfSets */                                        
>>   \
>> +    2,            /* Associativity */                                       
>>   \
>> +    {                                                                       
>>   \
>> +      0,                                                /* AllocationType 
>> */  \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_CACHE_TYPE_DATA,                        
>>   \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK,                
>>   \
>> +    },                                                                      
>>   \
>> +    64            /* LineSize */                                            
>>   \
>> +  }, {                                                                      
>>   \
>> +    EFI_ACPI_6_2_PPTT_TYPE_CACHE,                                           
>>   \
>> +    sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE),                             
>>   \
>> +    {},                                                                     
>>   \
>> +    {                                                                       
>>   \
>> +      1,          /* SizePropertyValid */                                   
>>   \
>> +      1,          /* NumberOfSetsValid */                                   
>>   \
>> +      1,          /* AssociativityValid */                                  
>>   \
>> +      0,          /* AllocationTypeValid */                                 
>>   \
>> +      1,          /* CacheTypeValid */                                      
>>   \
>> +      1,          /* WritePolicyValid */                                    
>>   \
>> +      1,          /* LineSizeValid */                                       
>>   \
>> +    },                                                                      
>>   \
>> +    0,            /* NextLevelOfCache */                                    
>>   \
>> +    3 * SIZE_16KB,/* Size */                                                
>>   \
>> +    256,          /* NumberOfSets */                                        
>>   \
>> +    3,            /* Associativity */                                       
>>   \
>> +    {                                                                       
>>   \
>> +      0,                                                /* AllocationType 
>> */  \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION,                 
>>   \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK,                
>>   \
>> +    },                                                                      
>>   \
>> +    64            /* LineSize */                                            
>>   \
>> +  }                                                                         
>>   \
>> +}
>> +
>> +#define PPTT_CLUSTER(pid, cid) {                                            
>>   \
>> +  {                                                                         
>>   \
>> +    EFI_ACPI_6_2_PPTT_TYPE_PROCESSOR,                                       
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_CLUSTER, L2Cache),                              
>>   \
>> +    {},                                                                     
>>   \
>> +    {                                                                       
>>   \
>> +      0,                                      /* PhysicalPackage */         
>>   \
>> +      EFI_ACPI_6_2_PPTT_PROCESSOR_ID_INVALID, /* AcpiProcessorIdValid */    
>>   \
>> +    },                                                                      
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_TABLE, Packages[pid]), /* Parent */             
>>   \
>> +    0,                                        /* AcpiProcessorId */         
>>   \
>> +    1,                                        /* NumberOfPrivateResources 
>> */  \
>> +  }, {                                                                      
>>   \
>> +    FIELD_OFFSET (STYX_PPTT_TABLE, Packages[pid].Clusters[cid].L2Cache),    
>>   \
>> +  }, {                                                                      
>>   \
>> +    EFI_ACPI_6_2_PPTT_TYPE_CACHE,                                           
>>   \
>> +    sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE),                             
>>   \
>> +    {},                                                                     
>>   \
>> +    {                                                                       
>>   \
>> +      1,          /* SizePropertyValid */                                   
>>   \
>> +      1,          /* NumberOfSetsValid */                                   
>>   \
>> +      1,          /* AssociativityValid */                                  
>>   \
>> +      0,          /* AllocationTypeValid */                                 
>>   \
>> +      1,          /* CacheTypeValid */                                      
>>   \
>> +      1,          /* WritePolicyValid */                                    
>>   \
>> +      1,          /* LineSizeValid */                                       
>>   \
>> +    },                                                                      
>>   \
>> +    0,            /* NextLevelOfCache */                                    
>>   \
>> +    SIZE_1MB,     /* Size */                                                
>>   \
>> +    1024,         /* NumberOfSets */                                        
>>   \
>> +    16,           /* Associativity */                                       
>>   \
>> +    {                                                                       
>>   \
>> +      0,                                                /* AllocationType 
>> */  \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED,                     
>>   \
>> +      EFI_ACPI_6_2_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK,                
>>   \
>> +    },                                                                      
>>   \
>> +    64            /* LineSize */                                            
>>   \
>> +  }, {                                                                      
>>   \
>> +    PPTT_CORE(pid, cid, 0),                                                 
>>   \
>> +    PPTT_CORE(pid, cid, 1),                                                 
>>   \
>> +  }                                                                         
>>   \
>> +}
>> +
>> +STATIC STYX_PPTT_TABLE mSynQuacerPpttTable = {
>> +  {
>> +    
>> AMD_ACPI_HEADER(EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,
>> +                    STYX_PPTT_TABLE,
>> +                    
>> EFI_ACPI_6_2_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION),
>> +  },
>> +  {
>> +    {
>> +      {
>> +        EFI_ACPI_6_2_PPTT_TYPE_PROCESSOR,
>> +        FIELD_OFFSET (STYX_PPTT_PACKAGE, L3Cache),
>> +        {},
>> +        {
>> +          1,                                      /* PhysicalPackage */
>> +          EFI_ACPI_6_2_PPTT_PROCESSOR_ID_INVALID, /* AcpiProcessorIdValid */
>> +        },
>> +        0,                                        /* Parent */
>> +        0,                                        /* AcpiProcessorId */
>> +        1,                                        /* 
>> NumberOfPrivateResources */
>> +      }, {
>> +        FIELD_OFFSET (STYX_PPTT_TABLE, Packages[0].L3Cache),
>> +      }, {
>> +        EFI_ACPI_6_2_PPTT_TYPE_CACHE,
>> +        sizeof (EFI_ACPI_6_2_PPTT_STRUCTURE_CACHE),
>> +        {},
>> +        {
>> +          1,                                      /* SizePropertyValid */
>> +          1,                                      /* NumberOfSetsValid */
>> +          1,                                      /* AssociativityValid */
>> +          0,                                      /* AllocationTypeValid */
>> +          1,                                      /* CacheTypeValid */
>> +          1,                                      /* WritePolicyValid */
>> +          1,                                      /* LineSizeValid */
>> +        },
>> +        0,                                        /* NextLevelOfCache */
>> +        SIZE_8MB,                                 /* Size */
>> +        8192,                                     /* NumberOfSets */
>> +        16,                                       /* Associativity */
>> +        {
>> +          0,                                      /* AllocationType */
>> +          EFI_ACPI_6_2_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED,
>> +          EFI_ACPI_6_2_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK,
>> +        },
>> +        64                                        /* LineSize */
>> +      }, {
>> +        PPTT_CLUSTER (0, 0),
>> +#if NUM_CORES > 3
>> +        PPTT_CLUSTER (0, 1),
>> +#if NUM_CORES > 5
>> +        PPTT_CLUSTER (0, 2),
>> +#if NUM_CORES > 7
>> +        PPTT_CLUSTER (0, 3),
>> +#endif
>> +#endif
>> +#endif
>> +      }
>> +    }
>> +  }
>> +};
>> +
>> +EFI_ACPI_DESCRIPTION_HEADER *
>> +PpttHeader (
>> +  VOID
>> +  )
>> +{
>> +  return (EFI_ACPI_DESCRIPTION_HEADER *)&mSynQuacerPpttTable.Pptt.Header;
>> +}
>> diff --git a/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h 
>> b/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h
>> index 9438b8b0c27e..58e160b6d727 100644
>> --- a/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h
>> +++ b/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h
>> @@ -28,6 +28,7 @@ EFI_ACPI_DESCRIPTION_HEADER *Dbg2Header (void);
>>  EFI_ACPI_DESCRIPTION_HEADER *SpcrHeader (void);
>>  EFI_ACPI_DESCRIPTION_HEADER *CsrtHeader (void);
>>  EFI_ACPI_DESCRIPTION_HEADER *IortHeader (void);
>> +EFI_ACPI_DESCRIPTION_HEADER *PpttHeader (void);
>>
>>  #define EFI_ACPI_AMD_OEM_ID_ARRAY        {'A','M','D','I','N','C'}
>>  #define EFI_ACPI_AMD_OEM_TABLE_ID        
>> SIGNATURE_64('S','E','A','T','T','L','E',' ')
>> diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c 
>> b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
>> index 15b38bbf89c6..901eac105932 100644
>> --- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
>> +++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
>> @@ -27,7 +27,7 @@
>>  #include <Library/PcdLib.h>
>>  #include <Library/UefiBootServicesTableLib.h>
>>
>> -#define MAX_ACPI_TABLES    12
>> +#define MAX_ACPI_TABLES    16
>>
>>  EFI_ACPI_DESCRIPTION_HEADER *AcpiTableList[MAX_ACPI_TABLES];
>>
>> @@ -69,6 +69,7 @@ AcpiPlatformEntryPoint (
>>    if (PcdGetBool (PcdEnableSmmus)) {
>>      AcpiTableList[TableIndex++] = IortHeader();
>>    }
>> +  AcpiTableList[TableIndex++] = PpttHeader();
>>    AcpiTableList[TableIndex++] = NULL;
>>
>>    DEBUG((DEBUG_INFO, "%a(): ACPI Table installer\n", __FUNCTION__));
>> --
>> 2.15.1
>>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to