On Tue, Jul 09, 2024 at 12:47:09 +0200, Marcin Juszkiewicz wrote: > During Linaro Connect MAD24 I was asked to move cache information from > being 'per cluster' to be 'per core'. This is a move for implementing > MPAM support. > > So topology moves from: > > Socket -> Clusters -> Cores + Caches -> Threads (if exist) > > to: > > Socket -> Clusters -> Cores -> Caches + Threads (if exist) > > Cache sizes are still 32+32+512KB (L1d, L1i, L2) as QEMU does not > implement them at all so we can tell whatever. > > Signed-off-by: Marcin Juszkiewicz <marcin.juszkiew...@linaro.org>
Reviewed-by: Leif Lindholm <quic_llind...@quicinc.com> / Leif > --- > .../Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c | 47 > +++++++++++--------- > 1 file changed, 25 insertions(+), 22 deletions(-) > > diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c > b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c > index cf0102d11f1f..a7a9664abdcb 100644 > --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c > +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c > @@ -562,8 +562,8 @@ AddPpttTable ( > TableSize = sizeof (EFI_ACPI_DESCRIPTION_HEADER) + > CpuTopo.Sockets * (sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR) + > CpuTopo.Clusters * (sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR) + > - sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE) * 3 + > CpuTopo.Cores * (sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR) + > + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE) * 3 + > sizeof > (UINT32) * 2))); > > if (CpuTopo.Threads > 1) { > @@ -609,10 +609,7 @@ AddPpttTable ( > > ClusterIndex = SocketIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR); > for (ClusterNum = 0; ClusterNum < CpuTopo.Clusters; ClusterNum++) { > - L1DCacheIndex = ClusterIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR); > - L1ICacheIndex = L1DCacheIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > - L2CacheIndex = L1ICacheIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > - CoreIndex = L2CacheIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + CoreIndex = ClusterIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR); > > // Add the Cluster PPTT structure > EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR Cluster = > SBSAQEMU_ACPI_PROCESSOR_HIERARCHY_NODE_STRUCTURE_INIT ( > @@ -624,27 +621,15 @@ AddPpttTable ( > CopyMem (New, &Cluster, sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR)); > New += sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR); > > - // Add L1 D Cache structure > - L1DCache.CacheId = CacheId++; > - CopyMem (New, &L1DCache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > - ((EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE *)New)->NextLevelOfCache = > L2CacheIndex; > - New += sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > - > - // Add L1 I Cache structure > - L1ICache.CacheId = CacheId++; > - CopyMem (New, &L1ICache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > - ((EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE *)New)->NextLevelOfCache = > L2CacheIndex; > - New += sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > - > - // Add L2 Cache structure > - L2Cache.CacheId = CacheId++; > - CopyMem (New, &L2Cache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > - New += sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > - > for (CoreNum = 0; CoreNum < CpuTopo.Cores; CoreNum++) { > UINT32 *PrivateResourcePtr; > UINT32 CoreCpuId; > > + // two UINT32s for PrivateResourcePtr data > + L1DCacheIndex = CoreIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR) + sizeof (UINT32) * 2; > + L1ICacheIndex = L1DCacheIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + L2CacheIndex = L1ICacheIndex + sizeof > (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + > if (CpuTopo.Threads == 1) { > CoreCpuId = CpuId; > } else { > @@ -665,6 +650,23 @@ AddPpttTable ( > PrivateResourcePtr[1] = L1ICacheIndex; > New += (2 * sizeof (UINT32)); > > + // Add L1 D Cache structure > + L1DCache.CacheId = CacheId++; > + CopyMem (New, &L1DCache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > + ((EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE *)New)->NextLevelOfCache = > L2CacheIndex; > + New += > sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + > + // Add L1 I Cache structure > + L1ICache.CacheId = CacheId++; > + CopyMem (New, &L1ICache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > + ((EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE *)New)->NextLevelOfCache = > L2CacheIndex; > + New += > sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + > + // Add L2 Cache structure > + L2Cache.CacheId = CacheId++; > + CopyMem (New, &L2Cache, sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE)); > + New += sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE); > + > if (CpuTopo.Threads == 1) { > CpuId++; > } else { > @@ -685,6 +687,7 @@ AddPpttTable ( > } > > CoreIndex += sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_PROCESSOR) + sizeof > (UINT32) * 2; > + CoreIndex += sizeof (EFI_ACPI_6_5_PPTT_STRUCTURE_CACHE) * 3; > } > > ClusterIndex = CoreIndex; > > -- > 2.45.2 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119842): https://edk2.groups.io/g/devel/message/119842 Mute This Topic: https://groups.io/mt/107120146/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-