mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 22:50:41 +00:00
Merge branch 'x86/cpu' into x86/mm, before applying dependent patch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
73fa1362a7
@ -80,7 +80,7 @@ extern u16 __read_mostly tlb_lld_1g[NR_INFO];
|
||||
|
||||
/*
|
||||
* CPU type and hardware bug flags. Kept separately for each CPU.
|
||||
* Members of this structure are referenced in head.S, so think twice
|
||||
* Members of this structure are referenced in head_32.S, so think twice
|
||||
* before touching them. [mj]
|
||||
*/
|
||||
|
||||
@ -89,14 +89,7 @@ struct cpuinfo_x86 {
|
||||
__u8 x86_vendor; /* CPU vendor */
|
||||
__u8 x86_model;
|
||||
__u8 x86_mask;
|
||||
#ifdef CONFIG_X86_32
|
||||
char wp_works_ok; /* It doesn't on 386's */
|
||||
|
||||
/* Problems on some 486Dx4's and old 386's: */
|
||||
char rfu;
|
||||
char pad0;
|
||||
char pad1;
|
||||
#else
|
||||
#ifdef CONFIG_X86_64
|
||||
/* Number of 4K pages in DTLB/ITLB combined(in pages): */
|
||||
int x86_tlbsize;
|
||||
#endif
|
||||
|
@ -31,14 +31,13 @@ static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)
|
||||
"fpu\t\t: %s\n"
|
||||
"fpu_exception\t: %s\n"
|
||||
"cpuid level\t: %d\n"
|
||||
"wp\t\t: %s\n",
|
||||
"wp\t\t: yes\n",
|
||||
static_cpu_has_bug(X86_BUG_FDIV) ? "yes" : "no",
|
||||
static_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no",
|
||||
static_cpu_has_bug(X86_BUG_COMA) ? "yes" : "no",
|
||||
static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no",
|
||||
c->cpuid_level,
|
||||
c->wp_works_ok ? "yes" : "no");
|
||||
c->cpuid_level);
|
||||
}
|
||||
#else
|
||||
static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c)
|
||||
|
@ -173,14 +173,11 @@ static struct resource bss_resource = {
|
||||
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
/* cpu data as detected by the assembly code in head.S */
|
||||
struct cpuinfo_x86 new_cpu_data = {
|
||||
.wp_works_ok = -1,
|
||||
};
|
||||
/* cpu data as detected by the assembly code in head_32.S */
|
||||
struct cpuinfo_x86 new_cpu_data;
|
||||
|
||||
/* common cpu data for all cpus */
|
||||
struct cpuinfo_x86 boot_cpu_data __read_mostly = {
|
||||
.wp_works_ok = -1,
|
||||
};
|
||||
struct cpuinfo_x86 boot_cpu_data __read_mostly;
|
||||
EXPORT_SYMBOL(boot_cpu_data);
|
||||
|
||||
unsigned int def_to_bigsmp;
|
||||
|
@ -726,15 +726,17 @@ void __init paging_init(void)
|
||||
*/
|
||||
static void __init test_wp_bit(void)
|
||||
{
|
||||
int wp_works_ok;
|
||||
|
||||
printk(KERN_INFO
|
||||
"Checking if this processor honours the WP bit even in supervisor mode...");
|
||||
|
||||
/* Any page-aligned address will do, the test is non-destructive */
|
||||
__set_fixmap(FIX_WP_TEST, __pa(&swapper_pg_dir), PAGE_KERNEL_RO);
|
||||
boot_cpu_data.wp_works_ok = do_test_wp_bit();
|
||||
wp_works_ok = do_test_wp_bit();
|
||||
clear_fixmap(FIX_WP_TEST);
|
||||
|
||||
if (!boot_cpu_data.wp_works_ok) {
|
||||
if (!wp_works_ok) {
|
||||
printk(KERN_CONT "No.\n");
|
||||
panic("Linux doesn't support CPUs with broken WP.");
|
||||
} else {
|
||||
@ -821,8 +823,7 @@ void __init mem_init(void)
|
||||
BUG_ON(VMALLOC_START >= VMALLOC_END);
|
||||
BUG_ON((unsigned long)high_memory > VMALLOC_START);
|
||||
|
||||
if (boot_cpu_data.wp_works_ok < 0)
|
||||
test_wp_bit();
|
||||
test_wp_bit();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
|
@ -1595,7 +1595,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
|
||||
/* set up basic CPUID stuff */
|
||||
cpu_detect(&new_cpu_data);
|
||||
set_cpu_cap(&new_cpu_data, X86_FEATURE_FPU);
|
||||
new_cpu_data.wp_works_ok = 1;
|
||||
new_cpu_data.x86_capability[CPUID_1_EDX] = cpuid_edx(1);
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user