]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - arch/x86/kernel/vmi_32.c
x86: change write_idt_entry signature
[mirror_ubuntu-hirsute-kernel.git] / arch / x86 / kernel / vmi_32.c
index 4cfda7dbe90fec41e487e09fb5a680609f97a58e..a635b22de25f763e200ac729fa4848dfc8c85514 100644 (file)
@@ -62,6 +62,7 @@ static struct {
        void (*cpuid)(void /* non-c */);
        void (*_set_ldt)(u32 selector);
        void (*set_tr)(u32 selector);
+       void (*write_idt_entry)(struct desc_struct *, int, u32, u32);
        void (*set_kernel_stack)(u32 selector, u32 sp0);
        void (*allocate_page)(u32, u32, u32, u32, u32);
        void (*release_page)(u32, u32);
@@ -214,6 +215,12 @@ static void vmi_set_tr(void)
        vmi_ops.set_tr(GDT_ENTRY_TSS*sizeof(struct desc_struct));
 }
 
+static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g)
+{
+       u32 *idt_entry = (u32 *)g;
+       vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[2]);
+}
+
 static void vmi_load_sp0(struct tss_struct *tss,
                                   struct thread_struct *thread)
 {
@@ -792,7 +799,8 @@ static inline int __init activate_vmi(void)
        pv_cpu_ops.load_tls = vmi_load_tls;
        para_fill(pv_cpu_ops.write_ldt_entry, WriteLDTEntry);
        para_fill(pv_cpu_ops.write_gdt_entry, WriteGDTEntry);
-       para_fill(pv_cpu_ops.write_idt_entry, WriteIDTEntry);
+       para_wrap(pv_cpu_ops.write_idt_entry, vmi_write_idt_entry,
+                 write_idt_entry, WriteIDTEntry);
        para_wrap(pv_cpu_ops.load_sp0, vmi_load_sp0, set_kernel_stack, UpdateKernelStack);
        para_fill(pv_cpu_ops.set_iopl_mask, SetIOPLMask);
        para_fill(pv_cpu_ops.io_delay, IODelay);