mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-16 00:16:12 +00:00
hv: add a hypercall for the hypervisor NPK log
The hypercall HC_SETUP_HV_NPK_LOG is added to enable/disable/configure the hypervisor NPK log. Signed-off-by: Zhi Jin <zhi.jin@intel.com> Signed-off-by: Zhonghua Sun <zhonghua.sun@intel.com> Reviewed-by: CHEN Gang <gang.c.chen@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
f4eef9710d
commit
dcae438306
@ -159,6 +159,10 @@ int vmcall_vmexit_handler(struct vcpu *vcpu)
|
||||
case HC_SETUP_SBUF:
|
||||
ret = hcall_setup_sbuf(vm, param1);
|
||||
break;
|
||||
|
||||
case HC_SETUP_HV_NPK_LOG:
|
||||
ret = hcall_setup_hv_npk_log(vm, param1);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case HC_WORLD_SWITCH:
|
||||
|
@ -821,6 +821,34 @@ int32_t hcall_setup_sbuf(__unused struct vm *vm, __unused uint64_t param)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HV_DEBUG
|
||||
int32_t hcall_setup_hv_npk_log(struct vm *vm, uint64_t param)
|
||||
{
|
||||
struct hv_npk_log_param npk_param;
|
||||
|
||||
memset((void *)&npk_param, 0, sizeof(npk_param));
|
||||
|
||||
if (copy_from_gpa(vm, &npk_param, param, sizeof(npk_param)) != 0) {
|
||||
pr_err("%s: Unable copy param from vm\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
npk_log_setup(&npk_param);
|
||||
|
||||
if (copy_to_gpa(vm, &npk_param, param, sizeof(npk_param)) != 0) {
|
||||
pr_err("%s: Unable copy param to vm\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int32_t hcall_setup_hv_npk_log(__unused struct vm *vm, __unused uint64_t param)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
int32_t hcall_get_cpu_pm_state(struct vm *vm, uint64_t cmd, uint64_t param)
|
||||
{
|
||||
uint16_t target_vm_id;
|
||||
|
@ -343,6 +343,17 @@ int32_t hcall_reset_ptdev_intr_info(struct vm *vm, uint16_t vmid,
|
||||
*/
|
||||
int32_t hcall_setup_sbuf(struct vm *vm, uint64_t param);
|
||||
|
||||
/**
|
||||
* @brief Setup the hypervisor NPK log.
|
||||
*
|
||||
* @param vm Pointer to VM data structure
|
||||
* @param param guest physical address. This gpa points to
|
||||
* struct hv_npk_log_param
|
||||
*
|
||||
* @return 0 on success, non-zero on error.
|
||||
*/
|
||||
int32_t hcall_setup_hv_npk_log(struct vm *vm, uint64_t param);
|
||||
|
||||
/**
|
||||
* @brief Get VCPU Power state.
|
||||
*
|
||||
|
12
hypervisor/include/debug/npk_log.h
Normal file
12
hypervisor/include/debug/npk_log.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (C) 2018 Intel Corporation.
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef NPK_LOG_H
|
||||
#define NPK_LOG_H
|
||||
|
||||
static inline void npk_log_setup(__unused struct hv_npk_log_param *param)
|
||||
{}
|
||||
|
||||
#endif /* NPK_LOG_H */
|
@ -13,5 +13,6 @@
|
||||
#include <dump.h>
|
||||
#include <trace.h>
|
||||
#include <sbuf.h>
|
||||
#include <npk_log.h>
|
||||
|
||||
#endif /* HV_DEBUG_H */
|
||||
|
@ -67,6 +67,7 @@
|
||||
/* DEBUG */
|
||||
#define HC_ID_DBG_BASE 0x60UL
|
||||
#define HC_SETUP_SBUF BASE_HC_ID(HC_ID, HC_ID_DBG_BASE + 0x00UL)
|
||||
#define HC_SETUP_HV_NPK_LOG BASE_HC_ID(HC_ID, HC_ID_DBG_BASE + 0x01UL)
|
||||
|
||||
/* Trusty */
|
||||
#define HC_ID_TRUSTY_BASE 0x70UL
|
||||
@ -186,6 +187,28 @@ struct sbuf_setup_param {
|
||||
uint64_t gpa;
|
||||
} __aligned(8);
|
||||
|
||||
/**
|
||||
* @brief Info to setup the hypervisor NPK log
|
||||
*
|
||||
* the parameter for HC_SETUP_HV_NPK_LOG hypercall
|
||||
*/
|
||||
struct hv_npk_log_param {
|
||||
/** the setup command for the hypervisor NPK log */
|
||||
uint16_t cmd;
|
||||
|
||||
/** the setup result for the hypervisor NPK log */
|
||||
uint16_t res;
|
||||
|
||||
/** the loglevel for the hypervisor NPK log */
|
||||
uint16_t loglevel;
|
||||
|
||||
/** Reserved */
|
||||
uint16_t reserved;
|
||||
|
||||
/** the MMIO address for the hypervisor NPK log */
|
||||
uint64_t mmio_addr;
|
||||
} __aligned(8);
|
||||
|
||||
/**
|
||||
* Gpa to hpa translation parameter, used for HC_VM_GPA2HPA hypercall
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user