1 /* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
5 * Copyright (C) 2022 Michael Jeanson <mjeanson@efficios.com>
8 #ifndef _LTTNG_WRAPPER_KVM_X86_H
9 #define _LTTNG_WRAPPER_KVM_X86_H
11 #include <linux/kvm_host.h>
12 #include <lttng/kernel-version.h>
14 #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0)
16 #ifdef CONFIG_KALLSYMS_ALL
17 #include <linux/kallsyms.h>
18 #include <wrapper/kallsyms.h>
20 static struct kvm_x86_ops
*kvm_x86_ops_sym
;
23 void lttng_kvm_x86_get_exit_info(
24 struct kvm_vcpu
*vcpu
, u32
*reason
,
25 u64
*info1
, u64
*info2
,
26 u32
*exit_int_info
, u32
*exit_int_info_err_code
)
30 (void *) kallsyms_lookup_dataptr("kvm_x86_ops");
32 if (kvm_x86_ops_sym
) {
33 kvm_x86_ops_sym
->get_exit_info(vcpu
, reason
, info1
, info2
,
34 exit_int_info
, exit_int_info_err_code
);
36 printk_once(KERN_WARNING
"LTTng: kvm_x86_ops symbol lookup failed.\n");
41 u64
lttng_kvm_x86_get_segment_base(struct kvm_vcpu
*vcpu
, int seg
)
45 (void *) kallsyms_lookup_dataptr("kvm_x86_ops");
47 if (kvm_x86_ops_sym
) {
48 return kvm_x86_ops_sym
->get_segment_base(vcpu
, seg
);
50 printk_once(KERN_WARNING
"LTTng: kvm_x86_ops symbol lookup failed.\n");
56 * Canary function to check for 'kvm_x86_ops' at compile time.
58 * From 'arch/x86/include/asm/kvm_host.h':
60 * extern struct kvm_x86_ops kvm_x86_ops;;
63 unsigned int __canary__kvm_x86_ops(void)
65 return kvm_x86_ops
.vm_size
;
68 #endif /* CONFIG_KALLSYMS_ALL */
72 #endif /* _LTTNG_WRAPPER_KVM_X86_H */
This page took 0.033581 seconds and 4 git commands to generate.