diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c index 4a67c42ac7a9ee0d236aa743d1fb76fbeddba17c..e77d66ed71dc816b4d909f34d03d7004f537e303 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c @@ -5578,6 +5578,7 @@ __init int intel_pmu_init(void) break; case INTEL_FAM6_SAPPHIRERAPIDS_X: + case INTEL_FAM6_EMERALDRAPIDS_X: pmem = true; x86_pmu.late_ack = true; memcpy(hw_cache_event_ids, spr_hw_cache_event_ids, sizeof(hw_cache_event_ids)); diff --git a/arch/x86/events/intel/cstate.c b/arch/x86/events/intel/cstate.c index 0b50119ea12cc4453cb6b88e6d9f91fc9230e52c..ce48102565dcf5042288948bdc60e87189ea49ae 100644 --- a/arch/x86/events/intel/cstate.c +++ b/arch/x86/events/intel/cstate.c @@ -40,7 +40,7 @@ * Model specific counters: * MSR_CORE_C1_RES: CORE C1 Residency Counter * perf code: 0x00 - * Available model: SLM,AMT,GLM,CNL,TNT + * Available model: SLM,AMT,GLM,CNL,ICX,TNT * Scope: Core (each processor core has a MSR) * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter * perf code: 0x01 @@ -50,8 +50,8 @@ * MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter * perf code: 0x02 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW, - * SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL, - * TNT + * SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX, + * TGL,TNT,SPR * Scope: Core * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter * perf code: 0x03 @@ -61,7 +61,7 @@ * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter. * perf code: 0x00 * Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM,CNL, - * KBL,CML,ICL,TGL,TNT + * KBL,CML,ICL,ICX,TGL,TNT,SPR * Scope: Package (physical package) * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter. * perf code: 0x01 @@ -71,8 +71,8 @@ * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter. * perf code: 0x02 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW, - * SKL,KNL,GLM,CNL,KBL,CML,ICL,TGL, - * TNT + * SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX, + * TGL,TNT,SPR * Scope: Package (physical package) * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter. * perf code: 0x03 @@ -563,6 +563,14 @@ static const struct cstate_model icl_cstates __initconst = { BIT(PERF_CSTATE_PKG_C10_RES), }; +static const struct cstate_model icx_cstates __initconst = { + .core_events = BIT(PERF_CSTATE_CORE_C1_RES) | + BIT(PERF_CSTATE_CORE_C6_RES), + + .pkg_events = BIT(PERF_CSTATE_PKG_C2_RES) | + BIT(PERF_CSTATE_PKG_C6_RES), +}; + static const struct cstate_model slm_cstates __initconst = { .core_events = BIT(PERF_CSTATE_CORE_C1_RES) | BIT(PERF_CSTATE_CORE_C6_RES), @@ -649,6 +657,11 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = { X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE_L, icl_cstates), X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE, icl_cstates), + X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE_X, icx_cstates), + X86_CSTATES_MODEL(INTEL_FAM6_ICELAKE_D, icx_cstates), + X86_CSTATES_MODEL(INTEL_FAM6_SAPPHIRERAPIDS_X, icx_cstates), + X86_CSTATES_MODEL(INTEL_FAM6_EMERALDRAPIDS_X, icx_cstates), + X86_CSTATES_MODEL(INTEL_FAM6_TIGERLAKE_L, icl_cstates), X86_CSTATES_MODEL(INTEL_FAM6_TIGERLAKE, icl_cstates), { }, diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index b02a900deb65e26a7fa3689cc5910829254b0535..e993a7825306149b134ab04c3ad75b69975c7689 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c @@ -1798,6 +1798,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = { X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ICELAKE_D, icx_uncore_init), X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ICELAKE_X, icx_uncore_init), X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SAPPHIRERAPIDS_X, spr_uncore_init), + X86_UNCORE_MODEL_MATCH(INTEL_FAM6_EMERALDRAPIDS_X, spr_uncore_init), X86_UNCORE_MODEL_MATCH(INTEL_FAM6_ATOM_TREMONT_D, snr_uncore_init), {}, }; diff --git a/arch/x86/events/msr.c b/arch/x86/events/msr.c index a949f6f55991dc5dd1756288cecad675fe55f78f..944ac18ac20cf0b5b330e9d4357ca72b21626be1 100644 --- a/arch/x86/events/msr.c +++ b/arch/x86/events/msr.c @@ -68,6 +68,8 @@ static bool test_intel(int idx, void *data) case INTEL_FAM6_BROADWELL_D: case INTEL_FAM6_BROADWELL_G: case INTEL_FAM6_BROADWELL_X: + case INTEL_FAM6_SAPPHIRERAPIDS_X: + case INTEL_FAM6_EMERALDRAPIDS_X: case INTEL_FAM6_ATOM_SILVERMONT: case INTEL_FAM6_ATOM_SILVERMONT_D: diff --git a/arch/x86/events/rapl.c b/arch/x86/events/rapl.c index b4952869355a0629ddf663b6483bbcf9d6d67024..7c1ac75f21a6a71dd3884421f589d7f74c98bad4 100644 --- a/arch/x86/events/rapl.c +++ b/arch/x86/events/rapl.c @@ -783,6 +783,7 @@ static const struct x86_cpu_id rapl_model_match[] __initconst = { X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE_L, model_skl), X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE, model_skl), X86_RAPL_MODEL_MATCH(INTEL_FAM6_SAPPHIRERAPIDS_X, model_spr), + X86_RAPL_MODEL_MATCH(INTEL_FAM6_EMERALDRAPIDS_X, model_spr), {}, };