]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
linux/x86: fix initial GDT setup
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 6 Dec 2007 15:59:52 +0000 (15:59 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 6 Dec 2007 15:59:52 +0000 (15:59 +0000)
cpu_gdt_init() can be static, can have its argument point to const,
and the number of descriptors should be calculated from one more than
the table's limit.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
arch/i386/kernel/cpu/common-xen.c
arch/x86_64/kernel/setup64-xen.c

index 10d7777092e03881c1b01069308bae5bae99602c..e509783d9d8a9d41ed1349fbbbb35605b8c97c0e 100644 (file)
@@ -590,7 +590,7 @@ void __init early_cpu_init(void)
 #endif
 }
 
-void __cpuinit cpu_gdt_init(struct Xgt_desc_struct *gdt_descr)
+static void __cpuinit cpu_gdt_init(const struct Xgt_desc_struct *gdt_descr)
 {
        unsigned long frames[16];
        unsigned long va;
@@ -603,7 +603,7 @@ void __cpuinit cpu_gdt_init(struct Xgt_desc_struct *gdt_descr)
                make_lowmem_page_readonly(
                        (void *)va, XENFEAT_writable_descriptor_tables);
        }
-       if (HYPERVISOR_set_gdt(frames, gdt_descr->size / 8))
+       if (HYPERVISOR_set_gdt(frames, (gdt_descr->size + 1) / 8))
                BUG();
 }
 
index 83041ab38bb800a7a1e4c612b8a3c5d59cfbc695..379f4fde8294009b17a461170e226b5df40759c5 100644 (file)
@@ -132,7 +132,7 @@ static void switch_pt(void)
        xen_new_user_pt(__pa_symbol(__user_pgd(init_level4_pgt)));
 }
 
-void __cpuinit cpu_gdt_init(struct desc_ptr *gdt_descr)
+static void __cpuinit cpu_gdt_init(const struct desc_ptr *gdt_descr)
 {
        unsigned long frames[16];
        unsigned long va;
@@ -145,7 +145,7 @@ void __cpuinit cpu_gdt_init(struct desc_ptr *gdt_descr)
                make_page_readonly(
                        (void *)va, XENFEAT_writable_descriptor_tables);
        }
-       if (HYPERVISOR_set_gdt(frames, gdt_descr->size /
+       if (HYPERVISOR_set_gdt(frames, (gdt_descr->size + 1) /
                                sizeof (struct desc_struct)))
                BUG();
 }
@@ -155,7 +155,7 @@ static void switch_pt(void)
        asm volatile("movq %0,%%cr3" :: "r" (__pa_symbol(&init_level4_pgt)));
 }
 
-void __init cpu_gdt_init(struct desc_ptr *gdt_descr)
+static void __cpuinit cpu_gdt_init(const struct desc_ptr *gdt_descr)
 {
        asm volatile("lgdt %0" :: "m" (*gdt_descr));
        asm volatile("lidt %0" :: "m" (idt_descr));