]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
x86: Introduce vcpu_reset
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 2 Apr 2015 08:14:54 +0000 (10:14 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 10 Apr 2015 06:58:36 +0000 (08:58 +0200)
So far this just encapsulates the general purpose register reset, but
more will follow.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/x86/include/asm/vcpu.h
hypervisor/arch/x86/svm.c
hypervisor/arch/x86/vcpu.c
hypervisor/arch/x86/vmx.c

index 2224d7c49f7f367233f51631b2caeadea5e5045d..89cf4add98cc0095cbf25b8216555b6fc7a40f63 100644 (file)
@@ -114,4 +114,6 @@ bool vcpu_handle_pt_violation(struct registers *guest_regs,
 bool vcpu_handle_msr_read(struct registers *guest_regs);
 bool vcpu_handle_msr_write(struct registers *guest_regs);
 
+void vcpu_reset(struct registers *guest_regs);
+
 #endif
index e565c422fc273e36819414ba6461fca0b4649610..17e87efdac330193759ca5f1b15f198f50a93248 100644 (file)
@@ -987,7 +987,7 @@ void vcpu_handle_exit(struct registers *guest_regs, struct per_cpu *cpu_data)
                        printk("CPU %d received SIPI, vector %x\n",
                               cpu_data->cpu_id, sipi_vector);
                        svm_vcpu_reset(cpu_data, sipi_vector);
-                       memset(guest_regs, 0, sizeof(*guest_regs));
+                       vcpu_reset(guest_regs);
                }
                iommu_check_pending_faults(cpu_data);
                return;
index 28279b0aa6e3267166c8cbc8cb57a1ac7ebab5ca..27daec70ac374ef18d005797f69467340b0bbd7f 100644 (file)
@@ -266,3 +266,8 @@ bool vcpu_handle_msr_write(struct registers *guest_regs)
        vcpu_skip_emulated_instruction(X86_INST_LEN_WRMSR);
        return true;
 }
+
+void vcpu_reset(struct registers *guest_regs)
+{
+       memset(guest_regs, 0, sizeof(*guest_regs));
+}
index f10372518532ece6df0f3739e01388ac4ddfb6f4..b4f58d387f496bc07b39d4bac324ba9edb4345cd 100644 (file)
@@ -1049,7 +1049,7 @@ void vcpu_handle_exit(struct registers *guest_regs, struct per_cpu *cpu_data)
                        printk("CPU %d received SIPI, vector %x\n",
                               cpu_data->cpu_id, sipi_vector);
                        vmx_vcpu_reset(sipi_vector);
-                       memset(guest_regs, 0, sizeof(*guest_regs));
+                       vcpu_reset(guest_regs);
                }
                iommu_check_pending_faults(cpu_data);
                return;