From 889978d66c081550f434ee4e45ab69dfe45058f1 Mon Sep 17 00:00:00 2001 From: Zhi Jin Date: Wed, 1 Aug 2018 14:58:50 +0800 Subject: [PATCH 091/214] sos: vhm: add HC_SETUP_HV_NPK_LOG hypercall This hypercall is used to enable/disable/configure the hypervisor NPK log. Tracked-On: https://github.com/projectacrn/acrn-hypervisor/issues/1138 Signed-off-by: Zhi Jin Reviewed-by: Zhao Yakui --- drivers/vhm/vhm_hypercall.c | 5 +++++ include/linux/vhm/acrn_hv_defs.h | 18 ++++++++++++++++++ include/linux/vhm/vhm_hypercall.h | 1 + 3 files changed, 24 insertions(+) diff --git a/drivers/vhm/vhm_hypercall.c b/drivers/vhm/vhm_hypercall.c index 9a92d6888b90..d994835dd924 100644 --- a/drivers/vhm/vhm_hypercall.c +++ b/drivers/vhm/vhm_hypercall.c @@ -92,6 +92,11 @@ inline long hcall_setup_sbuf(unsigned long sbuf_head) return acrn_hypercall1(HC_SETUP_SBUF, sbuf_head); } +inline long hcall_setup_hv_npk_log(unsigned long hv_npk_log) +{ + return acrn_hypercall1(HC_SETUP_HV_NPK_LOG, hv_npk_log); +} + inline long hcall_set_sstate_data(unsigned long sx_data_addr) { return acrn_hypercall1(HC_PM_SET_SSTATE_DATA, sx_data_addr); diff --git a/include/linux/vhm/acrn_hv_defs.h b/include/linux/vhm/acrn_hv_defs.h index 223702c0330c..24ca7be2c2b9 100644 --- a/include/linux/vhm/acrn_hv_defs.h +++ b/include/linux/vhm/acrn_hv_defs.h @@ -108,6 +108,7 @@ /* DEBUG */ #define HC_ID_DBG_BASE 0x60UL #define HC_SETUP_SBUF _HC_ID(HC_ID, HC_ID_DBG_BASE + 0x00) +#define HC_SETUP_HV_NPK_LOG _HC_ID(HC_ID, HC_ID_DBG_BASE + 0x01) /* Power management */ #define HC_ID_PM_BASE 0x80UL @@ -188,6 +189,23 @@ struct sbuf_setup_param { uint64_t gpa; } __attribute__((aligned(8))); +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; +} __attribute__((aligned(8))); + struct vm_gpa2hpa { uint64_t gpa; /* IN: gpa to translation */ uint64_t hpa; /* OUT: -1 means invalid gpa */ diff --git a/include/linux/vhm/vhm_hypercall.h b/include/linux/vhm/vhm_hypercall.h index 0a3869b356b8..703b35bec053 100644 --- a/include/linux/vhm/vhm_hypercall.h +++ b/include/linux/vhm/vhm_hypercall.h @@ -146,6 +146,7 @@ inline long hcall_destroy_vm(unsigned long vmid); inline long hcall_reset_vm(unsigned long vmid); inline long hcall_query_vm_state(unsigned long vmid); inline long hcall_setup_sbuf(unsigned long sbuf_head); +inline long hcall_setup_hv_npk_log(unsigned long hv_npk_log); inline long hcall_set_sstate_data(unsigned long sx_data_addr); inline long hcall_get_cpu_state(unsigned long cmd, unsigned long state_pa); inline long hcall_set_memory_regions(unsigned long pa_regions); -- 2.19.1