Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Kernel-based Virtual Machine driver for Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Copyright 2016 Red Hat, Inc. and/or its affiliates.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/kvm_host.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/debugfs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include "lapic.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) static int vcpu_get_timer_advance_ns(void *data, u64 *val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	*val = vcpu->arch.apic->lapic_timer.timer_advance_ns;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) DEFINE_SIMPLE_ATTRIBUTE(vcpu_timer_advance_ns_fops, vcpu_get_timer_advance_ns, NULL, "%llu\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) static int vcpu_get_tsc_offset(void *data, u64 *val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	*val = vcpu->arch.tsc_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) DEFINE_SIMPLE_ATTRIBUTE(vcpu_tsc_offset_fops, vcpu_get_tsc_offset, NULL, "%lld\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) static int vcpu_get_tsc_scaling_ratio(void *data, u64 *val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	struct kvm_vcpu *vcpu = (struct kvm_vcpu *) data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	*val = vcpu->arch.tsc_scaling_ratio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) DEFINE_SIMPLE_ATTRIBUTE(vcpu_tsc_scaling_fops, vcpu_get_tsc_scaling_ratio, NULL, "%llu\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) static int vcpu_get_tsc_scaling_frac_bits(void *data, u64 *val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	*val = kvm_tsc_scaling_ratio_frac_bits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) DEFINE_SIMPLE_ATTRIBUTE(vcpu_tsc_scaling_frac_fops, vcpu_get_tsc_scaling_frac_bits, NULL, "%llu\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) void kvm_arch_create_vcpu_debugfs(struct kvm_vcpu *vcpu, struct dentry *debugfs_dentry)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	debugfs_create_file("tsc-offset", 0444, debugfs_dentry, vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 			    &vcpu_tsc_offset_fops);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	if (lapic_in_kernel(vcpu))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 		debugfs_create_file("lapic_timer_advance_ns", 0444,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 				    debugfs_dentry, vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 				    &vcpu_timer_advance_ns_fops);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	if (kvm_has_tsc_control) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 		debugfs_create_file("tsc-scaling-ratio", 0444,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 				    debugfs_dentry, vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 				    &vcpu_tsc_scaling_fops);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 		debugfs_create_file("tsc-scaling-ratio-frac-bits", 0444,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 				    debugfs_dentry, vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 				    &vcpu_tsc_scaling_frac_fops);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) }