summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/common/block/cpu/cpulib.c9
-rw-r--r--src/soc/intel/common/block/include/intelblocks/cpulib.h8
-rw-r--r--src/soc/intel/common/block/include/intelblocks/msr.h2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/cpu/cpulib.c b/src/soc/intel/common/block/cpu/cpulib.c
index bf361a4791..1cefc1277e 100644
--- a/src/soc/intel/common/block/cpu/cpulib.c
+++ b/src/soc/intel/common/block/cpu/cpulib.c
@@ -505,3 +505,12 @@ void disable_three_strike_error(void)
msr.lo = msr.lo | DISABLE_CPU_ERROR;
wrmsr(MSR_PREFETCH_CTL, msr);
}
+
+void disable_signaling_three_strike_event(void)
+{
+ msr_t msr;
+
+ msr = rdmsr(MSR_DISABLE_SIGNALING_THREE_STRIKE_EVENT);
+ msr.lo = msr.lo | THREE_STRIKE_COUNT;
+ wrmsr(MSR_DISABLE_SIGNALING_THREE_STRIKE_EVENT, msr);
+}
diff --git a/src/soc/intel/common/block/include/intelblocks/cpulib.h b/src/soc/intel/common/block/include/intelblocks/cpulib.h
index 5601d5d067..91c76e393c 100644
--- a/src/soc/intel/common/block/include/intelblocks/cpulib.h
+++ b/src/soc/intel/common/block/include/intelblocks/cpulib.h
@@ -217,4 +217,12 @@ bool is_keylocker_supported(void);
*/
void disable_three_strike_error(void);
+/*
+ * This function stops the Three Strike event from signaling and prevent
+ * the Three Strike Counter from incrementing.
+ * This is the new MSR introduces starting from Intel Meteor Lake-C0 (QS) stepping SoC
+ * It helps to collect more useful CPU traces for debugging.
+ */
+void disable_signaling_three_strike_event(void);
+
#endif /* SOC_INTEL_COMMON_BLOCK_CPULIB_H */
diff --git a/src/soc/intel/common/block/include/intelblocks/msr.h b/src/soc/intel/common/block/include/intelblocks/msr.h
index 9f95e9f7e6..158cc9e3fe 100644
--- a/src/soc/intel/common/block/include/intelblocks/msr.h
+++ b/src/soc/intel/common/block/include/intelblocks/msr.h
@@ -41,6 +41,8 @@
#define MISC_PWR_MGMT_ISST_EN (1 << 6)
#define MISC_PWR_MGMT_ISST_EN_INT (1 << 7)
#define MISC_PWR_MGMT_ISST_EN_EPP (1 << 12)
+#define MSR_DISABLE_SIGNALING_THREE_STRIKE_EVENT 0x1ab
+#define THREE_STRIKE_COUNT (1 << 0)
#define MSR_TURBO_RATIO_LIMIT 0x1ad
#define MSR_PRMRR_PHYS_BASE 0x1f4
#define MSR_PRMRR_PHYS_MASK 0x1f5