From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web08.6624.1618306491103959160 for ; Tue, 13 Apr 2021 02:34:51 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: pierre.gondois@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A92F3106F; Tue, 13 Apr 2021 02:34:50 -0700 (PDT) Received: from [10.57.22.244] (unknown [10.57.22.244]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8A27A3F73B; Tue, 13 Apr 2021 02:34:49 -0700 (PDT) From: "PierreGondois" Subject: Re: [edk2-devel] [edk2-platforms][PATCH V1 5/8] Platform/Sgi: ACPI PPTT table for RD-E1-Edge platform To: "devel@edk2.groups.io" , Pranav Madhu Cc: Ard Biesheuvel , Leif Lindholm , Sami Mujawar References: <20210402091208.16752-1-pranav.madhu@arm.com> <20210402091208.16752-6-pranav.madhu@arm.com> Message-ID: <91781887-47e9-2a87-4d88-f8e7e36b18f7@arm.com> Date: Tue, 13 Apr 2021 10:34:45 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1 MIME-Version: 1.0 In-Reply-To: <20210402091208.16752-6-pranav.madhu@arm.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Hi Pranav, > +=A0 } > + > +#define PPTT_CORE_INIT(pid, cid,=20 > coreId)=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > + { \ > +=A0=A0=A0 /* Parameters for CPU Core=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT=20 > (=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 __builtin_offsetof (RDE1EDGE_PPTT_CORE, DCache), /* Le= ngth=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 PPTT_PROCESSOR_CORE_THREADED_FLAGS,=A0=A0=A0=A0=A0=A0=A0= =A0 /* Flag=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 __builtin_offsetof=20 > (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,=A0=A0=A0 \ > +=A0=A0=A0=A0=A0=A0=A0 Package.Cluster[cid]),=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Parent=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 0,=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* = ACPI Id=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 2=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 = /* Num of private=20 > resource */\ > + ), \ > + \ > +=A0=A0=A0 /* Offsets of the private resources=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > + { \ > +=A0=A0=A0=A0=A0 __builtin_offsetof=20 > (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,=A0=A0=A0 \ > + Package.Cluster[cid].Core[coreId].DCache), \ > +=A0=A0=A0=A0=A0 __builtin_offsetof=20 > (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,=A0=A0=A0 \ > + Package.Cluster[cid].Core[coreId].ICache) \ > + }, \ Would it be possible to use the edk2/MdePkg/Include/Base.h:OFFSET_OF()=20 macro to handle the different compilers ? This modification could be applied to all the other PPTT tables in the se= t. > + \ > +=A0=A0=A0 /* L1 Data cache parameters=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT=20 > (=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 PPTT_CACHE_STRUCTURE_FLAGS,=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 /* Flag=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 \ > +=A0=A0=A0=A0=A0 __builtin_offsetof=20 > (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,=A0=A0=A0 \ > + Package.Cluster[cid].Core[coreId].L2Cache), \ > +=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Next level o= f cache=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 SIZE_32KB,=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Size=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 \ > +=A0=A0=A0=A0=A0 128,=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Num of sets=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 4,=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Associativity=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 PPTT_DATA_CACHE_ATTR,=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0 /* Attributes=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > +=A0=A0=A0=A0=A0 64=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 /* Line size=20 > */=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \ > + ), \ > + \ [...] > + > +#pragma pack(1) > +typedef struct { > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR Thread; > +} RDE1EDGE_PPTT_THREAD; > + > +typedef struct { > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR=A0 Core; > +=A0 UINT32=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Offset[2]; Similarly to the the first patch, I think there should be 3 elements=20 (and if possible renamed to 'PrivateResources'). > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE=A0=A0=A0=A0=A0 DCache; > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE=A0=A0=A0=A0=A0 ICache; > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE=A0=A0=A0=A0=A0 L2Cache; > +=A0 RDE1EDGE_PPTT_THREAD Thread[THREAD_PER_CORE]; > +} RDE1EDGE_PPTT_CORE; > + > +typedef struct { > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR=A0 Cluster; > +=A0 UINT32=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Offset; > +=A0 EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE=A0=A0=A0=A0=A0 L3Cache; > +=A0 RDE1EDGE_PPTT_CORE=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0 Core[CORE_COUNT /=20 > THREAD_PER_CORE]; > +} RDE1EDGE_PPTT_CLUSTER; > + Regards, Pierre