Apply fix to un-cripple max cpu id on BSP earlier.
We need to know actual value for the standard extended features before ifuncs are resolved. Reported and tested by: madpilot Sponsored by: The FreeBSD Foundation MFC after: 1 week
This commit is contained in:
parent
f3e91215c4
commit
47d30bf79e
@ -1581,6 +1581,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree)
|
|||||||
|
|
||||||
identify_cpu1();
|
identify_cpu1();
|
||||||
identify_hypervisor();
|
identify_hypervisor();
|
||||||
|
identify_cpu_fixup_bsp();
|
||||||
identify_cpu2();
|
identify_cpu2();
|
||||||
initializecpucache();
|
initializecpucache();
|
||||||
|
|
||||||
|
@ -129,6 +129,7 @@ void dump_drop_page(vm_paddr_t);
|
|||||||
void finishidentcpu(void);
|
void finishidentcpu(void);
|
||||||
void identify_cpu1(void);
|
void identify_cpu1(void);
|
||||||
void identify_cpu2(void);
|
void identify_cpu2(void);
|
||||||
|
void identify_cpu_fixup_bsp(void);
|
||||||
void identify_hypervisor(void);
|
void identify_hypervisor(void);
|
||||||
void initializecpu(void);
|
void initializecpu(void);
|
||||||
void initializecpucache(void);
|
void initializecpucache(void);
|
||||||
|
@ -1467,6 +1467,19 @@ identify_cpu2(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
identify_cpu_fixup_bsp(void)
|
||||||
|
{
|
||||||
|
u_int regs[4];
|
||||||
|
|
||||||
|
cpu_vendor_id = find_cpu_vendor_id();
|
||||||
|
|
||||||
|
if (fix_cpuid()) {
|
||||||
|
do_cpuid(0, regs);
|
||||||
|
cpu_high = regs[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Final stage of CPU identification.
|
* Final stage of CPU identification.
|
||||||
*/
|
*/
|
||||||
@ -1478,12 +1491,7 @@ finishidentcpu(void)
|
|||||||
u_char ccr3;
|
u_char ccr3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cpu_vendor_id = find_cpu_vendor_id();
|
identify_cpu_fixup_bsp();
|
||||||
|
|
||||||
if (fix_cpuid()) {
|
|
||||||
do_cpuid(0, regs);
|
|
||||||
cpu_high = regs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cpu_high >= 5 && (cpu_feature2 & CPUID2_MON) != 0) {
|
if (cpu_high >= 5 && (cpu_feature2 & CPUID2_MON) != 0) {
|
||||||
do_cpuid(5, regs);
|
do_cpuid(5, regs);
|
||||||
|
Loading…
Reference in New Issue
Block a user