diff options
Diffstat (limited to 'arch/x86/include/asm/processor.h')
| -rw-r--r-- | arch/x86/include/asm/processor.h | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 325b7bdbebaa..cae9c3cb95cf 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h | |||
| @@ -110,6 +110,8 @@ struct cpuinfo_x86 { | |||
| 110 | u16 phys_proc_id; | 110 | u16 phys_proc_id; |
| 111 | /* Core id: */ | 111 | /* Core id: */ |
| 112 | u16 cpu_core_id; | 112 | u16 cpu_core_id; |
| 113 | /* Compute unit id */ | ||
| 114 | u8 compute_unit_id; | ||
| 113 | /* Index into per_cpu list: */ | 115 | /* Index into per_cpu list: */ |
| 114 | u16 cpu_index; | 116 | u16 cpu_index; |
| 115 | #endif | 117 | #endif |
| @@ -602,7 +604,7 @@ extern unsigned long mmu_cr4_features; | |||
| 602 | 604 | ||
| 603 | static inline void set_in_cr4(unsigned long mask) | 605 | static inline void set_in_cr4(unsigned long mask) |
| 604 | { | 606 | { |
| 605 | unsigned cr4; | 607 | unsigned long cr4; |
| 606 | 608 | ||
| 607 | mmu_cr4_features |= mask; | 609 | mmu_cr4_features |= mask; |
| 608 | cr4 = read_cr4(); | 610 | cr4 = read_cr4(); |
| @@ -612,7 +614,7 @@ static inline void set_in_cr4(unsigned long mask) | |||
| 612 | 614 | ||
| 613 | static inline void clear_in_cr4(unsigned long mask) | 615 | static inline void clear_in_cr4(unsigned long mask) |
| 614 | { | 616 | { |
| 615 | unsigned cr4; | 617 | unsigned long cr4; |
| 616 | 618 | ||
| 617 | mmu_cr4_features &= ~mask; | 619 | mmu_cr4_features &= ~mask; |
| 618 | cr4 = read_cr4(); | 620 | cr4 = read_cr4(); |
| @@ -764,29 +766,6 @@ extern unsigned long idle_halt; | |||
| 764 | extern unsigned long idle_nomwait; | 766 | extern unsigned long idle_nomwait; |
| 765 | extern bool c1e_detected; | 767 | extern bool c1e_detected; |
| 766 | 768 | ||
| 767 | /* | ||
| 768 | * on systems with caches, caches must be flashed as the absolute | ||
| 769 | * last instruction before going into a suspended halt. Otherwise, | ||
| 770 | * dirty data can linger in the cache and become stale on resume, | ||
| 771 | * leading to strange errors. | ||
| 772 | * | ||
| 773 | * perform a variety of operations to guarantee that the compiler | ||
| 774 | * will not reorder instructions. wbinvd itself is serializing | ||
| 775 | * so the processor will not reorder. | ||
| 776 | * | ||
| 777 | * Systems without cache can just go into halt. | ||
| 778 | */ | ||
| 779 | static inline void wbinvd_halt(void) | ||
| 780 | { | ||
| 781 | mb(); | ||
| 782 | /* check for clflush to determine if wbinvd is legal */ | ||
| 783 | if (cpu_has_clflush) | ||
| 784 | asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory"); | ||
| 785 | else | ||
| 786 | while (1) | ||
| 787 | halt(); | ||
| 788 | } | ||
| 789 | |||
| 790 | extern void enable_sep_cpu(void); | 769 | extern void enable_sep_cpu(void); |
| 791 | extern int sysenter_setup(void); | 770 | extern int sysenter_setup(void); |
| 792 | 771 | ||
