From 1fbe7778c9843930ce3dadb35804d56e1f782479 Mon Sep 17 00:00:00 2001 From: Vivian Wang Date: Thu, 4 Aug 2022 22:32:28 +0800 Subject: lib: sbi_trap: Save mstatus[h].GVA in trap->gva The machine mode GVA field is available if the hypervisor extension is implemented, and indicates if mtval is a guest virtual address. Add a gva field to sbi_trap_info for this, and in __sbi_expected_trap_hext, save mstatus[h].GVA to it, so that gva indicates if tval is a guest virtual address. If the hypervisor extension is not implemented, always set gva to 0. Signed-off-by: Vivian Wang Reviewed-by: Andrew Jones Reviewed-by: Anup Patel --- include/sbi/sbi_trap.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'include/sbi') diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index d205056..fe3640a 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -95,8 +95,10 @@ #define SBI_TRAP_INFO_tval2 3 /** Index of tinst member in sbi_trap_info */ #define SBI_TRAP_INFO_tinst 4 +/** Index of gva member in sbi_trap_info */ +#define SBI_TRAP_INFO_gva 5 /** Last member index in sbi_trap_info */ -#define SBI_TRAP_INFO_last 5 +#define SBI_TRAP_INFO_last 6 /* clang-format on */ @@ -200,6 +202,8 @@ struct sbi_trap_info { unsigned long tval2; /** tinst Trap instruction */ unsigned long tinst; + /** gva Guest virtual address in tval flag */ + unsigned long gva; }; int sbi_trap_redirect(struct sbi_trap_regs *regs, -- cgit v1.2.3