[PATCH] x86_64: clear_bss before set_intr_gate with early_idt_handler
[sfrench/cifs-2.6.git] / arch / x86_64 / kernel / head64.c
index f2461fde9f8f1b9826e4aaeb4b7451fb5df2646d..cc230b93cd1c7081ea4483ac2aa8ec8192eb972a 100644 (file)
@@ -45,31 +45,26 @@ static void __init copy_bootdata(char *real_mode_data)
        new_data = *(int *) (x86_boot_params + NEW_CL_POINTER);
        if (!new_data) {
                if (OLD_CL_MAGIC != * (u16 *) OLD_CL_MAGIC_ADDR) {
-                       printk("so old bootloader that it does not support commandline?!\n");
                        return;
                }
                new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET;
-               printk("old bootloader convention, maybe loadlin?\n");
        }
        command_line = (char *) ((u64)(new_data));
        memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
-       printk("Bootdata ok (command line is %s)\n", saved_command_line);       
 }
 
 void __init x86_64_start_kernel(char * real_mode_data)
 {
-       char *s;
        int i;
 
-       for (i = 0; i < 256; i++)
+       /* clear bss before set_intr_gate with early_idt_handler */
+       clear_bss();
+
+       for (i = 0; i < IDT_ENTRIES; i++)
                set_intr_gate(i, early_idt_handler);
        asm volatile("lidt %0" :: "m" (idt_descr));
-       clear_bss();
 
-       /*
-        * This must be called really, really early:
-        */
-       lockdep_init();
+       early_printk("Kernel alive\n");
 
        /*
         * switch to init_level4_pgt from boot_level4_pgt
@@ -85,19 +80,5 @@ void __init x86_64_start_kernel(char * real_mode_data)
 #ifdef CONFIG_SMP
        cpu_set(0, cpu_online_map);
 #endif
-       s = strstr(saved_command_line, "earlyprintk=");
-       if (s != NULL)
-               setup_early_printk(strchr(s, '=') + 1);
-#ifdef CONFIG_NUMA
-       s = strstr(saved_command_line, "numa=");
-       if (s != NULL)
-               numa_setup(s+5);
-#endif
-       if (strstr(saved_command_line, "disableapic"))
-               disable_apic = 1;
-       /* You need early console to see that */
-       if (__pa_symbol(&_end) >= KERNEL_TEXT_SIZE)
-               panic("Kernel too big for kernel mapping\n");
-
        start_kernel();
 }