Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package CoreFreq for openSUSE:Factory checked in at 2024-11-22 23:52:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/CoreFreq (Old) and /work/SRC/openSUSE:Factory/.CoreFreq.new.28523 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "CoreFreq" Fri Nov 22 23:52:13 2024 rev:40 rq:1225774 version:1.98.7 Changes: -------- --- /work/SRC/openSUSE:Factory/CoreFreq/CoreFreq.changes 2024-11-17 16:42:10.957684689 +0100 +++ /work/SRC/openSUSE:Factory/.CoreFreq.new.28523/CoreFreq.changes 2024-11-22 23:52:55.052879243 +0100 @@ -1,0 +2,13 @@ +Fri Nov 22 09:42:29 UTC 2024 - Michael Pujos <pujos.mich...@gmail.com> + +- Update to 1.98.7 + * [AMD] + - [Family 1Ah][Granite Ridge] + - P-State programming fix + - Merge PCI identifier lists + - Reserve the BTC-NOBR aggregation to Zen2 architecture + * [AArch64] + - Query and JSON export Hypervisor Configuration Register HCR_EL2 + - Experimental mode required + +------------------------------------------------------------------- Old: ---- CoreFreq-1.98.6.tar.gz New: ---- CoreFreq-1.98.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ CoreFreq.spec ++++++ --- /var/tmp/diff_new_pack.tbGdOJ/_old 2024-11-22 23:52:56.332932570 +0100 +++ /var/tmp/diff_new_pack.tbGdOJ/_new 2024-11-22 23:52:56.332932570 +0100 @@ -17,7 +17,7 @@ Name: CoreFreq -Version: 1.98.6 +Version: 1.98.7 Release: 0 Summary: CPU monitoring software for 64-bit processors License: GPL-2.0-or-later ++++++ CoreFreq-1.98.6.tar.gz -> CoreFreq-1.98.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/Makefile new/CoreFreq-1.98.7/Makefile --- old/CoreFreq-1.98.6/Makefile 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/Makefile 2024-11-19 21:23:20.000000000 +0100 @@ -4,7 +4,7 @@ COREFREQ_MAJOR = 1 COREFREQ_MINOR = 98 -COREFREQ_REV = 6 +COREFREQ_REV = 7 HW = $(shell uname -m) CC ?= cc WARNING = -Wall -Wfatal-errors diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/aarch64/corefreq-api.h new/CoreFreq-1.98.7/aarch64/corefreq-api.h --- old/CoreFreq-1.98.6/aarch64/corefreq-api.h 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/aarch64/corefreq-api.h 2024-11-19 21:23:20.000000000 +0100 @@ -200,6 +200,7 @@ struct { Bit64 FLAGS __attribute__ ((aligned (8))); + Bit64 HCR __attribute__ ((aligned (8))); Bit64 SCTLR __attribute__ ((aligned (8))); Bit64 SCTLR2 __attribute__ ((aligned (8))); Bit64 EL __attribute__ ((aligned (8))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/aarch64/corefreq-cli-json.c new/CoreFreq-1.98.7/aarch64/corefreq-cli-json.c --- old/CoreFreq-1.98.6/aarch64/corefreq-cli-json.c 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/aarch64/corefreq-cli-json.c 2024-11-19 21:23:20.000000000 +0100 @@ -1391,6 +1391,10 @@ json_key(&s, "FLAGS"); json_string(&s, hexStr); + snprintf(hexStr, 32, "0x%llx", RO(Shm)->Cpu[cpu].SystemRegister.HCR); + json_key(&s, "HCR"); + json_string(&s, hexStr); + snprintf(hexStr, 32, "0x%llx", RO(Shm)->Cpu[cpu].SystemRegister.SCTLR); json_key(&s, "SCTLR"); json_string(&s, hexStr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/aarch64/corefreq.h new/CoreFreq-1.98.7/aarch64/corefreq.h --- old/CoreFreq-1.98.6/aarch64/corefreq.h 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/aarch64/corefreq.h 2024-11-19 21:23:20.000000000 +0100 @@ -187,6 +187,7 @@ struct { Bit64 FLAGS __attribute__ ((aligned (8))); + Bit64 HCR __attribute__ ((aligned (8))); Bit64 SCTLR __attribute__ ((aligned (8))); Bit64 SCTLR2 __attribute__ ((aligned (8))); Bit64 EL __attribute__ ((aligned (8))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/aarch64/corefreqd.c new/CoreFreq-1.98.7/aarch64/corefreqd.c --- old/CoreFreq-1.98.6/aarch64/corefreqd.c 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/aarch64/corefreqd.c 2024-11-19 21:23:20.000000000 +0100 @@ -860,6 +860,9 @@ RO(Shm)->Cpu[cpu].SystemRegister.FLAGS = \ RO(Core, AT(cpu))->SystemRegister.FLAGS; + RO(Shm)->Cpu[cpu].SystemRegister.HCR = \ + RO(Core, AT(cpu))->SystemRegister.HCR; + RO(Shm)->Cpu[cpu].SystemRegister.SCTLR = \ RO(Core, AT(cpu))->SystemRegister.SCTLR; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/aarch64/corefreqk.c new/CoreFreq-1.98.7/aarch64/corefreqk.c --- old/CoreFreq-1.98.6/aarch64/corefreqk.c 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/aarch64/corefreqk.c 2024-11-19 21:23:20.000000000 +0100 @@ -2449,6 +2449,14 @@ isar2.value = SysRegRead(ID_AA64ISAR2_EL1); + if (Experimental) { + __asm__ __volatile__( + "mrs %[hcr] , hcr_el2" + : [hcr] "=r" (Core->SystemRegister.HCR) + : + : "cc", "memory" + ); + } __asm__ __volatile__( "mrs %[sctlr], sctlr_el1" "\n\t" "mrs %[mmfr1], id_aa64mmfr1_el1""\n\t" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/x86_64/corefreqd.c new/CoreFreq-1.98.7/x86_64/corefreqd.c --- old/CoreFreq-1.98.6/x86_64/corefreqd.c 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/x86_64/corefreqd.c 2024-11-19 21:23:20.000000000 +0100 @@ -2183,11 +2183,6 @@ Mitigation_2nd_Stage(RO(Shm), RO(Proc), RW(Proc)); - RO(Shm)->Proc.Mechanisms.BTC_NOBR = ( - RO(Shm)->Proc.Features.leaf80000008.EBX.STIBP == 1 - ); - RO(Shm)->Proc.Mechanisms.BTC_NOBR += (2 * BTC_NOBR); - switch (RO(Shm)->Proc.ArchID) { case AMD_EPYC_Rome_CPK: case AMD_Zen2_Renoir: @@ -2197,6 +2192,11 @@ case AMD_Zen2_Jupiter: case AMD_Zen2_Galileo: case AMD_Zen2_MDN: + RO(Shm)->Proc.Mechanisms.BTC_NOBR = ( + RO(Shm)->Proc.Features.leaf80000008.EBX.STIBP == 1 + ); + RO(Shm)->Proc.Mechanisms.BTC_NOBR += (2 * BTC_NOBR); + RO(Shm)->Proc.Mechanisms.XPROC_LEAK = \ BITCMP_CC(LOCKLESS, RW(Proc)->XPROC_LEAK, @@ -2208,6 +2208,7 @@ RO(Proc)->BTC_NOBR_Mask) ? 0b11 : 0b10; break; default: + RO(Shm)->Proc.Mechanisms.BTC_NOBR = 0; RO(Shm)->Proc.Mechanisms.XPROC_LEAK = 0; RO(Shm)->Proc.Mechanisms.AGENPICK = 0; break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/x86_64/corefreqk.c new/CoreFreq-1.98.7/x86_64/corefreqk.c --- old/CoreFreq-1.98.6/x86_64/corefreqk.c 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/x86_64/corefreqk.c 2024-11-19 21:23:20.000000000 +0100 @@ -8095,28 +8095,37 @@ } inline COF_ST AMD_Zen_CoreCOF(PSTATEDEF PStateDef) -{/* Source: PPR for AMD Family 17h Model 01h, Revision B1 Processors - CoreCOF = (PStateDef[CpuFid[7:0]] / PStateDef[CpuDfsId]) * 200 */ +{ unsigned long remainder; COF_ST COF; - if (PStateDef.Family_17h.CpuDfsId > 0b111) { - COF.Q = (PStateDef.Family_17h.CpuFid << 1) - / PStateDef.Family_17h.CpuDfsId; - remainder = (UNIT_KHz(1) * (PStateDef.Family_17h.CpuFid - - ((COF.Q * PStateDef.Family_17h.CpuDfsId) >> 1))) >> 2; - COF.R = (unsigned short) remainder; - } else switch (PUBLIC(RO(Proc))->Features.Std.EAX.ExtFamily) { - case 0xB: /* Zen5: Granite Ridge, Strix Point, Turin */ + switch (PUBLIC(RO(Proc))->Features.Std.EAX.ExtFamily) { + case 0xB: + /* Source: PPR Family 1Ah Model 02h. + * Arch: Granite Ridge, Strix Point, Turin, Dense + * CoreCOF = Core::X86::Msr::PStateDef[CpuFid[11:0]] * 5 MHz + */ COF.Q = (PStateDef.Family_1Ah.CpuFid >> 1) / 10; remainder = (PRECISION * PStateDef.Family_1Ah.CpuFid) >> 1; remainder = remainder - (UNIT_KHz(1) * COF.Q); COF.R = (unsigned short) remainder; break; - default: + default: + /* Source: PPR for AMD Family 17h Model 01h, Revision B1 Processors + * CoreCOF = (PStateDef[CpuFid[7:0]] / PStateDef[CpuDfsId]) * 200 + */ + if (PStateDef.Family_17h.CpuDfsId != 0) + { + COF.Q = (PStateDef.Family_17h.CpuFid << 1) + / PStateDef.Family_17h.CpuDfsId; + remainder = (UNIT_KHz(1) * (PStateDef.Family_17h.CpuFid + - ((COF.Q * PStateDef.Family_17h.CpuDfsId) >> 1))) >> 2; + COF.R = (unsigned short) remainder; + } else { COF.Q = PStateDef.Family_17h.CpuFid >> 2; COF.R = 0; + } break; - } + } return COF; } @@ -8138,16 +8147,36 @@ } } +inline unsigned short AMD_Zen5_Compute_FID( unsigned int COF, + unsigned int *FID ) +{ + unsigned int tmp = (COF << 1) * 10; + if ((tmp >= 0x10) && (tmp <= 0xfff)) { + (*FID) = tmp; + return 0; + } else { + return 1; + } +} + static unsigned short AMD_Zen_CoreFID( unsigned int COF, unsigned int *FID, unsigned int *DID ) { - unsigned short ret = AMD_Zen_Compute_FID_DID(COF, FID, DID); + unsigned short ret; + switch (PUBLIC(RO(Proc))->Features.Std.EAX.ExtFamily) { + case 0xB: + ret = AMD_Zen5_Compute_FID(COF, FID); + break; + default: + ret = AMD_Zen_Compute_FID_DID(COF, FID, DID); while ((ret != 0) && ((*DID) > 0)) { (*DID) = (*DID) >> 1; ret = AMD_Zen_Compute_FID_DID(COF, FID, DID); } + break; + } return ret; } @@ -8332,7 +8361,7 @@ CLOCK_ZEN_ARG *pClockZen = (CLOCK_ZEN_ARG *) arg; PSTATEDEF PstateDef = {.value = 0}; COF_ST COF = {.Q = 0, .R = 0}; - unsigned int FID, DID; + unsigned int FID, DID = 0; const unsigned int smp = pClockZen->pClockMod->cpu == -1 ? smp_processor_id() : pClockZen->pClockMod->cpu; @@ -8351,13 +8380,27 @@ COF.Q = COF.Q + pClockZen->pClockMod->Offset; } - FID = PstateDef.Family_17h.CpuFid; - DID = PstateDef.Family_17h.CpuDfsId; + switch (PUBLIC(RO(Proc))->Features.Std.EAX.ExtFamily) { + case 0xB: + FID = PstateDef.Family_1Ah.CpuFid; + break; + default: + FID = PstateDef.Family_17h.CpuFid; + DID = PstateDef.Family_17h.CpuDfsId; + break; + } /* Attempt to write the P-State MSR with new FID and DID */ if (AMD_Zen_CoreFID(COF.Q, &FID, &DID) == 0) { - PstateDef.Family_17h.CpuFid = FID; - PstateDef.Family_17h.CpuDfsId = DID; + switch (PUBLIC(RO(Proc))->Features.Std.EAX.ExtFamily) { + case 0xB: + PstateDef.Family_1Ah.CpuFid = FID; + break; + default: + PstateDef.Family_17h.CpuFid = FID; + PstateDef.Family_17h.CpuDfsId = DID; + break; + } WRMSR(PstateDef, pClockZen->PstateAddr); pClockZen->rc = RC_OK_COMPUTE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CoreFreq-1.98.6/x86_64/corefreqk.h new/CoreFreq-1.98.7/x86_64/corefreqk.h --- old/CoreFreq-1.98.6/x86_64/corefreqk.h 2024-11-16 13:35:40.000000000 +0100 +++ new/CoreFreq-1.98.7/x86_64/corefreqk.h 2024-11-19 21:23:20.000000000 +0100 @@ -3442,13 +3442,7 @@ PCI_VDEVICE(AMD, DID_AMD_19H_PHOENIX_DF_UMC), .driver_data = (kernel_ulong_t) AMD_DataFabric_Phoenix }, - {0, } -}; - -#define PCI_AMD_19h_ids PCI_AMD_17h_ids - /* AMD Family 1Ah */ -static struct pci_device_id PCI_AMD_1Ah_ids[] = { { PCI_VDEVICE(AMD, DID_AMD_1AH_ZEN5_TURIN_IOMMU), .driver_data = (kernel_ulong_t) AMD_Zen_IOMMU @@ -3460,6 +3454,9 @@ {0, } }; +#define PCI_AMD_19h_ids PCI_AMD_17h_ids +#define PCI_AMD_1Ah_ids PCI_AMD_17h_ids + /* Left as empty for initialization purpose. */ static char *Arch_Misc_Processor[] = ZLIST(NULL);