This source file includes following definitions.
- kvm_is_in_guest
- kvm_is_user_mode
- kvm_get_guest_ip
- kvm_perf_init
- kvm_perf_teardown
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 #include <linux/perf_event.h>
  10 #include <linux/kvm_host.h>
  11 
  12 #include <asm/kvm_emulate.h>
  13 
  14 static int kvm_is_in_guest(void)
  15 {
  16         return kvm_arm_get_running_vcpu() != NULL;
  17 }
  18 
  19 static int kvm_is_user_mode(void)
  20 {
  21         struct kvm_vcpu *vcpu;
  22 
  23         vcpu = kvm_arm_get_running_vcpu();
  24 
  25         if (vcpu)
  26                 return !vcpu_mode_priv(vcpu);
  27 
  28         return 0;
  29 }
  30 
  31 static unsigned long kvm_get_guest_ip(void)
  32 {
  33         struct kvm_vcpu *vcpu;
  34 
  35         vcpu = kvm_arm_get_running_vcpu();
  36 
  37         if (vcpu)
  38                 return *vcpu_pc(vcpu);
  39 
  40         return 0;
  41 }
  42 
  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,
  47 };
  48 
  49 int kvm_perf_init(void)
  50 {
  51         return perf_register_guest_info_callbacks(&kvm_guest_cbs);
  52 }
  53 
  54 int kvm_perf_teardown(void)
  55 {
  56         return perf_unregister_guest_info_callbacks(&kvm_guest_cbs);
  57 }