diff -urN --exclude-from=/home/davej/.exclude linux/arch/i386/kernel/apic.c linux-dj/arch/i386/kernel/apic.c --- linux/arch/i386/kernel/apic.c Fri Nov 9 22:12:55 2001 +++ linux-dj/arch/i386/kernel/apic.c Wed Dec 5 22:45:01 2001 @@ -575,10 +575,6 @@ static int __init detect_init_APIC (void) { u32 h, l, features; - extern void get_cpu_vendor(struct cpuinfo_x86*); - - /* Workaround for us being called before identify_cpu(). */ - get_cpu_vendor(&boot_cpu_data); switch (boot_cpu_data.x86_vendor) { case X86_VENDOR_AMD: diff -urN --exclude-from=/home/davej/.exclude linux/arch/i386/kernel/setup.c linux-dj/arch/i386/kernel/setup.c --- linux/arch/i386/kernel/setup.c Sun Dec 2 21:32:31 2001 +++ linux-dj/arch/i386/kernel/setup.c Wed Dec 5 22:44:23 2001 @@ -978,6 +978,8 @@ } #endif + identify_cpu(&boot_cpu_data); + /* * NOTE: before this point _nobody_ is allowed to allocate * any memory using the bootmem allocator. @@ -2882,53 +2884,7 @@ stts(); } -/* - * Early probe support logic for ppro memory erratum #50 - * - * This is called before we do cpu ident work - */ - -int __init ppro_with_ram_bug(void) -{ - char vendor_id[16]; - int ident; - /* Must have CPUID */ - if(!have_cpuid_p()) - return 0; - if(cpuid_eax(0)<1) - return 0; - - /* Must be Intel */ - cpuid(0, &ident, - (int *)&vendor_id[0], - (int *)&vendor_id[8], - (int *)&vendor_id[4]); - - if(memcmp(vendor_id, "IntelInside", 12)) - return 0; - - ident = cpuid_eax(1); - - /* Model 6 */ - - if(((ident>>8)&15)!=6) - return 0; - - /* Pentium Pro */ - - if(((ident>>4)&15)!=1) - return 0; - - if((ident&15) < 8) - { - printk(KERN_INFO "Pentium Pro with Errata#50 detected. Taking evasive action.\n"); - return 1; - } - printk(KERN_INFO "Your Pentium Pro seems ok.\n"); - return 0; -} - /* * Local Variables: * mode:c diff -urN --exclude-from=/home/davej/.exclude linux/arch/i386/mm/init.c linux-dj/arch/i386/mm/init.c --- linux/arch/i386/mm/init.c Sun Dec 2 21:32:31 2001 +++ linux-dj/arch/i386/mm/init.c Wed Dec 5 22:56:59 2001 @@ -449,15 +449,19 @@ void __init mem_init(void) { - extern int ppro_with_ram_bug(void); int codesize, reservedpages, datasize, initsize; int tmp; - int bad_ppro; + int bad_ppro = 0; if (!mem_map) BUG(); - - bad_ppro = ppro_with_ram_bug(); + + if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) { + if ((boot_cpu_data.x86==6 && boot_cpu_data.x86_model==1) && + (boot_cpu_data.x86_mask<8)) + printk(KERN_INFO "Pentium Pro with Errata#50 detected. Taking evasive action.\n"); + bad_ppro = 1; + } #ifdef CONFIG_HIGHMEM highmem_start_page = mem_map + highstart_pfn; diff -urN --exclude-from=/home/davej/.exclude linux/include/asm-i386/bugs.h linux-dj/include/asm-i386/bugs.h --- linux/include/asm-i386/bugs.h Wed Dec 5 16:10:34 2001 +++ linux-dj/include/asm-i386/bugs.h Wed Dec 5 21:43:19 2001 @@ -204,7 +204,6 @@ static void __init check_bugs(void) { - identify_cpu(&boot_cpu_data); #ifndef CONFIG_SMP printk("CPU: "); print_cpu_info(&boot_cpu_data);