diff options
Diffstat (limited to 'arch/x86/include')
-rw-r--r-- | arch/x86/include/asm/apic.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/hardirq.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/init.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable_64.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/realmode.h | 10 | ||||
-rw-r--r-- | arch/x86/include/asm/tlbflush.h | 7 | ||||
-rw-r--r-- | arch/x86/include/asm/uv/bios.h | 5 |
7 files changed, 25 insertions, 11 deletions
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index f5befd4945f2..124357773ffa 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h | |||
@@ -135,6 +135,7 @@ extern void init_apic_mappings(void); | |||
135 | void register_lapic_address(unsigned long address); | 135 | void register_lapic_address(unsigned long address); |
136 | extern void setup_boot_APIC_clock(void); | 136 | extern void setup_boot_APIC_clock(void); |
137 | extern void setup_secondary_APIC_clock(void); | 137 | extern void setup_secondary_APIC_clock(void); |
138 | extern void lapic_update_tsc_freq(void); | ||
138 | extern int APIC_init_uniprocessor(void); | 139 | extern int APIC_init_uniprocessor(void); |
139 | 140 | ||
140 | #ifdef CONFIG_X86_64 | 141 | #ifdef CONFIG_X86_64 |
@@ -170,6 +171,7 @@ static inline void init_apic_mappings(void) { } | |||
170 | static inline void disable_local_APIC(void) { } | 171 | static inline void disable_local_APIC(void) { } |
171 | # define setup_boot_APIC_clock x86_init_noop | 172 | # define setup_boot_APIC_clock x86_init_noop |
172 | # define setup_secondary_APIC_clock x86_init_noop | 173 | # define setup_secondary_APIC_clock x86_init_noop |
174 | static inline void lapic_update_tsc_freq(void) { } | ||
173 | #endif /* !CONFIG_X86_LOCAL_APIC */ | 175 | #endif /* !CONFIG_X86_LOCAL_APIC */ |
174 | 176 | ||
175 | #ifdef CONFIG_X86_X2APIC | 177 | #ifdef CONFIG_X86_X2APIC |
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h index 7178043b0e1d..59405a248fc2 100644 --- a/arch/x86/include/asm/hardirq.h +++ b/arch/x86/include/asm/hardirq.h | |||
@@ -22,10 +22,6 @@ typedef struct { | |||
22 | #ifdef CONFIG_SMP | 22 | #ifdef CONFIG_SMP |
23 | unsigned int irq_resched_count; | 23 | unsigned int irq_resched_count; |
24 | unsigned int irq_call_count; | 24 | unsigned int irq_call_count; |
25 | /* | ||
26 | * irq_tlb_count is double-counted in irq_call_count, so it must be | ||
27 | * subtracted from irq_call_count when displaying irq_call_count | ||
28 | */ | ||
29 | unsigned int irq_tlb_count; | 25 | unsigned int irq_tlb_count; |
30 | #endif | 26 | #endif |
31 | #ifdef CONFIG_X86_THERMAL_VECTOR | 27 | #ifdef CONFIG_X86_THERMAL_VECTOR |
diff --git a/arch/x86/include/asm/init.h b/arch/x86/include/asm/init.h index 223042086f4e..737da62bfeb0 100644 --- a/arch/x86/include/asm/init.h +++ b/arch/x86/include/asm/init.h | |||
@@ -5,10 +5,10 @@ struct x86_mapping_info { | |||
5 | void *(*alloc_pgt_page)(void *); /* allocate buf for page table */ | 5 | void *(*alloc_pgt_page)(void *); /* allocate buf for page table */ |
6 | void *context; /* context for alloc_pgt_page */ | 6 | void *context; /* context for alloc_pgt_page */ |
7 | unsigned long pmd_flag; /* page flag for PMD entry */ | 7 | unsigned long pmd_flag; /* page flag for PMD entry */ |
8 | bool kernel_mapping; /* kernel mapping or ident mapping */ | 8 | unsigned long offset; /* ident mapping offset */ |
9 | }; | 9 | }; |
10 | 10 | ||
11 | int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, | 11 | int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, |
12 | unsigned long addr, unsigned long end); | 12 | unsigned long pstart, unsigned long pend); |
13 | 13 | ||
14 | #endif /* _ASM_X86_INIT_H */ | 14 | #endif /* _ASM_X86_INIT_H */ |
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h index 7e8ec7ae10fa..1cc82ece9ac1 100644 --- a/arch/x86/include/asm/pgtable_64.h +++ b/arch/x86/include/asm/pgtable_64.h | |||
@@ -145,7 +145,7 @@ static inline int pgd_large(pgd_t pgd) { return 0; } | |||
145 | * | 145 | * |
146 | * | ... | 11| 10| 9|8|7|6|5| 4| 3|2|1|0| <- bit number | 146 | * | ... | 11| 10| 9|8|7|6|5| 4| 3|2|1|0| <- bit number |
147 | * | ... |SW3|SW2|SW1|G|L|D|A|CD|WT|U|W|P| <- bit names | 147 | * | ... |SW3|SW2|SW1|G|L|D|A|CD|WT|U|W|P| <- bit names |
148 | * | OFFSET (14->63) | TYPE (10-13) |0|X|X|X| X| X|X|X|0| <- swp entry | 148 | * | OFFSET (14->63) | TYPE (9-13) |0|X|X|X| X| X|X|X|0| <- swp entry |
149 | * | 149 | * |
150 | * G (8) is aliased and used as a PROT_NONE indicator for | 150 | * G (8) is aliased and used as a PROT_NONE indicator for |
151 | * !present ptes. We need to start storing swap entries above | 151 | * !present ptes. We need to start storing swap entries above |
@@ -156,7 +156,7 @@ static inline int pgd_large(pgd_t pgd) { return 0; } | |||
156 | #define SWP_TYPE_FIRST_BIT (_PAGE_BIT_PROTNONE + 1) | 156 | #define SWP_TYPE_FIRST_BIT (_PAGE_BIT_PROTNONE + 1) |
157 | #define SWP_TYPE_BITS 5 | 157 | #define SWP_TYPE_BITS 5 |
158 | /* Place the offset above the type: */ | 158 | /* Place the offset above the type: */ |
159 | #define SWP_OFFSET_FIRST_BIT (SWP_TYPE_FIRST_BIT + SWP_TYPE_BITS + 1) | 159 | #define SWP_OFFSET_FIRST_BIT (SWP_TYPE_FIRST_BIT + SWP_TYPE_BITS) |
160 | 160 | ||
161 | #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > SWP_TYPE_BITS) | 161 | #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > SWP_TYPE_BITS) |
162 | 162 | ||
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h index 9c6b890d5e7a..b2988c0ed829 100644 --- a/arch/x86/include/asm/realmode.h +++ b/arch/x86/include/asm/realmode.h | |||
@@ -58,7 +58,15 @@ extern unsigned char boot_gdt[]; | |||
58 | extern unsigned char secondary_startup_64[]; | 58 | extern unsigned char secondary_startup_64[]; |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | static inline size_t real_mode_size_needed(void) | ||
62 | { | ||
63 | if (real_mode_header) | ||
64 | return 0; /* already allocated. */ | ||
65 | |||
66 | return ALIGN(real_mode_blob_end - real_mode_blob, PAGE_SIZE); | ||
67 | } | ||
68 | |||
69 | void set_real_mode_mem(phys_addr_t mem, size_t size); | ||
61 | void reserve_real_mode(void); | 70 | void reserve_real_mode(void); |
62 | void setup_real_mode(void); | ||
63 | 71 | ||
64 | #endif /* _ARCH_X86_REALMODE_H */ | 72 | #endif /* _ARCH_X86_REALMODE_H */ |
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 4e5be94e079a..6fa85944af83 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h | |||
@@ -135,7 +135,14 @@ static inline void cr4_set_bits_and_update_boot(unsigned long mask) | |||
135 | 135 | ||
136 | static inline void __native_flush_tlb(void) | 136 | static inline void __native_flush_tlb(void) |
137 | { | 137 | { |
138 | /* | ||
139 | * If current->mm == NULL then we borrow a mm which may change during a | ||
140 | * task switch and therefore we must not be preempted while we write CR3 | ||
141 | * back: | ||
142 | */ | ||
143 | preempt_disable(); | ||
138 | native_write_cr3(native_read_cr3()); | 144 | native_write_cr3(native_read_cr3()); |
145 | preempt_enable(); | ||
139 | } | 146 | } |
140 | 147 | ||
141 | static inline void __native_flush_tlb_global_irq_disabled(void) | 148 | static inline void __native_flush_tlb_global_irq_disabled(void) |
diff --git a/arch/x86/include/asm/uv/bios.h b/arch/x86/include/asm/uv/bios.h index c852590254d5..e652a7cc6186 100644 --- a/arch/x86/include/asm/uv/bios.h +++ b/arch/x86/include/asm/uv/bios.h | |||
@@ -79,7 +79,7 @@ struct uv_gam_range_entry { | |||
79 | u16 nasid; /* HNasid */ | 79 | u16 nasid; /* HNasid */ |
80 | u16 sockid; /* Socket ID, high bits of APIC ID */ | 80 | u16 sockid; /* Socket ID, high bits of APIC ID */ |
81 | u16 pnode; /* Index to MMR and GRU spaces */ | 81 | u16 pnode; /* Index to MMR and GRU spaces */ |
82 | u32 pxm; /* ACPI proximity domain number */ | 82 | u32 unused2; |
83 | u32 limit; /* PA bits 56:26 (UV_GAM_RANGE_SHFT) */ | 83 | u32 limit; /* PA bits 56:26 (UV_GAM_RANGE_SHFT) */ |
84 | }; | 84 | }; |
85 | 85 | ||
@@ -88,7 +88,8 @@ struct uv_gam_range_entry { | |||
88 | #define UV_SYSTAB_VERSION_UV4 0x400 /* UV4 BIOS base version */ | 88 | #define UV_SYSTAB_VERSION_UV4 0x400 /* UV4 BIOS base version */ |
89 | #define UV_SYSTAB_VERSION_UV4_1 0x401 /* + gpa_shift */ | 89 | #define UV_SYSTAB_VERSION_UV4_1 0x401 /* + gpa_shift */ |
90 | #define UV_SYSTAB_VERSION_UV4_2 0x402 /* + TYPE_NVRAM/WINDOW/MBOX */ | 90 | #define UV_SYSTAB_VERSION_UV4_2 0x402 /* + TYPE_NVRAM/WINDOW/MBOX */ |
91 | #define UV_SYSTAB_VERSION_UV4_LATEST UV_SYSTAB_VERSION_UV4_2 | 91 | #define UV_SYSTAB_VERSION_UV4_3 0x403 /* - GAM Range PXM Value */ |
92 | #define UV_SYSTAB_VERSION_UV4_LATEST UV_SYSTAB_VERSION_UV4_3 | ||
92 | 93 | ||
93 | #define UV_SYSTAB_TYPE_UNUSED 0 /* End of table (offset == 0) */ | 94 | #define UV_SYSTAB_TYPE_UNUSED 0 /* End of table (offset == 0) */ |
94 | #define UV_SYSTAB_TYPE_GAM_PARAMS 1 /* GAM PARAM conversions */ | 95 | #define UV_SYSTAB_TYPE_GAM_PARAMS 1 /* GAM PARAM conversions */ |