Message ID | 20200528193758.51454-6-r.bolshakov@yadro.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | i386: hvf: Remove HVFX86EmulatorState | expand |
On 5/28/20 9:37 PM, Roman Bolshakov wrote: > There's no need to read VMCS twice, instruction length is already > available in ins_len. > > Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> > --- > target/i386/hvf/hvf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c > index 9ccdb7e7c7..8ff1d25521 100644 > --- a/target/i386/hvf/hvf.c > +++ b/target/i386/hvf/hvf.c > @@ -871,7 +871,7 @@ int hvf_vcpu_exec(CPUState *cpu) > } else { > simulate_wrmsr(cpu); > } > - RIP(env) += rvmcs(cpu->hvf_fd, VMCS_EXIT_INSTRUCTION_LENGTH); > + RIP(env) += ins_len; I'd feel safer if you change ins_len to uint64_t first. > store_regs(cpu); > break; > } >
On 04/06/20 08:39, Philippe Mathieu-Daudé wrote: >> simulate_wrmsr(cpu); >> } >> - RIP(env) += rvmcs(cpu->hvf_fd, VMCS_EXIT_INSTRUCTION_LENGTH); >> + RIP(env) += ins_len; > I'd feel safer if you change ins_len to uint64_t first. > Why? It will never be more than 15 (it's also a 32-bit field in the VMCS). Paolo
On 6/4/20 8:15 PM, Paolo Bonzini wrote: > On 04/06/20 08:39, Philippe Mathieu-Daudé wrote: >>> simulate_wrmsr(cpu); >>> } >>> - RIP(env) += rvmcs(cpu->hvf_fd, VMCS_EXIT_INSTRUCTION_LENGTH); >>> + RIP(env) += ins_len; >> I'd feel safer if you change ins_len to uint64_t first. >> > > Why? It will never be more than 15 (it's also a 32-bit field in the VMCS). Indeed, I am now seeing the comment in target/i386/hvf/vmcs.h:132 /* 32-bit read-only data fields */ #define VMCS_EXIT_INSTRUCTION_LENGTH 0x0000440C So: Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Thanks Paolo.
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 9ccdb7e7c7..8ff1d25521 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -871,7 +871,7 @@ int hvf_vcpu_exec(CPUState *cpu) } else { simulate_wrmsr(cpu); } - RIP(env) += rvmcs(cpu->hvf_fd, VMCS_EXIT_INSTRUCTION_LENGTH); + RIP(env) += ins_len; store_regs(cpu); break; }
There's no need to read VMCS twice, instruction length is already available in ins_len. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> --- target/i386/hvf/hvf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)