diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-01-23 07:39:51 -0500 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-01-23 07:39:51 -0500 |
commit | 1c6007d59a20762052cc92c0a2889ff11030d23a (patch) | |
tree | 40bd72fe4e4d38a811312e5ae35bafd04c995d40 /arch/arm64/kvm/handle_exit.c | |
parent | c6156df9d32141e5f1abb43078c56f2e5a0cb294 (diff) | |
parent | 4b990589952f0e30aa860184ac6c76219a74632e (diff) |
Merge tag 'kvm-arm-for-3.20' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-next
KVM/ARM changes for v3.20 including GICv3 emulation, dirty page logging, added
trace symbols, and adding an explicit VGIC init device control IOCTL.
Conflicts:
arch/arm64/include/asm/kvm_arm.h
arch/arm64/kvm/handle_exit.c
Diffstat (limited to 'arch/arm64/kvm/handle_exit.c')
-rw-r--r-- | arch/arm64/kvm/handle_exit.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index 29b184a8f3f8..524fa25671fc 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c | |||
@@ -28,12 +28,18 @@ | |||
28 | #include <asm/kvm_mmu.h> | 28 | #include <asm/kvm_mmu.h> |
29 | #include <asm/kvm_psci.h> | 29 | #include <asm/kvm_psci.h> |
30 | 30 | ||
31 | #define CREATE_TRACE_POINTS | ||
32 | #include "trace.h" | ||
33 | |||
31 | typedef int (*exit_handle_fn)(struct kvm_vcpu *, struct kvm_run *); | 34 | typedef int (*exit_handle_fn)(struct kvm_vcpu *, struct kvm_run *); |
32 | 35 | ||
33 | static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) | 36 | static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) |
34 | { | 37 | { |
35 | int ret; | 38 | int ret; |
36 | 39 | ||
40 | trace_kvm_hvc_arm64(*vcpu_pc(vcpu), *vcpu_reg(vcpu, 0), | ||
41 | kvm_vcpu_hvc_get_imm(vcpu)); | ||
42 | |||
37 | ret = kvm_psci_call(vcpu); | 43 | ret = kvm_psci_call(vcpu); |
38 | if (ret < 0) { | 44 | if (ret < 0) { |
39 | kvm_inject_undefined(vcpu); | 45 | kvm_inject_undefined(vcpu); |
@@ -63,10 +69,13 @@ static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) | |||
63 | */ | 69 | */ |
64 | static int kvm_handle_wfx(struct kvm_vcpu *vcpu, struct kvm_run *run) | 70 | static int kvm_handle_wfx(struct kvm_vcpu *vcpu, struct kvm_run *run) |
65 | { | 71 | { |
66 | if (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WFx_ISS_WFE) | 72 | if (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WFx_ISS_WFE) { |
73 | trace_kvm_wfx_arm64(*vcpu_pc(vcpu), true); | ||
67 | kvm_vcpu_on_spin(vcpu); | 74 | kvm_vcpu_on_spin(vcpu); |
68 | else | 75 | } else { |
76 | trace_kvm_wfx_arm64(*vcpu_pc(vcpu), false); | ||
69 | kvm_vcpu_block(vcpu); | 77 | kvm_vcpu_block(vcpu); |
78 | } | ||
70 | 79 | ||
71 | kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); | 80 | kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); |
72 | 81 | ||