]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
x86: Remove cpu_data parameter from interrupt handling path
authorJan Kiszka <jan.kiszka@siemens.com>
Sat, 23 Aug 2014 14:04:20 +0000 (16:04 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 7 Nov 2014 06:38:43 +0000 (07:38 +0100)
We can obtain a reference on demand now.

CC: Valentine Sinitsyn <valentine.sinitsyn@gmail.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/x86/apic.c
hypervisor/arch/x86/entry.S
hypervisor/arch/x86/include/asm/apic.h
hypervisor/arch/x86/include/asm/vcpu.h
hypervisor/arch/x86/svm.c
hypervisor/arch/x86/vmx.c

index 42fd921c95c0d7348def087a9f50f62c0a5d7bf3..6795c60a26bf00df47e2fee0533bf4eb0fdd1a2b 100644 (file)
@@ -202,8 +202,10 @@ void apic_send_irq(struct apic_irq_message irq_msg)
                          APIC_ICR_SH_NONE);
 }
 
-void apic_irq_handler(struct per_cpu *cpu_data)
+void apic_irq_handler(void)
 {
+       struct per_cpu *cpu_data = this_cpu_data();
+
        cpu_data->num_clear_apic_irqs++;
        if (cpu_data->num_clear_apic_irqs > 256)
                /*
index 747df7d1c9b033c56f60a9c88a93c956418b07d2..2b35c8206844847a01ddd6a3edfec063eac12811 100644 (file)
@@ -109,8 +109,6 @@ vector=10
        push %r10
        push %r11
 
-       mov %rsp,%rdi
-       and $PAGE_MASK,%rdi
        call \func
 
        pop %r11
index 747def13a6b2ed9a0d7f06e36270f97e7722e3ba..e638e53af8e2ecdcac3652f3d53757b13f6e0b52 100644 (file)
@@ -154,7 +154,7 @@ void apic_clear(struct per_cpu *cpu_data);
 void apic_send_nmi_ipi(struct per_cpu *target_data);
 void apic_send_irq(struct apic_irq_message irq_msg);
 
-void apic_irq_handler(struct per_cpu *cpu_data);
+void apic_irq_handler(void);
 
 bool apic_handle_icr_write(struct per_cpu *cpu_data, u32 lo_val, u32 hi_val);
 
index a1d4a2532f551781a2ece675757afa754ef88755..339922215b5cbafc9905596a28c22c52d6aa26fc 100644 (file)
@@ -69,7 +69,7 @@ void vcpu_handle_exit(struct registers *guest_regs, struct per_cpu *cpu_data);
 
 void vcpu_park(struct per_cpu *cpu_data);
 
-void vcpu_nmi_handler(struct per_cpu *cpu_data);
+void vcpu_nmi_handler(void);
 
 void vcpu_tlb_flush(void);
 
index b68aad0cb939f9bceab8824256b0f49d9186a374..4d1f979f414ce032a0570f3c13478085ae3ff0fc 100644 (file)
@@ -1094,7 +1094,7 @@ void vcpu_park(struct per_cpu *cpu_data)
        vcpu_tlb_flush();
 }
 
-void vcpu_nmi_handler(struct per_cpu *cpu_data)
+void vcpu_nmi_handler(void)
 {
 }
 
index deffe7c1c55fa405b69f1e3a224803951138155f..96afb666e7759208458af622dfb458a0c6e37bf5 100644 (file)
@@ -773,11 +773,11 @@ static void vcpu_reset(struct per_cpu *cpu_data, unsigned int sipi_vector)
        }
 }
 
-void vcpu_nmi_handler(struct per_cpu *cpu_data)
+void vcpu_nmi_handler(void)
 {
        u32 pin_based_ctrl;
 
-       if (cpu_data->vmx_state != VMCS_READY)
+       if (this_cpu_data()->vmx_state != VMCS_READY)
                return;
 
        pin_based_ctrl = vmcs_read32(PIN_BASED_VM_EXEC_CONTROL);