Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package CoreFreq for openSUSE:Factory 
checked in at 2023-02-10 14:35:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/CoreFreq (Old)
 and      /work/SRC/openSUSE:Factory/.CoreFreq.new.1848 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "CoreFreq"

Fri Feb 10 14:35:51 2023 rev:22 rq:1064171 version:1.95.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/CoreFreq/CoreFreq.changes        2023-01-23 
18:32:49.980421172 +0100
+++ /work/SRC/openSUSE:Factory/.CoreFreq.new.1848/CoreFreq.changes      
2023-02-10 14:35:52.414118877 +0100
@@ -1,0 +2,20 @@
+Thu Feb  9 16:49:17 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.95.2:
+  * Fixed the aggregation of the minimum ratio
+  Intel:
+  * [Airmont][Silvermont] Attempt to decode `tCKE` from DRMC
+    register
+  * [Airmont] Improve `tWTPr`, `B2B`, `tWWDR` timings
+  * [Airmont] Provide a new IMC decoder
+  * Add the Emerald Rapids architecture entry
+  * [DDR5][DDR4] Add the `RCDw` IMC timing
+  * [Raptor Lake ] De-activate the MSR Uncore counter
+  AMD:
+  * "Zen3/Barcelo-R" and "Zen3+ Rembrandt-R" codenames
+  * [Zen] Thermal highest limit reset fix
+  Misc:
+  * Code review and Registers documentation:
+    AMD HWCR, Intel HDC and DRP
+
+-------------------------------------------------------------------

Old:
----
  CoreFreq-1.95.1.tar.gz

New:
----
  CoreFreq-1.95.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ CoreFreq.spec ++++++
--- /var/tmp/diff_new_pack.geUit0/_old  2023-02-10 14:35:52.802121196 +0100
+++ /var/tmp/diff_new_pack.geUit0/_new  2023-02-10 14:35:52.814121267 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           CoreFreq
-Version:        1.95.1
+Version:        1.95.2
 Release:        0
 Summary:        CPU monitoring software for 64-bit processors
 License:        GPL-2.0-or-later

++++++ CoreFreq-1.95.1.tar.gz -> CoreFreq-1.95.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/Makefile new/CoreFreq-1.95.2/Makefile
--- old/CoreFreq-1.95.1/Makefile        2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/Makefile        2023-02-05 15:34:56.000000000 +0100
@@ -219,6 +219,7 @@
        "|   | MSR_IA32_APERF            |  MSR_IA32_MPERF           |   |\n"\
        "|   | MSR_CORE_PERF_FIXED_CTR1  |  MSR_CORE_PERF_FIXED_CTR2 |   |\n"\
        "|   | MSR_PPERF                 |  MSR_PPERF                |   |\n"\
+       "|   |                           |  MSR_ANY_CORE_C0          |   |\n"\
        "|   | MSR_AMD_F17H_APERF        |  MSR_AMD_F17H_MPERF       |   |\n"\
        "|    -------------------------------------------------------    |\n"\
        "|                                                               |\n"\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/amd_reg.h 
new/CoreFreq-1.95.2/amd_reg.h
--- old/CoreFreq-1.95.1/amd_reg.h       2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/amd_reg.h       2023-02-05 15:34:56.000000000 +0100
@@ -351,8 +351,10 @@
        IRPerfEn        : 31-30, /* RW: Enable Instructions Retired counter */
        SmmBaseLock     : 32-31, /* MSR SMM_BASE saved/restored from save area*/
        TprLoweringDis  : 33-32, /* RW: FastTprLoweringDis: 1=Disabled  */
-       SmmPgCfgLock    : 34-33,
-       Reserved8       : 64-34;
+       SmmPgCfgLock    : 34-33, /* SMM reserved and iff 8000_0021_EAX[3] */
+       Reserved8       : 35-34,
+       CpuidUserDis    : 36-35, /* CPUID User Disable iff 8000_0021_EAX[17] */
+       Reserved9       : 64-36;
     } Family_17h;
     struct
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-api.h 
new/CoreFreq-1.95.2/corefreq-api.h
--- old/CoreFreq-1.95.1/corefreq-api.h  2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/corefreq-api.h  2023-02-05 15:34:56.000000000 +0100
@@ -679,6 +679,7 @@
        /* 0F00h */     SOC_MC_DTR2             DTR2;           /* 32 bits    */
        /* 0F00h */     SOC_MC_DTR3             DTR3;           /* 32 bits    */
        /* 0F00h */     SOC_MC_DRFC             DRFC;           /* 32 bits    */
+                       SOC_MC_DRMC             DRMC;           /* 32 bits    */
        /* 0F00h */     SOC_MC_BIOS_CFG         BIOS_CFG;       /* 32 bits    */
                } SLM;
                struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-cli-rsc-en.h 
new/CoreFreq-1.95.2/corefreq-cli-rsc-en.h
--- old/CoreFreq-1.95.1/corefreq-cli-rsc-en.h   2023-01-23 00:29:55.000000000 
+0100
+++ new/CoreFreq-1.95.2/corefreq-cli-rsc-en.h   2023-02-05 15:34:56.000000000 
+0100
@@ -1421,6 +1421,8 @@
 #define RSC_DDR3_CKE_COMM_CODE_EN      " tCKE ( ClocK Enable ) "
 #define RSC_DDR3_ECC_COMM_CODE_EN      " ECC ( Error Correcting Code ) "
 
+#define RSC_DDR4_RCD_R_COMM_CODE_EN    " tRCD_R ( Activate to Read CAS ) "
+#define RSC_DDR4_RCD_W_COMM_CODE_EN    " tRCD_W ( Activate to Write CAS ) "
 #define RSC_DDR4_RDRD_SCL_COMM_CODE_EN " tRDRD ( Read to Read, Same Bank ) "
 #define RSC_DDR4_RDRD_SC_COMM_CODE_EN " tRDRD ( Read to Read, Different Bank ) 
"
 #define RSC_DDR4_RDRD_SD_COMM_CODE_EN " tRDRD ( Read to Read, Different Rank ) 
"
@@ -1467,8 +1469,6 @@
 #define RSC_DDR4_CPDED_COMM_CODE_EN " tCPDED ( Command Pass Disable Delay ) "
 #define RSC_DDR4_GEAR_COMM_CODE_EN     " GEAR ( Clock Gear Mode ) "
 
-#define RSC_DDR4_ZEN_RCD_R_COMM_CODE_EN " tRCD_R ( Activate to Read CAS ) "
-#define RSC_DDR4_ZEN_RCD_W_COMM_CODE_EN " tRCD_W ( Activate to Write CAS ) "
 #define RSC_DDR4_ZEN_RC_COMM_CODE_EN   " tRC ( Activate to Activate ) "
 
 #define RSC_DDR4_ZEN_WTR_S_COMM_CODE_EN \
@@ -2399,7 +2399,8 @@
 #define RSC_DDR3_ECC_CODE              "  ECC"
 
 #define RSC_DDR4_CL_CODE               "   CL"
-#define RSC_DDR4_RCD_CODE              "  RCD"
+#define RSC_DDR4_RCD_R_CODE            " RCDr"
+#define RSC_DDR4_RCD_W_CODE            " RCDw"
 #define RSC_DDR4_RP_CODE               "   RP"
 #define RSC_DDR4_RAS_CODE              "  RAS"
 #define RSC_DDR4_RRD_CODE              "  RRD"
@@ -2410,7 +2411,7 @@
 #define RSC_DDR4_FAW_CODE              "  FAW"
 #define RSC_DDR4_GEAR_CODE             " GEAR"
 #define RSC_DDR4_CWL_CODE              "  CWL"
-#define RSC_DDR4_CMD_CODE              " CMD "
+#define RSC_DDR4_CMD_CODE              "  CMD"
 #define RSC_DDR4_REFI_CODE             " REFI"
 #define RSC_DDR4_RDRD_SCL_CODE         " sgRR"
 #define RSC_DDR4_RDRD_SC_CODE          " dgRR"
@@ -2430,13 +2431,11 @@
 #define RSC_DDR4_WRWR_DD_CODE          " ddWW"
 #define RSC_DDR4_RRD_S_CODE            " RRDs"
 #define RSC_DDR4_RRD_L_CODE            " RRDl"
-#define RSC_DDR4_CKE_CODE              " CKE "
+#define RSC_DDR4_CKE_CODE              "  CKE"
 #define RSC_DDR4_CPDED_CODE            "CPDED"
 #define RSC_DDR4_ECC_CODE              "  ECC"
 
 #define RSC_DDR4_ZEN_CL_CODE           "  CL "
-#define RSC_DDR4_ZEN_RCD_R_CODE        " RCDr"
-#define RSC_DDR4_ZEN_RCD_W_CODE        " RCDw"
 #define RSC_DDR4_ZEN_RP_CODE           "  RP "
 #define RSC_DDR4_ZEN_RAS_CODE          " RAS "
 #define RSC_DDR4_ZEN_RC_CODE           "  RC "
@@ -2470,8 +2469,6 @@
 #define RSC_DDR4_ZEN_BGS_ALT_CODE      ":Alt "
 #define RSC_DDR4_ZEN_BAN_CODE          " Ban "
 #define RSC_DDR4_ZEN_RCPAGE_CODE       " Page"
-#define RSC_DDR4_ZEN_CKE_CODE          "  CKE"
-#define RSC_DDR4_ZEN_CMD_CODE          "  CMD"
 #define RSC_DDR4_ZEN_GDM_CODE          "  GDM"
 #define RSC_DDR4_ZEN_ECC_CODE          "  ECC"
 #define RSC_DDR4_ZEN_MRD_CODE          " MRD:"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-cli-rsc-fr.h 
new/CoreFreq-1.95.2/corefreq-cli-rsc-fr.h
--- old/CoreFreq-1.95.1/corefreq-cli-rsc-fr.h   2023-01-23 00:29:55.000000000 
+0100
+++ new/CoreFreq-1.95.2/corefreq-cli-rsc-fr.h   2023-02-05 15:34:56.000000000 
+0100
@@ -879,6 +879,8 @@
 #define RSC_DDR3_CKE_COMM_CODE_FR      RSC_DDR3_CKE_COMM_CODE_EN
 #define RSC_DDR3_ECC_COMM_CODE_FR      RSC_DDR3_ECC_COMM_CODE_EN
 
+#define RSC_DDR4_RCD_R_COMM_CODE_FR    RSC_DDR4_RCD_R_COMM_CODE_EN
+#define RSC_DDR4_RCD_W_COMM_CODE_FR    RSC_DDR4_RCD_W_COMM_CODE_EN
 #define RSC_DDR4_RDRD_SCL_COMM_CODE_FR RSC_DDR4_RDRD_SCL_COMM_CODE_EN
 #define RSC_DDR4_RDRD_SC_COMM_CODE_FR  RSC_DDR4_RDRD_SC_COMM_CODE_EN
 #define RSC_DDR4_RDRD_SD_COMM_CODE_FR  RSC_DDR4_RDRD_SD_COMM_CODE_EN
@@ -900,8 +902,6 @@
 #define RSC_DDR4_CPDED_COMM_CODE_FR    RSC_DDR4_CPDED_COMM_CODE_EN
 #define RSC_DDR4_GEAR_COMM_CODE_FR     RSC_DDR4_GEAR_COMM_CODE_EN
 
-#define RSC_DDR4_ZEN_RCD_R_COMM_CODE_FR RSC_DDR4_ZEN_RCD_R_COMM_CODE_EN
-#define RSC_DDR4_ZEN_RCD_W_COMM_CODE_FR RSC_DDR4_ZEN_RCD_W_COMM_CODE_EN
 #define RSC_DDR4_ZEN_RC_COMM_CODE_FR   RSC_DDR4_ZEN_RC_COMM_CODE_EN
 #define RSC_DDR4_ZEN_WTR_S_COMM_CODE_FR RSC_DDR4_ZEN_WTR_S_COMM_CODE_EN
 #define RSC_DDR4_ZEN_WTR_L_COMM_CODE_FR RSC_DDR4_ZEN_WTR_L_COMM_CODE_EN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-cli-rsc.c 
new/CoreFreq-1.95.2/corefreq-cli-rsc.c
--- old/CoreFreq-1.95.1/corefreq-cli-rsc.c      2023-01-23 00:29:55.000000000 
+0100
+++ new/CoreFreq-1.95.2/corefreq-cli-rsc.c      2023-02-05 15:34:56.000000000 
+0100
@@ -1330,7 +1330,8 @@
        LDQ(RSC_DDR3_CKE),
        LDQ(RSC_DDR3_ECC),
        LDQ(RSC_DDR4_CL),
-       LDQ(RSC_DDR4_RCD),
+       LDQ(RSC_DDR4_RCD_R),
+       LDQ(RSC_DDR4_RCD_W),
        LDQ(RSC_DDR4_RP),
        LDQ(RSC_DDR4_RAS),
        LDQ(RSC_DDR4_RRD),
@@ -1365,8 +1366,6 @@
        LDQ(RSC_DDR4_CPDED),
        LDQ(RSC_DDR4_ECC),
        LDQ(RSC_DDR4_ZEN_CL),
-       LDQ(RSC_DDR4_ZEN_RCD_R),
-       LDQ(RSC_DDR4_ZEN_RCD_W),
        LDQ(RSC_DDR4_ZEN_RP),
        LDQ(RSC_DDR4_ZEN_RAS),
        LDQ(RSC_DDR4_ZEN_RC),
@@ -1400,8 +1399,6 @@
        LDQ(RSC_DDR4_ZEN_BGS_ALT),
        LDQ(RSC_DDR4_ZEN_BAN),
        LDQ(RSC_DDR4_ZEN_RCPAGE),
-       LDQ(RSC_DDR4_ZEN_CKE),
-       LDQ(RSC_DDR4_ZEN_CMD),
        LDQ(RSC_DDR4_ZEN_GDM),
        LDQ(RSC_DDR4_ZEN_ECC),
        LDQ(RSC_DDR4_ZEN_MRD),
@@ -1449,6 +1446,8 @@
        LDT(RSC_DDR3_XP_COMM),
        LDT(RSC_DDR3_CKE_COMM),
        LDT(RSC_DDR3_ECC_COMM),
+       LDT(RSC_DDR4_RCD_R_COMM),
+       LDT(RSC_DDR4_RCD_W_COMM),
        LDT(RSC_DDR4_RDRD_SCL_COMM),
        LDT(RSC_DDR4_RDRD_SC_COMM),
        LDT(RSC_DDR4_RDRD_SD_COMM),
@@ -1469,8 +1468,6 @@
        LDT(RSC_DDR4_RRD_L_COMM),
        LDT(RSC_DDR4_CPDED_COMM),
        LDT(RSC_DDR4_GEAR_COMM),
-       LDT(RSC_DDR4_ZEN_RCD_R_COMM),
-       LDT(RSC_DDR4_ZEN_RCD_W_COMM),
        LDT(RSC_DDR4_ZEN_RC_COMM),
        LDT(RSC_DDR4_ZEN_WTR_S_COMM),
        LDT(RSC_DDR4_ZEN_WTR_L_COMM),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-cli-rsc.h 
new/CoreFreq-1.95.2/corefreq-cli-rsc.h
--- old/CoreFreq-1.95.1/corefreq-cli-rsc.h      2023-01-23 00:29:55.000000000 
+0100
+++ new/CoreFreq-1.95.2/corefreq-cli-rsc.h      2023-02-05 15:34:56.000000000 
+0100
@@ -1133,7 +1133,8 @@
        RSC_DDR3_CKE,
        RSC_DDR3_ECC,
        RSC_DDR4_CL,
-       RSC_DDR4_RCD,
+       RSC_DDR4_RCD_R,
+       RSC_DDR4_RCD_W,
        RSC_DDR4_RP,
        RSC_DDR4_RAS,
        RSC_DDR4_RRD,
@@ -1168,8 +1169,6 @@
        RSC_DDR4_CPDED,
        RSC_DDR4_ECC,
        RSC_DDR4_ZEN_CL,
-       RSC_DDR4_ZEN_RCD_R,
-       RSC_DDR4_ZEN_RCD_W,
        RSC_DDR4_ZEN_RP,
        RSC_DDR4_ZEN_RAS,
        RSC_DDR4_ZEN_RC,
@@ -1203,8 +1202,6 @@
        RSC_DDR4_ZEN_BGS_ALT,
        RSC_DDR4_ZEN_BAN,
        RSC_DDR4_ZEN_RCPAGE,
-       RSC_DDR4_ZEN_CKE,
-       RSC_DDR4_ZEN_CMD,
        RSC_DDR4_ZEN_GDM,
        RSC_DDR4_ZEN_ECC,
        RSC_DDR4_ZEN_MRD,
@@ -1252,6 +1249,8 @@
        RSC_DDR3_XP_COMM,
        RSC_DDR3_CKE_COMM,
        RSC_DDR3_ECC_COMM,
+       RSC_DDR4_RCD_R_COMM,
+       RSC_DDR4_RCD_W_COMM,
        RSC_DDR4_RDRD_SCL_COMM,
        RSC_DDR4_RDRD_SC_COMM,
        RSC_DDR4_RDRD_SD_COMM,
@@ -1272,8 +1271,6 @@
        RSC_DDR4_RRD_L_COMM,
        RSC_DDR4_CPDED_COMM,
        RSC_DDR4_GEAR_COMM,
-       RSC_DDR4_ZEN_RCD_R_COMM,
-       RSC_DDR4_ZEN_RCD_W_COMM,
        RSC_DDR4_ZEN_RC_COMM,
        RSC_DDR4_ZEN_WTR_S_COMM,
        RSC_DDR4_ZEN_WTR_L_COMM,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreq-cli.c 
new/CoreFreq-1.95.2/corefreq-cli.c
--- old/CoreFreq-1.95.1/corefreq-cli.c  2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/corefreq-cli.c  2023-02-05 15:34:56.000000000 +0100
@@ -169,15 +169,21 @@
        const unsigned int highestFactory = MAXCLOCK_TO_RATIO(
                unsigned int, RO(Shm)->Proc.Features.Factory.Clock.Hz
        );
-       enum RATIO_BOOST lt, rt;
+       enum RATIO_BOOST lt, rt, min_boost = BOOST(MIN);
+    if ((RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[BOOST(HWP_MIN)] > 0)
+     && (RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[BOOST(HWP_MIN)]
+       < RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[BOOST(MIN)]))
+    {
+       min_boost = BOOST(HWP_MIN);
+    }
        unsigned int cpu,
        lowest = RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[BOOST(MAX)],
-       highest = RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[BOOST(MIN)];
+       highest = RO(Shm)->Cpu[RO(Shm)->Proc.Service.Core].Boost[min_boost];
 
        Ruler.Count = 0;
-       SetTopOfRuler(RO(Shm)->Proc.Service.Core, BOOST(MIN));
+       SetTopOfRuler(RO(Shm)->Proc.Service.Core, min_boost);
 
-       lt = BOOST(MIN);
+       lt = min_boost;
     while (lt < BOOST(SIZE))
     {
        Ruler.Top[lt] = RO(Shm)->Proc.Service.Core;
@@ -193,7 +199,7 @@
            {
                SetTopOftheTop(cpu, lt, &lowest, & highest);
 
-               for (rt = BOOST(MIN); rt < Ruler.Count; rt++)
+               for (rt = min_boost; rt < Ruler.Count; rt++)
                {
                        if (Ruler.Uniq[rt] == RO(Shm)->Cpu[cpu].Boost[lt])
                        {
@@ -208,7 +214,7 @@
        }
        lt = lt + 1;
     }
-       InsertionSortRuler(Ruler.Uniq, Ruler.Count, BOOST(MIN));
+       InsertionSortRuler(Ruler.Uniq, Ruler.Count, min_boost);
 
        Ruler.Minimum = (double) lowest;
        Ruler.Maximum = (double) highest;
@@ -7035,7 +7041,8 @@
                {
                        RSC(MEM_CTRL_CHANNEL).CODE(),
                        RSC(DDR4_CL).CODE(),
-                       RSC(DDR4_RCD).CODE(),
+                       RSC(DDR4_RCD_R).CODE(),
+                       RSC(DDR4_RCD_W).CODE(),
                        RSC(DDR4_RP).CODE(),
                        RSC(DDR4_RAS).CODE(),
                        RSC(DDR4_RRD_S).CODE(),
@@ -7046,8 +7053,7 @@
                        RSC(DDR4_WTP).CODE(),
                        RSC(DDR4_CWL).CODE(),
                        RSC(DDR4_CKE).CODE(),
-                       RSC(DDR4_CMD).CODE(),
-                       RSC(DDR4_GEAR).CODE()
+                       RSC(DDR4_CMD).CODE()
                },
                {
                        RSC(MEM_CTRL_MTY_CELL).CODE(),
@@ -7075,12 +7081,12 @@
                        RSC(MEM_CTRL_MTY_CELL).CODE(),
                        RSC(MEM_CTRL_MTY_CELL).CODE(),
                        RSC(MEM_CTRL_MTY_CELL).CODE(),
-                       RSC(MEM_CTRL_MTY_CELL).CODE(),
                        RSC(DDR4_REFI).CODE(),
                        RSC(DDR4_RFC).CODE(),
                        RSC(DDR3_XS).CODE(),
                        RSC(DDR3_XP).CODE(),
                        RSC(DDR4_CPDED).CODE(),
+                       RSC(DDR4_GEAR).CODE(),
                        RSC(DDR4_ECC).CODE()
                }
        };
@@ -7088,7 +7094,8 @@
                {
                        NULL,
                        RSC(DDR3_CL_COMM).CODE(),
-                       RSC(DDR3_RCD_COMM).CODE(),
+                       RSC(DDR4_RCD_R_COMM).CODE(),
+                       RSC(DDR4_RCD_W_COMM).CODE(),
                        RSC(DDR3_RP_COMM).CODE(),
                        RSC(DDR3_RAS_COMM).CODE(),
                        RSC(DDR4_RRD_S_COMM).CODE(),
@@ -7099,8 +7106,7 @@
                        RSC(DDR3_WTP_COMM).CODE(),
                        RSC(DDR3_CWL_COMM).CODE(),
                        RSC(DDR3_CKE_COMM).CODE(),
-                       RSC(DDR3_CMD_COMM).CODE(),
-                       RSC(DDR4_GEAR_COMM).CODE()
+                       RSC(DDR3_CMD_COMM).CODE()
                },
                {
                        NULL,
@@ -7128,12 +7134,12 @@
                        NULL,
                        NULL,
                        NULL,
-                       NULL,
                        RSC(DDR3_REFI_COMM).CODE(),
                        RSC(DDR3_RFC_COMM).CODE(),
                        RSC(DDR3_XS_COMM).CODE(),
                        RSC(DDR3_XP_COMM).CODE(),
                        RSC(DDR4_CPDED_COMM).CODE(),
+                       RSC(DDR4_GEAR_COMM).CODE(),
                        RSC(DDR3_ECC_COMM).CODE()
                }
        };
@@ -7153,7 +7159,8 @@
                PRT(IMC, attrib[0], "\x20\x20#%-2u", cha);
 
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tCL);
-               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRCD);
+               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRCD_RD);
+               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRCD_WR);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRP);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRAS);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRRDS);
@@ -7163,9 +7170,8 @@
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tRTPr);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tWTPr);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tCWL);
-               PRT(IMC, attrib[1], "%4u\x20", TIMING(mc, cha).tCKE);
-               PRT(IMC, attrib[1], "%3uT\x20", TIMING(mc, cha).CMD_Rate);
-               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).GEAR);
+               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tCKE);
+               PRT(IMC, attrib[1], "\x20%3uT", TIMING(mc, cha).CMD_Rate);
        }
        for (nc = 0; nc < MC_MATX; nc++) {
                GridHover(      PRT(IMC, attrib[0], Header_DDR4[1][nc]),
@@ -7209,7 +7215,7 @@
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tWRWR_DR);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tWRWR_DD);
 
-               for (nc = 0; nc < (MC_MATX - 12); nc++) {
+               for (nc = 0; nc < (MC_MATX - 13); nc++) {
                        PRT(IMC, attrib[0], MEM_CTRL_FMT, MC_MATY, HSPACE);
                }
 
@@ -7221,6 +7227,7 @@
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tXS);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tXP);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).tCPDED);
+               PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).GEAR);
                PRT(IMC, attrib[1], "%5u", TIMING(mc, cha).ECC);
        }
 }
@@ -7235,8 +7242,8 @@
                {
                        RSC(MEM_CTRL_CHANNEL).CODE(),
                        RSC(DDR4_ZEN_CL).CODE(),
-                       RSC(DDR4_ZEN_RCD_R).CODE(),
-                       RSC(DDR4_ZEN_RCD_W).CODE(),
+                       RSC(DDR4_RCD_R).CODE(),
+                       RSC(DDR4_RCD_W).CODE(),
                        RSC(DDR4_ZEN_RP).CODE(),
                        RSC(DDR4_ZEN_RAS).CODE(),
                        RSC(DDR4_ZEN_RC).CODE(),
@@ -7286,8 +7293,8 @@
                        RSC(DDR4_ZEN_BGS_ALT).CODE(),
                        RSC(DDR4_ZEN_BAN).CODE(),
                        RSC(DDR4_ZEN_RCPAGE).CODE(),
-                       RSC(DDR4_ZEN_CKE).CODE(),
-                       RSC(DDR4_ZEN_CMD).CODE(),
+                       RSC(DDR4_CKE).CODE(),
+                       RSC(DDR4_CMD).CODE(),
                        RSC(DDR4_ZEN_GDM).CODE(),
                        RSC(DDR4_ZEN_ECC).CODE()
                },
@@ -7313,8 +7320,8 @@
                {
                        NULL,
                        RSC(DDR3_CL_COMM).CODE(),
-                       RSC(DDR4_ZEN_RCD_R_COMM).CODE(),
-                       RSC(DDR4_ZEN_RCD_W_COMM).CODE(),
+                       RSC(DDR4_RCD_R_COMM).CODE(),
+                       RSC(DDR4_RCD_W_COMM).CODE(),
                        RSC(DDR3_RP_COMM).CODE(),
                        RSC(DDR3_RAS_COMM).CODE(),
                        RSC(DDR4_ZEN_RC_COMM).CODE(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreqd.c 
new/CoreFreq-1.95.2/corefreqd.c
--- old/CoreFreq-1.95.1/corefreqd.c     2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/corefreqd.c     2023-02-05 15:34:56.000000000 +0100
@@ -3043,20 +3043,15 @@
     for (cha = 0; cha < RO(Shm)->Uncore.MC[mc].ChannelCount; cha++)
     {
 /* Standard Timings */
-       TIMING(mc, cha).tCL  = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR0.tCL + 5;
+       TIMING(mc, cha).tCL  = RO(Proc)->Uncore.MC[mc].SLM.DTR0.tCL + 5;
 
-       TIMING(mc, cha).tRCD = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR0.tRCD + 5;
+       TIMING(mc, cha).tRCD = RO(Proc)->Uncore.MC[mc].SLM.DTR0.tRCD + 5;
 
-       TIMING(mc, cha).tRP  = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR0.tRP + 5;
+       TIMING(mc, cha).tRP  = RO(Proc)->Uncore.MC[mc].SLM.DTR0.tRP + 5;
 
-       TIMING(mc, cha).tRAS = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRAS;
+       TIMING(mc, cha).tRAS = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRAS;
 
-       TIMING(mc, cha).tRRD = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRRD + 4;
+       TIMING(mc, cha).tRRD = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRRD + 4;
 
        TIMING(mc, cha).tRFC = \
                        RO(Proc)->Uncore.MC[mc].SLM.DTR0.tXS == 0 ? 256 : 384;
@@ -3075,18 +3070,13 @@
        TIMING(mc, cha).tREFI *= RO(Shm)->Uncore.CtrlSpeed;
        TIMING(mc, cha).tREFI /= 20;
 
-/*TODO( Advanced Timings )
-       TIMING(mc, cha).tCKE = \
-                       RO(Proc)->Uncore.MC[mc].Channel[cha].SLM
-*/
-       TIMING(mc, cha).tRTPr = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRTP + 4;
+       TIMING(mc, cha).tCKE  = RO(Proc)->Uncore.MC[mc].SLM.DRMC.CKEVAL;
 
-       TIMING(mc, cha).tWTPr = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tWTP + 14;
+       TIMING(mc, cha).tRTPr = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tRTP + 4;
 
-       TIMING(mc, cha).B2B   = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tCCD;
+       TIMING(mc, cha).tWTPr = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tWTP + 14;
+
+       TIMING(mc, cha).B2B   = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tCCD;
 
        switch (RO(Proc)->Uncore.MC[mc].SLM.DTR1.tFAW) {
        case 0 ... 1:
@@ -3098,64 +3088,50 @@
                break;
        }
 
-       TIMING(mc, cha).tCWL = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR1.tWCL + 3;
-/* Same Rank */
-/*TODO( Read to Read )
-       TIMING(mc, cha).tsrRdTRd = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR?.;
+       TIMING(mc, cha).tCWL = RO(Proc)->Uncore.MC[mc].SLM.DTR1.tWCL + 3;
+
+/*TODO( Read to Read. Same Rank )
+       TIMING(mc, cha).tsrRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR?.;
 */
-       TIMING(mc, cha).tsrRdTWr = 6
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tRWSR;
+       TIMING(mc, cha).tsrRdTWr = 6 + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tRWSR;
 
-       TIMING(mc, cha).tsrWrTRd = 11
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRSR;
-/*TODO( Write to Write )
-       TIMING(mc, cha).tsrWrTWr = \
-                       RO(Proc)->Uncore.MC[mc].Channel[cha].SLM.DTR?.;
+       TIMING(mc, cha).tsrWrTRd = 11 + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRSR;
+/*TODO( Write to Write. Same Rank )
+       TIMING(mc, cha).tsrWrTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR?.;
 */
 /* Different Rank */
-       TIMING(mc, cha).tdrRdTRd = \
-                       RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRRDR;
+       TIMING(mc, cha).tdrRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRRDR;
        if (TIMING(mc, cha).tdrRdTRd > 0) {
                TIMING(mc, cha).tdrRdTRd += 5;
        }
 
-       TIMING(mc, cha).tdrRdTWr = \
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRWDR;
+       TIMING(mc, cha).tdrRdTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRWDR;
        if (TIMING(mc, cha).tdrRdTWr > 0) {
                TIMING(mc, cha).tdrRdTWr += 5;
        }
 
-       TIMING(mc, cha).tdrWrTRd = \
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRDR;
+       TIMING(mc, cha).tdrWrTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRDR;
        if (TIMING(mc, cha).tdrWrTRd > 0) {
                TIMING(mc, cha).tdrWrTRd += 3;
        }
 
-       TIMING(mc, cha).tdrWrTWr = 4
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tWWDR;
+       TIMING(mc, cha).tdrWrTWr = 4 + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tWWDR;
 /* Different DIMM */
-       TIMING(mc, cha).tddRdTRd = \
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRRDD;
+       TIMING(mc, cha).tddRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRRDD;
        if (TIMING(mc, cha).tddRdTRd > 0) {
                TIMING(mc, cha).tddRdTRd += 5;
        }
 
-       TIMING(mc, cha).tddRdTWr = \
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRWDD;
+       TIMING(mc, cha).tddRdTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.tRWDD;
        if (TIMING(mc, cha).tddRdTWr > 0) {
                TIMING(mc, cha).tddRdTWr += 5;
        }
 
-       TIMING(mc, cha).tddWrTRd = 4
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRDD;
+       TIMING(mc, cha).tddWrTRd = 4 + RO(Proc)->Uncore.MC[mc].SLM.DTR3.tWRDD;
 
-       TIMING(mc, cha).tddWrTWr = 4
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tWWDD;
+       TIMING(mc, cha).tddWrTWr = 4 + RO(Proc)->Uncore.MC[mc].SLM.DTR2.tWWDD;
 /* Command Rate */
-       TIMING(mc, cha).CMD_Rate = 1
-                       + RO(Proc)->Uncore.MC[mc].SLM.DTR1.tCMD;
+       TIMING(mc, cha).CMD_Rate = 1 + RO(Proc)->Uncore.MC[mc].SLM.DTR1.tCMD;
 
        TIMING(mc, cha).tXS = RO(Proc)->Uncore.MC[mc].SLM.DTR0.tXS;
 
@@ -3190,7 +3166,212 @@
            } else {
                RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Ranks = \
                                        RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN2
-                               +       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKNE3;
+                               +       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN3;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Banks = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN1].Banks;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Rows = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN1].Rows;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Cols = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN1].Cols;
+           }
+               DIMM_Size = 8LLU
+                       * RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Rows
+                       * RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Cols
+                       * RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Banks
+                       * RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Ranks;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Size = \
+                                               (unsigned int)(DIMM_Size >> 20);
+       }
+/* Error Correcting Code */
+       TIMING(mc, cha).ECC = \
+                         RO(Proc)->Uncore.MC[mc].SLM.BIOS_CFG.EFF_ECC_EN
+                       | RO(Proc)->Uncore.MC[mc].SLM.BIOS_CFG.ECC_EN;
+    }
+    if (RO(Proc)->Uncore.MC[mc].SLM.DRP.DRAMTYPE) {
+       RO(Shm)->Uncore.Unit.DDR_Ver = 2;
+       RO(Shm)->Uncore.Unit.DDR_Std = RAM_STD_LPDDR;
+    } else {
+       RO(Shm)->Uncore.Unit.DDR_Ver = 3;
+
+       if (RO(Proc)->Uncore.MC[mc].SLM.DRP.ENLPDDR3) {
+               RO(Shm)->Uncore.Unit.DDR_Std = RAM_STD_LPDDR;
+       } else {
+               RO(Shm)->Uncore.Unit.DDR_Std = RAM_STD_SDRAM;
+       }
+    }
+  }
+}
+
+void AMT_MCR(RO(SHM_STRUCT) *RO(Shm), RO(PROC) *RO(Proc), RO(CORE) *RO(Core))
+{
+       unsigned short mc, cha, slot;
+/* BUS & DRAM frequency */
+       RO(Shm)->Uncore.CtrlSpeed = 800LLU + (
+                       ((2134LLU * RO(Proc)->Uncore.MC[0].SLM.DTR0.DFREQ) >> 3)
+       );
+       RO(Shm)->Uncore.Bus.Rate = 5000;
+
+       RO(Shm)->Uncore.Bus.Speed = (RO(Core)->Clock.Hz
+                               * RO(Shm)->Uncore.Bus.Rate)
+                               / RO(Shm)->Proc.Features.Factory.Clock.Hz;
+
+       RO(Shm)->Uncore.Unit.Bus_Rate = MC_MTS;
+       RO(Shm)->Uncore.Unit.BusSpeed = MC_MTS;
+       RO(Shm)->Uncore.Unit.DDR_Rate = MC_NIL;
+       RO(Shm)->Uncore.Unit.DDRSpeed = MC_MHZ;
+
+  for (mc = 0; mc < RO(Shm)->Uncore.CtrlCount; mc++)
+  {
+    RO(Shm)->Uncore.MC[mc].SlotCount = RO(Proc)->Uncore.MC[mc].SlotCount;
+    RO(Shm)->Uncore.MC[mc].ChannelCount = RO(Proc)->Uncore.MC[mc].ChannelCount;
+
+    for (cha = 0; cha < RO(Shm)->Uncore.MC[mc].ChannelCount; cha++)
+    {
+/* Standard Timings */
+       TIMING(mc, cha).tCL  = RO(Proc)->Uncore.MC[mc].SLM.DTR0.Z8000.tCL + 5;
+
+       TIMING(mc, cha).tRCD = RO(Proc)->Uncore.MC[mc].SLM.DTR0.Z8000.tRCD + 5;
+
+       TIMING(mc, cha).tRP  = RO(Proc)->Uncore.MC[mc].SLM.DTR0.Z8000.tRP + 5;
+
+       TIMING(mc, cha).tRAS = RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tRAS + 14;
+
+       TIMING(mc, cha).tRRD = RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tRRD + 4;
+
+       TIMING(mc, cha).tRFC = \
+               RO(Proc)->Uncore.MC[mc].SLM.DTR0.Z8000.tXS == 0 ? 256 : 384;
+
+       switch (RO(Proc)->Uncore.MC[mc].SLM.DRFC.Z8000.tREFI) {
+       case 0 ... 1:
+               TIMING(mc, cha).tREFI = 0;
+               break;
+       case 2:
+               TIMING(mc, cha).tREFI = 39;
+               break;
+       case 3:
+               TIMING(mc, cha).tREFI = 78;
+               break;
+       }
+       TIMING(mc, cha).tREFI *= RO(Shm)->Uncore.CtrlSpeed;
+       TIMING(mc, cha).tREFI /= 20;
+
+       TIMING(mc, cha).tCKE = RO(Proc)->Uncore.MC[mc].SLM.DRMC.Z8000.CKEVAL;
+
+       TIMING(mc, cha).tRTPr= RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tRTP + 4;
+
+       TIMING(mc, cha).tWTPr= RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tWTP + 15;
+
+      switch (RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tCCD) {
+      case 0:
+       TIMING(mc, cha).B2B = 4;
+       break;
+      case 1:
+       TIMING(mc, cha).B2B = 12;
+       break;
+      case 2:
+       TIMING(mc, cha).B2B = 18;
+       break;
+      case 3:
+      default:
+       TIMING(mc, cha).B2B = 0;
+       break;
+      }
+
+      switch (RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tFAW) {
+      case 0 ... 1:
+      case 0xd ... 0xf:
+       TIMING(mc, cha).tFAW = 0;
+       break;
+      default:
+       TIMING(mc, cha).tFAW = \
+       10 + ((unsigned int)RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tFAW << 1);
+       break;
+      }
+
+       TIMING(mc, cha).tCWL = RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tWCL + 3;
+
+/*TODO( Read to Read. Same Rank )
+       TIMING(mc, cha).tsrRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR?.;
+*/
+       TIMING(mc, cha).tsrRdTWr = 6
+                                + RO(Proc)->Uncore.MC[mc].SLM.DTR3.Z8000.tRWSR;
+
+       TIMING(mc, cha).tsrWrTRd = 11
+                                + RO(Proc)->Uncore.MC[mc].SLM.DTR3.Z8000.tWRSR;
+/*TODO( Write to Write. Same Rank )
+       TIMING(mc, cha).tsrWrTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR?.;
+*/
+/* Different Rank */
+       TIMING(mc, cha).tdrRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tRRDR;
+       if (TIMING(mc, cha).tdrRdTRd > 0) {
+               TIMING(mc, cha).tdrRdTRd += 5;
+       }
+
+       TIMING(mc, cha).tdrRdTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tRWDR;
+       if (TIMING(mc, cha).tdrRdTWr > 0) {
+               TIMING(mc, cha).tdrRdTWr += 5;
+       }
+
+       TIMING(mc, cha).tdrWrTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR3.Z8000.tWRDR;
+       if (TIMING(mc, cha).tdrWrTRd > 0) {
+               TIMING(mc, cha).tdrWrTRd += 3;
+       }
+
+       TIMING(mc, cha).tdrWrTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tWWDR;
+       if (TIMING(mc, cha).tdrWrTWr > 1) {
+               TIMING(mc, cha).tdrWrTWr += 4;
+       }
+/*TODO( Different DIMM )
+       TIMING(mc, cha).tddRdTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tRRDD;
+
+       TIMING(mc, cha).tddRdTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tRWDD;
+
+       TIMING(mc, cha).tddWrTRd = RO(Proc)->Uncore.MC[mc].SLM.DTR3.Z8000.tWRDD;
+
+       TIMING(mc, cha).tddWrTWr = RO(Proc)->Uncore.MC[mc].SLM.DTR2.Z8000.tWWDD;
+*/
+/* Command Rate */
+       TIMING(mc, cha).CMD_Rate = 1
+                                + RO(Proc)->Uncore.MC[mc].SLM.DTR1.Z8000.tCMD;
+
+       TIMING(mc, cha).tXS = RO(Proc)->Uncore.MC[mc].SLM.DTR0.Z8000.tXS;
+
+       TIMING(mc, cha).tXP = RO(Proc)->Uncore.MC[mc].SLM.DTR3.Z8000.tXP;
+/* Topology */
+       for (slot = 0; slot < RO(Shm)->Uncore.MC[mc].SlotCount; slot++)
+       {
+               unsigned long long DIMM_Size;
+               const struct {
+                       unsigned int    Banks,
+                                       Rows,
+                                       Cols;
+               } DDR3L[4] = {
+                       { .Banks = 8,   .Rows = 1<<14,  .Cols = 1<<10   },
+                       { .Banks = 8,   .Rows = 1<<15,  .Cols = 1<<10   },
+                       { .Banks = 8,   .Rows = 1<<16,  .Cols = 1<<10   },
+                       { .Banks = 8,   .Rows = 1<<14,  .Cols = 1<<10   }
+               };
+           if  (cha == 0) {
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Ranks = \
+                                       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN0
+                               +       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN1;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Banks = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN0].Banks;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Rows = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN0].Rows;
+
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Cols = \
+                       DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN0].Cols;
+           } else {
+               RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Ranks = \
+                                       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN2
+                               +       RO(Proc)->Uncore.MC[mc].SLM.DRP.RKEN3;
 
                RO(Shm)->Uncore.MC[mc].Channel[cha].DIMM[slot].Banks = \
                        DDR3L[RO(Proc)->Uncore.MC[mc].SLM.DRP.DIMMDDEN1].Banks;
@@ -4401,12 +4582,21 @@
 
     for (cha = 0; cha < RO(Shm)->Uncore.MC[mc].ChannelCount; cha++)
     {
-       TIMING(mc, cha).tCL   = \
+       TIMING(mc, cha).tCL = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].SKL.ODT.tCL;
 
-       TIMING(mc, cha).tRCD  = \
+       TIMING(mc, cha).tRCD_RD = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].SKL.Timing.tRP;
 
+       TIMING(mc, cha).tRCD_WR = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].SKL.ACT.tRCD_WR;
+
+    if (TIMING(mc, cha).tRCD_WR == 0) {
+       /* ACT to CAS (RD or WR) same bank minimum delay in DCLK cycles */
+       TIMING(mc, cha).tRCD_WR = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].SKL.Timing.tRP;
+    }
+
        TIMING(mc, cha).tRP   = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].SKL.Timing.tRP;
 
@@ -4687,8 +4877,16 @@
        TIMING(mc, cha).tCL = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].RKL.ODT.tCL;
 
-       TIMING(mc, cha).tRCD = \
+       TIMING(mc, cha).tRCD_RD = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].RKL.Timing.tRP;
+
+       TIMING(mc, cha).tRCD_WR = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].RKL.ACT.tRCD_WR;
+
+    if (TIMING(mc, cha).tRCD_WR == 0) {
+       TIMING(mc, cha).tRCD_WR = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].RKL.Timing.tRP;
+    }
 
        TIMING(mc, cha).tRP = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].RKL.Timing.tRP;
@@ -4995,8 +5193,10 @@
        TIMING(mc, cha).tCL = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].TGL.ODT.tCL;
 
-       TIMING(mc, cha).tRCD = \
-                       RO(Proc)->Uncore.MC[mc].Channel[cha].TGL.Timing.tRP;
+       /*      ACT to CAS (RD or WR) same bank minimum delay in tCK    */
+       TIMING(mc, cha).tRCD_RD = \
+       TIMING(mc, cha).tRCD_WR = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].TGL.Timing.tRCD;
 
        TIMING(mc, cha).tRP = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].TGL.Timing.tRP;
@@ -5197,12 +5397,17 @@
        TIMING(mc, cha).tCL = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].ADL.ODT.tCL;
 
-       TIMING(mc, cha).tRCD = \
+       TIMING(mc, cha).tRCD_RD = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].ADL.Timing.tRCD;
 
        TIMING(mc, cha).tRCD_WR = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].ADL.Timing.tRCDW;
 
+      if (TIMING(mc, cha).tRCD_WR == 0) {
+               TIMING(mc, cha).tRCD_WR = \
+                       RO(Proc)->Uncore.MC[mc].Channel[cha].ADL.Timing.tRCD;
+      }
+
        TIMING(mc, cha).tRP = \
                        RO(Proc)->Uncore.MC[mc].Channel[cha].ADL.Timing.tRP;
 
@@ -6338,7 +6543,7 @@
                SET_CHIPSET(IC_BAYTRAIL);
                break;
        case DID_INTEL_AIRMONT_HB:
-               SLM_PTR(RO(Shm), RO(Proc), RO(Core));
+               AMT_MCR(RO(Shm), RO(Proc), RO(Core));
                SET_CHIPSET(IC_AIRMONT);
                break;
        case DID_INTEL_X58_HUB_CTRL:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreqk.c 
new/CoreFreq-1.95.2/corefreqk.c
--- old/CoreFreq-1.95.1/corefreqk.c     2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/corefreqk.c     2023-02-05 15:34:56.000000000 +0100
@@ -5396,6 +5396,13 @@
 
        pci_read_config_dword(dev, 0xd4,
                &PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRFC.value);
+/* DRMC */
+       MsgCtrlReg.Offset = 0xb;
+
+       pci_write_config_dword(dev, 0xd0, MsgCtrlReg.value);
+
+       pci_read_config_dword(dev, 0xd4,
+               &PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRMC.value);
 /* BIOS_CFG */
        MsgCtrlReg.Port = 0x4;
        MsgCtrlReg.Offset = 0x6;
@@ -5416,7 +5423,7 @@
                |       PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRP.RKEN1
        ) + (
                        PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRP.RKEN2
-               |       PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRP.RKNE3
+               |       PUBLIC(RO(Proc))->Uncore.MC[0].SLM.DRP.RKEN3
        );
        return (PCI_CALLBACK) 0;
 }
@@ -8191,7 +8198,7 @@
                                PRIVATE(OF(Zen)).Device.DF );
        /*              Junction Temperature                            */
        Pkg->PowerThermal.Param.Offset[THERMAL_TARGET] = \
-                               PUBLIC(RO(Proc))->PowerThermal.Zen.PWR.TjMax;
+                               Pkg->PowerThermal.Zen.PWR.TjMax;
        /*              Thermal Design Power                            */
        Core_AMD_SMN_Read( Pkg->PowerThermal.Zen.TDP,
                                SMU_AMD_F17H_ZEN2_MCM_TDP,
@@ -10255,6 +10262,7 @@
                {_Tremont_Elkhartlake,  1, 1, 1, 0},
                {_Tremont_Jasperlake,   1, 1, 1, 0},
                {_Sapphire_Rapids,      1, 1, 1, 0},
+               {_Emerald_Rapids,       1, 1, 1, 0},
                {_Rocketlake,           1, 1, 1, 0},
                {_Rocketlake_U ,        1, 1, 1, 0},
                {_Alderlake_S,          1, 1, 0, 0},    /* 06_97 */
@@ -13034,9 +13042,10 @@
 
        BITSET_CC(LOCKLESS, PUBLIC(RO(Proc))->SPEC_CTRL_Mask, Core->Bind);
        BITSET_CC(LOCKLESS, PUBLIC(RO(Proc))->ARCH_CAP_Mask , Core->Bind);
-
+       /*      Per SMT, initialize with the saved thermal parameters   */
+    if (Core->PowerThermal.Sensor == 0) {
        Core->PowerThermal.Param = PUBLIC(RO(Proc))->PowerThermal.Param;
-
+    }
        /*      Collaborative Processor Performance Control     */
     if (PUBLIC(RO(Proc))->Features.HWP_Enable)
     {
@@ -23043,7 +23052,7 @@
                CoreFreqK_Register_NMI();
        }
 
-       pr_info(KERN_INFO "CoreFreq(%u:%d:%d):" \
+       pr_info("CoreFreq(%u:%d:%d):"           \
                " Processor [%2X%1X_%1X%1X]"    \
                " Architecture [%s] %3s [%u/%u]\n",
                PUBLIC(RO(Proc))->Service.Core,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/corefreqk.h 
new/CoreFreq-1.95.2/corefreqk.h
--- old/CoreFreq-1.95.1/corefreqk.h     2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/corefreqk.h     2023-02-05 15:34:56.000000000 +0100
@@ -1753,6 +1753,7 @@
 /*     [Tremont/Jacobsville]   06_86h                  [Snow Ridge]
        [Tremont/Lakefield]     06_8Ah
        [Sapphire Rapids]       06_8Fh                          SPR
+       [Emerald Rapids/X]      06_CFh                  7 nm    EMR
        [Tremont/Elkhart Lake]  06_96h
        [Tremont/Jasper Lake]   06_9Ch                                  */
 #define _Tremont_Jacobsville \
@@ -1761,6 +1762,8 @@
                        {.ExtFamily=0x0, .Family=0x6, .ExtModel=0x8, .Model=0xA}
 #define _Sapphire_Rapids \
                        {.ExtFamily=0x0, .Family=0x6, .ExtModel=0x8, .Model=0xF}
+#define _Emerald_Rapids \
+                       {.ExtFamily=0x0, .Family=0x6, .ExtModel=0xC, .Model=0xF}
 #define _Tremont_Elkhartlake \
                        {.ExtFamily=0x0, .Family=0x6, .ExtModel=0x9, .Model=0x6}
 #define _Tremont_Jasperlake \
@@ -1876,7 +1879,6 @@
 /*     [GraniteRapids/X]       06_ADh                          GNR
        [GraniteRapids/D]       06_AEh
        [SierraForest/X]        06_AFh                          SRF
-       [EmeraldRapids/X]       06_CFh                  7 nm    EMR
        [Grand Ridge]           06_B6h                                  */
 
 /*     [Family 0Fh]    0F_00h                                          */
@@ -3310,6 +3312,7 @@
 static char *Arch_Tremont_Elkhartlake[] =      ZLIST("Tremont/Elkhart Lake");
 static char *Arch_Tremont_Jasperlake[] =       ZLIST("Tremont/Jasper Lake");
 static char *Arch_Sapphire_Rapids[]    =       ZLIST("Sapphire Rapids");
+static char *Arch_Emerald_Rapids[]     =       ZLIST("Emerald Rapids");
 static char *Arch_Rocketlake[]         =       ZLIST("Rocket Lake");
 static char *Arch_Rocketlake_U[]       =       ZLIST("Rocket Lake/U");
 static char *Arch_Alderlake_S[]        =       ZLIST("Alder Lake");
@@ -3386,7 +3389,8 @@
 };
 enum {
        CN_CEZANNE,
-       CN_BARCELO
+       CN_BARCELO,
+       CN_BARCELO_R
 };
 enum {
        CN_MILAN
@@ -3395,7 +3399,8 @@
        CN_CHAGALL
 };
 enum {
-       CN_REMBRANDT
+       CN_REMBRANDT,
+       CN_REMBRANDT_R
 };
 enum {
        CN_GENOA
@@ -3456,7 +3461,8 @@
 );
 static char *Arch_AMD_Zen3_CZN[] = ZLIST(
                [CN_CEZANNE]            =       "Zen3/Cezanne",
-               [CN_BARCELO]            =       "Zen3/Barcelo"
+               [CN_BARCELO]            =       "Zen3/Barcelo",
+               [CN_BARCELO_R]          =       "Zen3/Barcelo-R"
 );
 static char *Arch_AMD_EPYC_Milan[] = ZLIST(
                [CN_MILAN]              =       "EPYC/Milan"
@@ -3467,7 +3473,8 @@
 static char *Arch_AMD_Zen3_Badami[]    =       ZLIST("Zen3/Milan-X");
 
 static char *Arch_AMD_Zen3Plus_RMB[] = ZLIST(
-               [CN_REMBRANDT]          =       "Zen3+ Rembrandt"
+               [CN_REMBRANDT]          =       "Zen3+ Rembrandt",
+               [CN_REMBRANDT_R]        =       "Zen3+ Rembrandt-R"
 );
 static char *Arch_AMD_Zen4_Genoa[] = ZLIST(
                [CN_GENOA]              =       "EPYC/Genoa"
@@ -6328,11 +6335,7 @@
        },
        {
        .Brand = ZLIST( "AMD Ryzen 7 5825U",    \
-                       "AMD Ryzen 7 PRO 5875U",\
-                       "AMD Ryzen 7 7730U",    \
-                       "AMD Ryzen 7 PRO 7730U",\
-                       "AMD Ryzen 5 7530U",    \
-                       "AMD Ryzen 5 PRO 7530U" ),
+                       "AMD Ryzen 7 PRO 5875U" ),
        .Boost = {+25, 0},
        .Param.Offset = {0, 0, 0},
        .CodeNameIdx = CN_BARCELO,
@@ -6376,11 +6379,25 @@
        .Latch=LATCH_TGT_RATIO_UNLOCK|LATCH_CLK_RATIO_UNLOCK|LATCH_TURBO_UNLOCK
        },
        {
+       .Brand = ZLIST( "AMD Ryzen 7 7730U",    \
+                       "AMD Ryzen 7 PRO 7730U",\
+                       "AMD Ryzen 5 7530U",    \
+                       "AMD Ryzen 5 PRO 7530U" ),
+       .Boost = {+25, 0},
+       .Param.Offset = {0, 0, 0},
+       .CodeNameIdx = CN_BARCELO_R,
+       .TgtRatioUnlocked = 1,
+       .ClkRatioUnlocked = 0b10,
+       .TurboUnlocked = 0,
+       .UncoreUnlocked = 0,
+       .Latch=LATCH_TGT_RATIO_UNLOCK|LATCH_CLK_RATIO_UNLOCK|LATCH_TURBO_UNLOCK
+       },
+       {
        .Brand = ZLIST( "AMD Ryzen 3 7330U",    \
                        "AMD Ryzen 3 PRO 7330U" ),
        .Boost = {+20, 0},
        .Param.Offset = {0, 0, 0},
-       .CodeNameIdx = CN_BARCELO,
+       .CodeNameIdx = CN_BARCELO_R,
        .TgtRatioUnlocked = 1,
        .ClkRatioUnlocked = 0b10,
        .TurboUnlocked = 0,
@@ -6643,10 +6660,11 @@
        },
        {
        .Brand = ZLIST( "AMD Ryzen 3 7335U",    \
-                       "AMD Ryzen 5 7535HS"    ),
+                       "AMD Ryzen 5 7535HS",   \
+                       "AMD Ryzen 5 7535H"     ),
        .Boost = {+13, 0},
        .Param.Offset = {0, 0, 0},
-       .CodeNameIdx = CN_REMBRANDT,
+       .CodeNameIdx = CN_REMBRANDT_R,
        .TgtRatioUnlocked = 1,
        .ClkRatioUnlocked = 0b10,
        .TurboUnlocked = 0,
@@ -6658,7 +6676,7 @@
        .Brand = ZLIST("AMD Ryzen 5 7535U"),
        .Boost = {+17, 0},
        .Param.Offset = {0, 0, 0},
-       .CodeNameIdx = CN_REMBRANDT,
+       .CodeNameIdx = CN_REMBRANDT_R,
        .TgtRatioUnlocked = 1,
        .ClkRatioUnlocked = 0b10,
        .TurboUnlocked = 0,
@@ -6667,10 +6685,11 @@
        .Latch=LATCH_TGT_RATIO_UNLOCK|LATCH_CLK_RATIO_UNLOCK|LATCH_TURBO_UNLOCK
        },
        {
-       .Brand = ZLIST("AMD Ryzen 7 7735HS"),
+       .Brand = ZLIST( "AMD Ryzen 7 7735HS",   \
+                       "AMD Ryzen 7 7735H"     ),
        .Boost = {+16, 0},
        .Param.Offset = {0, 0, 0},
-       .CodeNameIdx = CN_REMBRANDT,
+       .CodeNameIdx = CN_REMBRANDT_R,
        .TgtRatioUnlocked = 1,
        .ClkRatioUnlocked = 0b10,
        .TurboUnlocked = 0,
@@ -6682,7 +6701,19 @@
        .Brand = ZLIST("AMD Ryzen 7 7735U"),
        .Boost = {+21, 0},
        .Param.Offset = {0, 0, 0},
-       .CodeNameIdx = CN_REMBRANDT,
+       .CodeNameIdx = CN_REMBRANDT_R,
+       .TgtRatioUnlocked = 1,
+       .ClkRatioUnlocked = 0b10,
+       .TurboUnlocked = 0,
+       .UncoreUnlocked = 0,
+       .HSMP_Capable = 0,
+       .Latch=LATCH_TGT_RATIO_UNLOCK|LATCH_CLK_RATIO_UNLOCK|LATCH_TURBO_UNLOCK
+       },
+       {
+       .Brand = ZLIST("AMD Ryzen 7 7736U"),
+       .Boost = {+20, 0},
+       .Param.Offset = {0, 0, 0},
+       .CodeNameIdx = CN_REMBRANDT_R,
        .TgtRatioUnlocked = 1,
        .ClkRatioUnlocked = 0b10,
        .TurboUnlocked = 0,
@@ -9412,8 +9443,32 @@
        .SystemDriver = Intel_Driver,
        .Architecture = Arch_Sapphire_Rapids
        },
+[Emerald_Rapids] = {                                                   /* 72*/
+       .Signature = _Emerald_Rapids,
+       .Query = Query_Skylake,
+       .Update = PerCore_Skylake_Query,
+       .Start = Start_Skylake,
+       .Stop = Stop_Skylake,
+       .Exit = NULL,
+       .Timer = InitTimer_Skylake,
+       .BaseClock = BaseClock_Skylake,
+       .ClockMod = ClockMod_Skylake_HWP,
+       .TurboClock = Intel_Turbo_Config8C,
+       .thermalFormula = THERMAL_FORMULA_INTEL,
+       .voltageFormula = VOLTAGE_FORMULA_INTEL_SNB,
+       .powerFormula   = POWER_FORMULA_INTEL,
+       .PCI_ids = PCI_Void_ids,
+       .Uncore = {
+               .Start = Start_Uncore_Skylake,
+               .Stop = Stop_Uncore_Skylake,
+               .ClockMod = Haswell_Uncore_Ratio
+               },
+       .Specific = Void_Specific,
+       .SystemDriver = Intel_Driver,
+       .Architecture = Arch_Emerald_Rapids
+       },
 
-[Rocketlake] = {                                                       /* 72*/
+[Rocketlake] = {                                                       /* 73*/
        .Signature = _Rocketlake,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9437,7 +9492,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Rocketlake
        },
-[Rocketlake_U] = {                                                     /* 73*/
+[Rocketlake_U] = {                                                     /* 74*/
        .Signature = _Rocketlake_U,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9462,7 +9517,7 @@
        .Architecture = Arch_Rocketlake_U
        },
 
-[Alderlake_S] = {                                                      /* 74*/
+[Alderlake_S] = {                                                      /* 75*/
        .Signature = _Alderlake_S,
        .Query = Query_Skylake,
        .Update = PerCore_Kaby_Lake_Query,
@@ -9486,7 +9541,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Alderlake_S
        },
-[Alderlake_H] = {                                                      /* 75*/
+[Alderlake_H] = {                                                      /* 76*/
        .Signature = _Alderlake_H,
        .Query = Query_Skylake,
        .Update = PerCore_Kaby_Lake_Query,
@@ -9510,7 +9565,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Alderlake_H
        },
-[Alderlake_N] = {                                                      /* 76*/
+[Alderlake_N] = {                                                      /* 77*/
        .Signature = _Alderlake_N,
        .Query = Query_Skylake,
        .Update = PerCore_Kaby_Lake_Query,
@@ -9535,7 +9590,7 @@
        .Architecture = Arch_Alderlake_N
        },
 
-[Meteorlake_M] = {                                                     /* 77*/
+[Meteorlake_M] = {                                                     /* 78*/
        .Signature = _Meteorlake_M,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9559,7 +9614,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Meteorlake_M
        },
-[Meteorlake_N] = {                                                     /* 78*/
+[Meteorlake_N] = {                                                     /* 79*/
        .Signature = _Meteorlake_N,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9583,7 +9638,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Meteorlake_N
        },
-[Meteorlake_S] = {                                                     /* 79*/
+[Meteorlake_S] = {                                                     /* 80*/
        .Signature = _Meteorlake_S,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9607,7 +9662,7 @@
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Meteorlake_S
        },
-[Raptorlake] = {                                                       /* 80*/
+[Raptorlake] = {                                                       /* 81*/
        .Signature = _Raptorlake,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9623,15 +9678,15 @@
        .powerFormula   = POWER_FORMULA_INTEL,
        .PCI_ids = PCI_ADL_RPL_ids,
        .Uncore = {
-               .Start = NULL,
-               .Stop = NULL,
+               .Start = Start_Uncore_Alderlake,
+               .Stop = Stop_Uncore_Alderlake,
                .ClockMod = Haswell_Uncore_Ratio
                },
        .Specific = Void_Specific,
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Raptorlake
        },
-[Raptorlake_P] = {                                                     /* 81*/
+[Raptorlake_P] = {                                                     /* 82*/
        .Signature = _Raptorlake_P,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9647,15 +9702,15 @@
        .powerFormula   = POWER_FORMULA_INTEL,
        .PCI_ids = PCI_ADL_RPL_ids,
        .Uncore = {
-               .Start = NULL,
-               .Stop = NULL,
+               .Start = Start_Uncore_Alderlake,
+               .Stop = Stop_Uncore_Alderlake,
                .ClockMod = Haswell_Uncore_Ratio
                },
        .Specific = Void_Specific,
        .SystemDriver = SKL_Driver,
        .Architecture = Arch_Raptorlake_P
        },
-[Raptorlake_S] = {                                                     /* 82*/
+[Raptorlake_S] = {                                                     /* 83*/
        .Signature = _Raptorlake_S,
        .Query = Query_Skylake,
        .Update = PerCore_Skylake_Query,
@@ -9671,8 +9726,8 @@
        .powerFormula   = POWER_FORMULA_INTEL,
        .PCI_ids = PCI_ADL_RPL_ids,
        .Uncore = {
-               .Start = NULL,
-               .Stop = NULL,
+               .Start = Start_Uncore_Alderlake,
+               .Stop = Stop_Uncore_Alderlake,
                .ClockMod = Haswell_Uncore_Ratio
                },
        .Specific = Void_Specific,
@@ -9680,7 +9735,7 @@
        .Architecture = Arch_Raptorlake_S
        },
 
-[AMD_Zen] = {                                                          /* 83*/
+[AMD_Zen] = {                                                          /* 84*/
        .Signature = _AMD_Zen,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9704,7 +9759,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen
        },
-[AMD_Zen_APU] = {                                                      /* 84*/
+[AMD_Zen_APU] = {                                                      /* 85*/
        .Signature = _AMD_Zen_APU,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9728,7 +9783,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen_APU
        },
-[AMD_ZenPlus] = {                                                      /* 85*/
+[AMD_ZenPlus] = {                                                      /* 86*/
        .Signature = _AMD_ZenPlus,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9752,7 +9807,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_ZenPlus
        },
-[AMD_ZenPlus_APU] = {                                                  /* 86*/
+[AMD_ZenPlus_APU] = {                                                  /* 87*/
        .Signature = _AMD_ZenPlus_APU,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9776,7 +9831,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_ZenPlus_APU
        },
-[AMD_Zen_Dali] = {                                                     /* 87*/
+[AMD_Zen_Dali] = {                                                     /* 88*/
        .Signature = _AMD_Zen_Dali,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9800,7 +9855,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen_Dali
        },
-[AMD_EPYC_Rome_CPK] = {                                                /* 88*/
+[AMD_EPYC_Rome_CPK] = {                                                /* 89*/
        .Signature = _AMD_EPYC_Rome_CPK,
        .Query = Query_AMD_F17h_PerCluster,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9824,7 +9879,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_EPYC_Rome_CPK
        },
-[AMD_Zen2_Renoir] = {                                                  /* 89*/
+[AMD_Zen2_Renoir] = {                                                  /* 90*/
        .Signature = _AMD_Zen2_Renoir,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9848,7 +9903,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_Renoir
        },
-[AMD_Zen2_LCN] = {                                                     /* 90*/
+[AMD_Zen2_LCN] = {                                                     /* 91*/
        .Signature = _AMD_Zen2_LCN,
        .Query = Query_AMD_F17h_PerSocket,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9872,7 +9927,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_LCN
        },
-[AMD_Zen2_MTS] = {                                                     /* 91*/
+[AMD_Zen2_MTS] = {                                                     /* 92*/
        .Signature = _AMD_Zen2_MTS,
        .Query = Query_AMD_F17h_PerCluster,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9896,7 +9951,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_MTS
        },
-[AMD_Zen2_Ariel] = {                                                   /* 92*/
+[AMD_Zen2_Ariel] = {                                                   /* 93*/
        .Signature = _AMD_Zen2_Ariel,
        .Query = Query_AMD_F17h_PerCluster,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9920,7 +9975,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_Ariel
        },
-[AMD_Zen2_Jupiter] = {                                                 /* 93*/
+[AMD_Zen2_Jupiter] = {                                                 /* 94*/
        .Signature = _AMD_Zen2_Jupiter,
        .Query = Query_AMD_F17h_PerCluster,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9944,7 +9999,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_Jupiter
        },
-[AMD_Zen2_MDN] = {                                                     /* 94*/
+[AMD_Zen2_MDN] = {                                                     /* 95*/
        .Signature = _AMD_Zen2_MDN,
        .Query = Query_AMD_F17h_PerCluster,
        .Update = PerCore_AMD_Family_17h_Query,
@@ -9968,7 +10023,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen2_MDN
        },
-[AMD_Zen3_VMR] = {                                                     /* 95*/
+[AMD_Zen3_VMR] = {                                                     /* 96*/
        .Signature = _AMD_Zen3_VMR,
        .Query = Query_AMD_F19h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -9992,7 +10047,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen3_VMR
        },
-[AMD_Zen3_CZN] = {                                                     /* 96*/
+[AMD_Zen3_CZN] = {                                                     /* 97*/
        .Signature = _AMD_Zen3_CZN,
        .Query = Query_AMD_F19h_PerSocket,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10016,7 +10071,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen3_CZN
        },
-[AMD_EPYC_Milan] = {                                                   /* 97*/
+[AMD_EPYC_Milan] = {                                                   /* 98*/
        .Signature = _AMD_EPYC_Milan,
        .Query = Query_AMD_F19h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10040,7 +10095,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_EPYC_Milan
        },
-[AMD_Zen3_Chagall] = {                                                 /* 98*/
+[AMD_Zen3_Chagall] = {                                                 /* 99*/
        .Signature = _AMD_Zen3_Chagall,
        .Query = Query_AMD_F19h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10064,7 +10119,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen3_Chagall
        },
-[AMD_Zen3_Badami] = {                                                  /* 99*/
+[AMD_Zen3_Badami] = {                                                  /*100*/
        .Signature = _AMD_Zen3_Badami,
        .Query = Query_AMD_F19h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10088,7 +10143,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen3_Badami
        },
-[AMD_Zen3Plus_RMB] = {                                                 /*100*/
+[AMD_Zen3Plus_RMB] = {                                                 /*101*/
        .Signature = _AMD_Zen3Plus_RMB,
        .Query = Query_AMD_F19h_PerSocket,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10112,7 +10167,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen3Plus_RMB
        },
-[AMD_Zen4_Genoa] = {                                                   /*101*/
+[AMD_Zen4_Genoa] = {                                                   /*102*/
        .Signature = _AMD_Zen4_Genoa,
        .Query = Query_AMD_F19h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
@@ -10136,7 +10191,7 @@
        .SystemDriver = AMD_Zen_Driver,
        .Architecture = Arch_AMD_Zen4_Genoa
        },
-[AMD_Zen4_RPL] = {                                                     /*102*/
+[AMD_Zen4_RPL] = {                                                     /*103*/
        .Signature = _AMD_Zen4_RPL,
        .Query = Query_AMD_F19h_61h_PerCluster,
        .Update = PerCore_AMD_Family_19h_Query,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/coretypes.h 
new/CoreFreq-1.95.2/coretypes.h
--- old/CoreFreq-1.95.1/coretypes.h     2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/coretypes.h     2023-02-05 15:34:56.000000000 +0100
@@ -6,7 +6,7 @@
 
 #define COREFREQ_MAJOR 1
 #define COREFREQ_MINOR 95
-#define COREFREQ_REV   1
+#define COREFREQ_REV   2
 
 #if !defined(CORE_COUNT)
        #define CORE_COUNT      256
@@ -99,6 +99,7 @@
        Tremont_Elkhartlake,
        Tremont_Jasperlake,
        Sapphire_Rapids,
+       Emerald_Rapids,
        Rocketlake,
        Rocketlake_U,
        Alderlake_S,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CoreFreq-1.95.1/intel_reg.h 
new/CoreFreq-1.95.2/intel_reg.h
--- old/CoreFreq-1.95.1/intel_reg.h     2023-01-23 00:29:55.000000000 +0100
+++ new/CoreFreq-1.95.2/intel_reg.h     2023-02-05 15:34:56.000000000 +0100
@@ -341,10 +341,19 @@
        #define MSR_IA32_HWP_REQUEST            MSR_HWP_REQUEST
 #endif
 
+/*     MSR registers related to Hardware Duty Cycling (HDC)            */
 #ifndef MSR_IA32_PKG_HDC_CTL
        #define MSR_IA32_PKG_HDC_CTL            0x00000db0
 #endif
 
+#ifndef MSR_IA32_PM_CTL1
+       #define MSR_IA32_PM_CTL1                0x00000db1
+#endif
+
+#ifndef MSR_IA32_THREAD_STALL
+       #define MSR_IA32_THREAD_STALL           0x00000db2
+#endif
+
 /*     Source: Intel Atom Processor E3800 Product Family Datasheet     */
 #define MSR_PKG_TURBO_CFG                      0x00000670
 #define MSR_THERM_CFG1                         0x00000673
@@ -390,6 +399,20 @@
        #define MSR_PKGC7_IRTL                  0x0000060c
 #endif
 
+/*     Additional MSRs supported by 6th up to 13th Gen and Xeon scalable */
+#ifndef MSR_PPERF
+       #define MSR_PPERF                       0x0000064e
+#endif
+
+#ifndef MSR_ANY_CORE_C0
+    #ifdef MSR_PKG_ANY_CORE_C0_RES
+       #define MSR_ANY_CORE_C0                 MSR_PKG_ANY_CORE_C0_RES
+    #else
+       #define MSR_ANY_CORE_C0                 0x00000659
+    #endif
+#endif
+
+/*     Partially documented registers                                  */
 #define MSR_FLEX_RATIO                         0x00000194
 #define MSR_IA32_OVERCLOCKING_STATUS           0x00000195
 #define MSR_IA32_MISC_PACKAGE_CTLS             0x000000bc
@@ -2474,7 +2497,7 @@
                RKEN0           :  1-0,  /* DIMM 0, Rank 0 Enabled      */
                RKEN1           :  2-1,  /* DIMM 0, Rank 1 Enabled      */
                RKEN2           :  3-2,  /* DIMM 1, Rank 0 Enabled      */
-               RKNE3           :  4-3,  /* DIMM 1, Rank 1 Enabled      */
+               RKEN3           :  4-3,  /* DIMM 1, Rank 1 Enabled      */
                DIMMDWID0       :  6-4,  /* 0b00:x8 0b01:x16 0b10:x32 0b11:RSV*/
                DIMMDDEN0       :  8-6,  /* Density {1; 2; 4; 8} Gbit   */
                ReservedBits1   :  9-8,
@@ -2652,9 +2675,24 @@
        } Z8000;
 } SOC_MC_DTR3;
 
-typedef union  /*      MCR: Port=0x01                                  */
+typedef union  /*      MCR: Port=0x01 & Offset=0x5                     */
 {
        unsigned int            value;
+       struct {
+               unsigned int
+               WRODTSTRT       :  2-0,
+               Rsvd_32         :  4-2,
+               WRODTSTOP       :  7-4,
+               Rsvd_7          :  8-7,
+               RDODTSTRT       : 11-8,
+               Rsvd_24         : 12-11,
+               RDODTSTOP       : 15-12,
+               Rsvd_15         : 16-15,
+               TRGSTRDIS       : 17-16,
+               RDODTDIS        : 18-17,
+               WRBODTDIS       : 19-18,
+               Rsvd_31         : 32-19;
+       };
        struct {        /*       Offset=0x5(DTR4A) ; 0x15(DTR4B)        */
                unsigned int
                WRODTSTRT       :  2-0,  /* WR command to ODT assert delay */
@@ -2679,6 +2717,26 @@
        struct {
                unsigned int
                SREDLY          :  8-0,  /* Self-Refresh Entry delay    */
+               PMOP            : 13-8,  /* SPID Power Mode Opcode      */
+               Rsvd_15         : 16-13,
+               PCLSTO          : 19-16, /* 2:30;3:60;4:120;5:240;6:480;7:1000*/
+               Rsvd_19         : 20-19,
+               PCLSWKOK        : 21-20, /* Wake Allowed for Page Close */
+               PREAPWDEN       : 22-21, /* Precharge All Command       */
+               Rsvd_22         : 23-22,
+               DYNSREN         : 24-23, /* Dynamic Self-Refresh Enable */
+               CLKGTDIS        : 25-24, /* Clock Gating Disabled       */
+               DISPWRDN        : 26-25, /* Disable Power Down          */
+               BLMODE          : 27-26, /* Burst Length Mode           */
+               Rsvd_27         : 28-27,
+               REUTCLKGTDIS    : 29-28, /* REUT Clock Gate Disable     */
+               ENPHYCLKGATE    : 30-29, /* Enable PHY Clock Gate During SR */
+               ENCKTRI         : 31-30, /* CK/CKB TriState During PowerDown */
+               ENCORECLKGATE   : 32-31;  /* Enable Core Clock Gate During SR */
+       };
+       struct {
+               unsigned int
+               SREDLY          :  8-0,  /* Self-Refresh Entry delay    */
                DYNSREN         :  9-8,  /* Dynamic Self-Refresh Enable */
                Rsvd_28         : 11-9,
                DYNPMOP         : 16-11,
@@ -2695,6 +2753,13 @@
        unsigned int            value;
        struct {
                unsigned int
+               CSTRIST         :  1-0,  /* Tristate Chip-Select. 0:Never */
+               Rsvd_3          :  4-1,
+               CMDTRIST        :  6-4,  /* Tristate Command if tCMD = 0 */
+               Rsvd_31         : 32-6;
+       };
+       struct {
+               unsigned int
                DISPWRDN        :  1-0,  /* Disable Power Down          */
                DPMC1_Rsvd      :  2-1,
                PCLSWKOK        :  3-2, /*Wake Allowed for Page Close Timeout*/
@@ -2743,6 +2808,36 @@
        } Z8000;
 } SOC_MC_DRFC;
 
+typedef union  /*      MCR: Port=0x01 & Offset=0xB                     */
+{
+       unsigned int            value;
+       struct {
+               unsigned int
+               CKEVAL          :  4-0,
+               CKEMODE         :  5-4,  /* CKE Control Mode            */
+               Rsvd_5          :  8-5,
+               ODTVAL          : 12-8,
+               ODTMODE         : 13-12, /* ODT Control Mode            */
+               Rsvd_13         : 16-13,
+               COLDWAKE        : 17-16, /* S3 WAKE command             */
+               Rsvd_17         : 32-17;
+       };
+       struct {
+               unsigned int
+               CKEVAL          :  2-0,
+               Rsvd_2          :  4-2,
+               CKEMODE         :  5-4,
+               Rsvd_5          :  8-5,
+               ODTVAL          : 10-8,
+               Rsvd_10         : 12-10,
+               ODTMODE         : 13-12,
+               Rsvd_13         : 16-13,
+               COLDWAKE        : 17-16,
+               DBPTRCLR        : 18-17,
+               Rsvd_18         : 32-18;
+       } Z8000;
+} SOC_MC_DRMC;
+
 typedef union  /*      MCR: Port=0x04 & Offset=0x6                     */
 {
        unsigned int            value;

Reply via email to