OSDN Git Service

target/riscv: Ensure opcode is saved for all relevant instructions
authorAnup Patel <apatel@ventanamicro.com>
Fri, 20 Jan 2023 12:59:50 +0000 (18:29 +0530)
committerAlistair Francis <alistair.francis@wdc.com>
Mon, 6 Feb 2023 22:19:23 +0000 (08:19 +1000)
commitf008a2d218d17b9be998be0045a7a3c229a3376d
tree93a477d2cec2237b65b4f1ac4f730343f5e48025
parentae0edf2188b3e4346b3e72bb69c75e70869e0c7f
target/riscv: Ensure opcode is saved for all relevant instructions

We should call decode_save_opc() for all relevant instructions which
can potentially generate a virtual instruction fault or a guest page
fault because generating transformed instruction upon guest page fault
expects opcode to be available. Without this, hypervisor will see
transformed instruction as zero in htinst CSR for guest MMIO emulation
which makes MMIO emulation in hypervisor slow and also breaks nested
virtualization.

Fixes: a9814e3e08d2 ("target/riscv: Minimize the calls to decode_save_opc")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20230120125950.2246378-5-apatel@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
target/riscv/insn_trans/trans_rva.c.inc
target/riscv/insn_trans/trans_rvd.c.inc
target/riscv/insn_trans/trans_rvf.c.inc
target/riscv/insn_trans/trans_rvh.c.inc
target/riscv/insn_trans/trans_rvi.c.inc
target/riscv/insn_trans/trans_rvzfh.c.inc
target/riscv/insn_trans/trans_svinval.c.inc