diff options
| -rw-r--r-- | arch/x86/events/intel/cstate.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/arch/x86/events/intel/cstate.c b/arch/x86/events/intel/cstate.c index 238ae3248ba5..4cf100ff2a37 100644 --- a/arch/x86/events/intel/cstate.c +++ b/arch/x86/events/intel/cstate.c | |||
| @@ -40,16 +40,16 @@ | |||
| 40 | * Model specific counters: | 40 | * Model specific counters: |
| 41 | * MSR_CORE_C1_RES: CORE C1 Residency Counter | 41 | * MSR_CORE_C1_RES: CORE C1 Residency Counter |
| 42 | * perf code: 0x00 | 42 | * perf code: 0x00 |
| 43 | * Available model: SLM,AMT | 43 | * Available model: SLM,AMT,GLM |
| 44 | * Scope: Core (each processor core has a MSR) | 44 | * Scope: Core (each processor core has a MSR) |
| 45 | * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter | 45 | * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter |
| 46 | * perf code: 0x01 | 46 | * perf code: 0x01 |
| 47 | * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL | 47 | * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,GLM |
| 48 | * Scope: Core | 48 | * Scope: Core |
| 49 | * MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter | 49 | * MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter |
| 50 | * perf code: 0x02 | 50 | * perf code: 0x02 |
| 51 | * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW | 51 | * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW |
| 52 | * SKL,KNL | 52 | * SKL,KNL,GLM |
| 53 | * Scope: Core | 53 | * Scope: Core |
| 54 | * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter | 54 | * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter |
| 55 | * perf code: 0x03 | 55 | * perf code: 0x03 |
| @@ -57,16 +57,17 @@ | |||
| 57 | * Scope: Core | 57 | * Scope: Core |
| 58 | * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter. | 58 | * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter. |
| 59 | * perf code: 0x00 | 59 | * perf code: 0x00 |
| 60 | * Available model: SNB,IVB,HSW,BDW,SKL,KNL | 60 | * Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM |
| 61 | * Scope: Package (physical package) | 61 | * Scope: Package (physical package) |
| 62 | * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter. | 62 | * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter. |
| 63 | * perf code: 0x01 | 63 | * perf code: 0x01 |
| 64 | * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL | 64 | * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL |
| 65 | * GLM | ||
| 65 | * Scope: Package (physical package) | 66 | * Scope: Package (physical package) |
| 66 | * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter. | 67 | * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter. |
| 67 | * perf code: 0x02 | 68 | * perf code: 0x02 |
| 68 | * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW | 69 | * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW |
| 69 | * SKL,KNL | 70 | * SKL,KNL,GLM |
| 70 | * Scope: Package (physical package) | 71 | * Scope: Package (physical package) |
| 71 | * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter. | 72 | * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter. |
| 72 | * perf code: 0x03 | 73 | * perf code: 0x03 |
| @@ -82,7 +83,7 @@ | |||
| 82 | * Scope: Package (physical package) | 83 | * Scope: Package (physical package) |
| 83 | * MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter. | 84 | * MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter. |
| 84 | * perf code: 0x06 | 85 | * perf code: 0x06 |
| 85 | * Available model: HSW ULT only | 86 | * Available model: HSW ULT, GLM |
| 86 | * Scope: Package (physical package) | 87 | * Scope: Package (physical package) |
| 87 | * | 88 | * |
| 88 | */ | 89 | */ |
| @@ -504,6 +505,17 @@ static const struct cstate_model knl_cstates __initconst = { | |||
| 504 | }; | 505 | }; |
| 505 | 506 | ||
| 506 | 507 | ||
| 508 | static const struct cstate_model glm_cstates __initconst = { | ||
| 509 | .core_events = BIT(PERF_CSTATE_CORE_C1_RES) | | ||
| 510 | BIT(PERF_CSTATE_CORE_C3_RES) | | ||
| 511 | BIT(PERF_CSTATE_CORE_C6_RES), | ||
| 512 | |||
| 513 | .pkg_events = BIT(PERF_CSTATE_PKG_C2_RES) | | ||
| 514 | BIT(PERF_CSTATE_PKG_C3_RES) | | ||
| 515 | BIT(PERF_CSTATE_PKG_C6_RES) | | ||
| 516 | BIT(PERF_CSTATE_PKG_C10_RES), | ||
| 517 | }; | ||
| 518 | |||
| 507 | 519 | ||
| 508 | #define X86_CSTATES_MODEL(model, states) \ | 520 | #define X86_CSTATES_MODEL(model, states) \ |
| 509 | { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long) &(states) } | 521 | { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long) &(states) } |
| @@ -546,6 +558,8 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = { | |||
| 546 | 558 | ||
| 547 | X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates), | 559 | X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates), |
| 548 | X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates), | 560 | X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates), |
| 561 | |||
| 562 | X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT, glm_cstates), | ||
| 549 | { }, | 563 | { }, |
| 550 | }; | 564 | }; |
| 551 | MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match); | 565 | MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match); |
