Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[cascardo/linux.git] / arch / i386 / kernel / efi.c
index 8f9c624..dd9e7fa 100644 (file)
@@ -69,13 +69,11 @@ static void efi_call_phys_prelog(void) __acquires(efi_rt_lock)
 {
        unsigned long cr4;
        unsigned long temp;
-       struct Xgt_desc_struct *cpu_gdt_descr;
+       struct Xgt_desc_struct gdt_descr;
 
        spin_lock(&efi_rt_lock);
        local_irq_save(efi_rt_eflags);
 
-       cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0);
-
        /*
         * If I don't have PSE, I should just duplicate two entries in page
         * directory. If I have PSE, I just need to duplicate one entry in
@@ -105,17 +103,19 @@ static void efi_call_phys_prelog(void) __acquires(efi_rt_lock)
         */
        local_flush_tlb();
 
-       cpu_gdt_descr->address = __pa(cpu_gdt_descr->address);
-       load_gdt(cpu_gdt_descr);
+       gdt_descr.address = __pa(get_cpu_gdt_table(0));
+       gdt_descr.size = GDT_SIZE - 1;
+       load_gdt(&gdt_descr);
 }
 
 static void efi_call_phys_epilog(void) __releases(efi_rt_lock)
 {
        unsigned long cr4;
-       struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0);
+       struct Xgt_desc_struct gdt_descr;
 
-       cpu_gdt_descr->address = (unsigned long)__va(cpu_gdt_descr->address);
-       load_gdt(cpu_gdt_descr);
+       gdt_descr.address = (unsigned long)get_cpu_gdt_table(0);
+       gdt_descr.size = GDT_SIZE - 1;
+       load_gdt(&gdt_descr);
 
        cr4 = read_cr4();