Commit e619ef91 authored by Ju Fu's avatar Ju Fu
Browse files

cvm: add secure memory query method

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



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

add secure memory query method

Signed-off-by: default avatarJu Fu <fuju1@huawei.com>
parent b82426dd
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -217,7 +217,8 @@ struct tmi_tec_run {
#define TMI_FNUM_VERSION			U(0x260)
#define TMI_FNUM_MEM_ALLOC			U(0x261)
#define TMI_FNUM_MEM_FREE			U(0x262)
#define TMI_FNUM_DATA_CREATE			U(0x263)
#define TMI_FNUM_MEM_INFO_SHOW			U(0x263)
#define TMI_FNUM_DATA_CREATE			U(0x264)
#define TMI_FNUM_DATA_DESTROY			U(0x265)
#define TMI_FNUM_CVM_ACTIVATE			U(0x267)
#define TMI_FNUM_CVM_CREATE			U(0x268)
@@ -256,6 +257,7 @@ struct tmi_tec_run {
#define TMI_TMM_FEATURES			TMI_FID(SMC_64, TMI_FNUM_FEATURES)
#define TMI_TMM_MEM_ALLOC			TMI_FID(SMC_64, TMI_FNUM_MEM_ALLOC)
#define TMI_TMM_MEM_FREE			TMI_FID(SMC_64, TMI_FNUM_MEM_FREE)
#define TMI_TMM_MEM_INFO_SHOW		TMI_FID(SMC_64, TMI_FNUM_MEM_INFO_SHOW)
#define TMI_TMM_TTT_MAP_RANGE			TMI_FID(SMC_64, TMI_FNUM_TTT_MAP_RANGE)
#define TMI_TMM_TTT_UNMAP_RANGE		TMI_FID(SMC_64, TMI_FNUM_TTT_UNMAP_RANGE)

@@ -365,6 +367,7 @@ u64 tmi_mem_alloc(u64 rd, u64 numa_set, enum tmi_tmm_mem_type tmm_mem_type,
	enum tmi_tmm_map_size tmm_map_size);
u64 tmi_mem_free(u64 pa, u64 numa_set, enum tmi_tmm_mem_type tmm_mem_type,
	enum tmi_tmm_map_size tmm_map_size);
u64 tmi_mem_info_show(u64 mem_info_addr);

void kvm_cvm_vcpu_put(struct kvm_vcpu *vcpu);
int kvm_load_user_data(struct kvm *kvm, unsigned long arg);
+11 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
 */
#include <linux/arm-smccc.h>
#include <asm/kvm_tmi.h>
#include <asm/memory.h>

u64 tmi_version(void)
{
@@ -151,6 +152,16 @@ u64 tmi_mem_free(u64 pa, u64 numa_set, enum tmi_tmm_mem_type tmm_mem_type,
	return res.a1;
}

u64 tmi_mem_info_show(u64 mem_info_addr)
{
	struct arm_smccc_res res;
	u64 pa_addr = __pa(mem_info_addr);

	arm_smccc_1_1_smc(TMI_TMM_MEM_INFO_SHOW, pa_addr, &res);
	return res.a1;
}
EXPORT_SYMBOL_GPL(tmi_mem_info_show);

u64 tmi_ttt_map_range(u64 rd, u64 map_addr, u64 size, u64 cur_node, u64 target_node)
{
	struct arm_smccc_res res;