dm writecache: fix incorrect flush sequence when doing SSD mode commit
[linux/fpc-iii.git] / virt / kvm / arm / perf.c
blob918cdc3839ea52b93525d564d0ab7b5542a679e7
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3 * Based on the x86 implementation.
5 * Copyright (C) 2012 ARM Ltd.
6 * Author: Marc Zyngier <marc.zyngier@arm.com>
7 */
9 #include <linux/perf_event.h>
10 #include <linux/kvm_host.h>
12 #include <asm/kvm_emulate.h>
14 static int kvm_is_in_guest(void)
16 return kvm_arm_get_running_vcpu() != NULL;
19 static int kvm_is_user_mode(void)
21 struct kvm_vcpu *vcpu;
23 vcpu = kvm_arm_get_running_vcpu();
25 if (vcpu)
26 return !vcpu_mode_priv(vcpu);
28 return 0;
31 static unsigned long kvm_get_guest_ip(void)
33 struct kvm_vcpu *vcpu;
35 vcpu = kvm_arm_get_running_vcpu();
37 if (vcpu)
38 return *vcpu_pc(vcpu);
40 return 0;
43 static struct perf_guest_info_callbacks kvm_guest_cbs = {
44 .is_in_guest = kvm_is_in_guest,
45 .is_user_mode = kvm_is_user_mode,
46 .get_guest_ip = kvm_get_guest_ip,
49 int kvm_perf_init(void)
51 return perf_register_guest_info_callbacks(&kvm_guest_cbs);
54 int kvm_perf_teardown(void)
56 return perf_unregister_guest_info_callbacks(&kvm_guest_cbs);