diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-18 12:59:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-18 12:59:04 -0400 |
commit | 08328814256d888634ff15ba8fb67e2ae4340b64 (patch) | |
tree | f8fd156c069214ea57547505294241a08ca957f7 | |
parent | 9d71bdfbcba12b55ed671166896cd785dcd57216 (diff) | |
parent | 0e60439c22ec551e9b5780eba73ddfeb63ab63d9 (diff) |
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar:
"Misc fixes, plus hw-enablement changes:
- fix persistent RAM handling
- remove pkeys warning
- remove duplicate macro
- fix debug warning in irq handler
- add new 'Knights Mill' CPU related constants and enable the perf bits"
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
perf/x86/intel/uncore: Add Knights Mill CPUID
perf/x86/intel/rapl: Add Knights Mill CPUID
perf/x86/intel: Add Knights Mill CPUID
x86/cpu/intel: Add Knights Mill to Intel family
x86/e820: Don't merge consecutive E820_PRAM ranges
pkeys: Remove easily triggered WARN
x86: Remove duplicate rtit status MSR macro
x86/smp: Add irq_enter/exit() in smp_reschedule_interrupt()
-rw-r--r-- | arch/x86/events/intel/core.c | 3 | ||||
-rw-r--r-- | arch/x86/events/intel/rapl.c | 1 | ||||
-rw-r--r-- | arch/x86/events/intel/uncore.c | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/intel-family.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/msr-index.h | 1 | ||||
-rw-r--r-- | arch/x86/kernel/e820.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/smp.c | 2 |
7 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c index a3a9eb84b5cf..eab0915f5995 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c | |||
@@ -3898,6 +3898,7 @@ __init int intel_pmu_init(void) | |||
3898 | break; | 3898 | break; |
3899 | 3899 | ||
3900 | case INTEL_FAM6_XEON_PHI_KNL: | 3900 | case INTEL_FAM6_XEON_PHI_KNL: |
3901 | case INTEL_FAM6_XEON_PHI_KNM: | ||
3901 | memcpy(hw_cache_event_ids, | 3902 | memcpy(hw_cache_event_ids, |
3902 | slm_hw_cache_event_ids, sizeof(hw_cache_event_ids)); | 3903 | slm_hw_cache_event_ids, sizeof(hw_cache_event_ids)); |
3903 | memcpy(hw_cache_extra_regs, | 3904 | memcpy(hw_cache_extra_regs, |
@@ -3912,7 +3913,7 @@ __init int intel_pmu_init(void) | |||
3912 | x86_pmu.flags |= PMU_FL_HAS_RSP_1; | 3913 | x86_pmu.flags |= PMU_FL_HAS_RSP_1; |
3913 | x86_pmu.flags |= PMU_FL_NO_HT_SHARING; | 3914 | x86_pmu.flags |= PMU_FL_NO_HT_SHARING; |
3914 | 3915 | ||
3915 | pr_cont("Knights Landing events, "); | 3916 | pr_cont("Knights Landing/Mill events, "); |
3916 | break; | 3917 | break; |
3917 | 3918 | ||
3918 | case INTEL_FAM6_SKYLAKE_MOBILE: | 3919 | case INTEL_FAM6_SKYLAKE_MOBILE: |
diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c index b0f0e835a770..0a535cea8ff3 100644 --- a/arch/x86/events/intel/rapl.c +++ b/arch/x86/events/intel/rapl.c | |||
@@ -763,6 +763,7 @@ static const struct x86_cpu_id rapl_cpu_match[] __initconst = { | |||
763 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_XEON_D, hsw_rapl_init), | 763 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_XEON_D, hsw_rapl_init), |
764 | 764 | ||
765 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_rapl_init), | 765 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_rapl_init), |
766 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNM, knl_rapl_init), | ||
766 | 767 | ||
767 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_MOBILE, skl_rapl_init), | 768 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_MOBILE, skl_rapl_init), |
768 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_DESKTOP, skl_rapl_init), | 769 | X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_DESKTOP, skl_rapl_init), |
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index d9844cc74486..efca2685d876 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c | |||
@@ -1349,6 +1349,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = { | |||
1349 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_X, bdx_uncore_init), | 1349 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_X, bdx_uncore_init), |
1350 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_XEON_D, bdx_uncore_init), | 1350 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_BROADWELL_XEON_D, bdx_uncore_init), |
1351 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_uncore_init), | 1351 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_uncore_init), |
1352 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNM, knl_uncore_init), | ||
1352 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_DESKTOP,skl_uncore_init), | 1353 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_DESKTOP,skl_uncore_init), |
1353 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_MOBILE, skl_uncore_init), | 1354 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_MOBILE, skl_uncore_init), |
1354 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_X, skx_uncore_init), | 1355 | X86_UNCORE_MODEL_MATCH(INTEL_FAM6_SKYLAKE_X, skx_uncore_init), |
diff --git a/arch/x86/include/asm/intel-family.h b/arch/x86/include/asm/intel-family.h index 9ae5ab80a497..34a46dc076d3 100644 --- a/arch/x86/include/asm/intel-family.h +++ b/arch/x86/include/asm/intel-family.h | |||
@@ -64,5 +64,6 @@ | |||
64 | /* Xeon Phi */ | 64 | /* Xeon Phi */ |
65 | 65 | ||
66 | #define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */ | 66 | #define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */ |
67 | #define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */ | ||
67 | 68 | ||
68 | #endif /* _ASM_X86_INTEL_FAMILY_H */ | 69 | #endif /* _ASM_X86_INTEL_FAMILY_H */ |
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index 56f4c6676b29..78f3760ca1f2 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h | |||
@@ -88,7 +88,6 @@ | |||
88 | 88 | ||
89 | #define MSR_IA32_RTIT_CTL 0x00000570 | 89 | #define MSR_IA32_RTIT_CTL 0x00000570 |
90 | #define MSR_IA32_RTIT_STATUS 0x00000571 | 90 | #define MSR_IA32_RTIT_STATUS 0x00000571 |
91 | #define MSR_IA32_RTIT_STATUS 0x00000571 | ||
92 | #define MSR_IA32_RTIT_ADDR0_A 0x00000580 | 91 | #define MSR_IA32_RTIT_ADDR0_A 0x00000580 |
93 | #define MSR_IA32_RTIT_ADDR0_B 0x00000581 | 92 | #define MSR_IA32_RTIT_ADDR0_B 0x00000581 |
94 | #define MSR_IA32_RTIT_ADDR1_A 0x00000582 | 93 | #define MSR_IA32_RTIT_ADDR1_A 0x00000582 |
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index b85fe5f91c3f..90e8dde3ec26 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -350,7 +350,7 @@ int __init sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, | |||
350 | * continue building up new bios map based on this | 350 | * continue building up new bios map based on this |
351 | * information | 351 | * information |
352 | */ | 352 | */ |
353 | if (current_type != last_type) { | 353 | if (current_type != last_type || current_type == E820_PRAM) { |
354 | if (last_type != 0) { | 354 | if (last_type != 0) { |
355 | new_bios[new_bios_entry].size = | 355 | new_bios[new_bios_entry].size = |
356 | change_point[chgidx]->addr - last_addr; | 356 | change_point[chgidx]->addr - last_addr; |
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 68f8cc222f25..c00cb64bc0a1 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -261,8 +261,10 @@ static inline void __smp_reschedule_interrupt(void) | |||
261 | 261 | ||
262 | __visible void smp_reschedule_interrupt(struct pt_regs *regs) | 262 | __visible void smp_reschedule_interrupt(struct pt_regs *regs) |
263 | { | 263 | { |
264 | irq_enter(); | ||
264 | ack_APIC_irq(); | 265 | ack_APIC_irq(); |
265 | __smp_reschedule_interrupt(); | 266 | __smp_reschedule_interrupt(); |
267 | irq_exit(); | ||
266 | /* | 268 | /* |
267 | * KVM uses this interrupt to force a cpu out of guest mode | 269 | * KVM uses this interrupt to force a cpu out of guest mode |
268 | */ | 270 | */ |