> On 3. Mar 2026, at 20:03, Pierrick Bouvier <[email protected]> 
> wrote:
> 
> On 2/23/26 3:39 PM, Mohamed Mediouni wrote:
>> For symmetry, save/restore the same set of registers even when not needed.
>> CR2 save/restore needed as page faults injected to the guest imply modifying 
>> CR2.
>> Signed-off-by: Mohamed Mediouni <[email protected]>
>> ---
>>  target/i386/hvf/hvf.c | 15 +++++++++++++++
>>  1 file changed, 15 insertions(+)
>> diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
>> index fb039ff7bd..a70f8461b0 100644
>> --- a/target/i386/hvf/hvf.c
>> +++ b/target/i386/hvf/hvf.c
>> @@ -477,7 +477,19 @@ static void hvf_load_crs(CPUState *cs)
>>        env->cr[0] = rvmcs(cpu->accel->fd, VMCS_GUEST_CR0);
>>      env->cr[3] = rvmcs(cpu->accel->fd, VMCS_GUEST_CR3);
>> +    env->cr[2] = rreg(cpu->accel->fd, HV_X86_CR2);
>>  }
>> +
>> +static void hvf_save_crs(CPUState *cs)
>> +{
>> +    X86CPU *x86_cpu = X86_CPU(cpu);
>> +    CPUX86State *env = &x86_cpu->env;
>> +
>> +    wvmcs(cpu->accel->fd, VMCS_GUEST_CR0, env->cr[0]);
>> +    wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, env->cr[3]);
>> +    wreg(cs->accel->fd, HV_X86_CR2, env->cr[2]);
>> +}
>> +
>>  void hvf_load_regs(CPUState *cs)
>>  {
>>      X86CPU *cpu = X86_CPU(cs);
>> @@ -794,6 +806,7 @@ static int hvf_handle_vmexit(CPUState *cpu)
>>              decode_instruction(env, &decode);
>>              exec_instruction(env, &decode);
>>              hvf_store_regs(cpu);
>> +            hvf_save_crs(cpu);
>>              break;
>>          }
>>          break;
>> @@ -837,6 +850,7 @@ static int hvf_handle_vmexit(CPUState *cpu)
>>          assert(ins_len == decode.len);
>>          exec_instruction(env, &decode);
>>          hvf_store_regs(cpu);
>> +        hvf_save_crs(cpu);
>>            break;
>>      }
>> @@ -942,6 +956,7 @@ static int hvf_handle_vmexit(CPUState *cpu)
>>          decode_instruction(env, &decode);
>>          exec_instruction(env, &decode);
>>          hvf_store_regs(cpu);
>> +        hvf_save_crs(cpu);
>>          break;
>>      }
>>      case EXIT_REASON_TPR: {
> 
> This patch doesn't compile.
> See a fixing patch I'll let you upstream.
> I'm a bit puzzled about how this has been tested though.
> 
> If you don't have access to a Mac intel based, you can use a github-runner 
> for free [1].
> 
Hello,

My bad, I had this tested locally but I I screwed up on a rebase…

Thank you,
-Mohamed
> [1] https://github.com/second-reality/github-runners
> 
> Regards,
> Pierrick<0001-target-i386-hvf-hvf.c-fix-compilation.patch>

Reply via email to