Commit 86b9cab8 authored by gongchangsui's avatar gongchangsui
Browse files

VirtCCA: an interface to retrieve the TMI version is added

virtcca inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IBQSQW



--------------------------------

VirtCCA Feature:
an interface to retrieve the TMI version is added

Signed-off-by: default avatargongchangsui <gongchangsui@outlook.com>
parent 67773fea
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -807,6 +807,15 @@ int kvm_init_tmm(void)
	return 0;
}

u64 virtcca_get_tmi_version(void)
{
	u64 res = tmi_version();

	if (res == SMCCC_RET_NOT_SUPPORTED)
		return 0;
	return res;
}

static bool is_numa_ipa_range_valid(struct kvm_numa_info *numa_info)
{
	unsigned long i;
+5 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ static inline void enable_swiotlb_for_cvm_dev(struct device *dev, bool enable) {
#ifdef CONFIG_HISI_VIRTCCA_HOST

bool is_virtcca_cvm_enable(void);
u64 virtcca_get_tmi_version(void);

#else

@@ -37,6 +38,10 @@ static inline bool is_virtcca_cvm_enable(void)
	return 0;
}

static inline u64 virtcca_get_tmi_version(void)
{
	return 0;
}
#endif

#ifdef CONFIG_HISI_VIRTCCA_CODA
+3 −0
Original line number Diff line number Diff line
@@ -2436,4 +2436,7 @@ struct kvm_csv3_handle_memory {
	__u32 opcode;
};

/* get tmi version */
#define KVM_GET_TMI_VERSION	_IOR(KVMIO, 0xd2, u64)

#endif /* __LINUX_KVM_H */
+12 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@
#include <trace/events/kvm.h>

#include <linux/kvm_dirty_ring.h>

#include <linux/virtcca_cvm_domain.h>

/* Worst case buffer size needed for holding an integer. */
#define ITOA_MAX_LEN 12
@@ -5158,6 +5158,17 @@ static long kvm_dev_ioctl(struct file *filp,
			goto out;
		r = KVM_API_VERSION;
		break;
#ifdef CONFIG_HISI_VIRTCCA_HOST
	case KVM_GET_TMI_VERSION:{
		void __user *argp = (void __user *)arg;
		u64 res = virtcca_get_tmi_version();

		if (copy_to_user(argp, &res, sizeof(res)))
			goto out;
		r = 0;
		break;
	}
#endif
	case KVM_CREATE_VM:
		r = kvm_dev_ioctl_create_vm(arg);
		break;