qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 2/2] target/s390x/kvm: Simplify the GPRs, ACRs, CRs and pr


From: Christian Borntraeger
Subject: Re: [PATCH v2 2/2] target/s390x/kvm: Simplify the GPRs, ACRs, CRs and prefix synchronization code
Date: Tue, 10 Oct 2023 13:41:34 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1



Am 09.10.23 um 19:07 schrieb Thomas Huth:
[...]

@@ -483,20 +482,14 @@ int kvm_arch_put_registers(CPUState *cs, int level)
      cs->kvm_run->psw_addr = env->psw.addr;
      cs->kvm_run->psw_mask = env->psw.mask;
- if (can_sync_regs(cs, KVM_SYNC_GPRS)) {
-        for (i = 0; i < 16; i++) {
-            cs->kvm_run->s.regs.gprs[i] = env->regs[i];
-            cs->kvm_run->kvm_dirty_regs |= KVM_SYNC_GPRS;
-        }
-    } else {
-        for (i = 0; i < 16; i++) {
-            regs.gprs[i] = env->regs[i];
-        }
-        r = kvm_vcpu_ioctl(cs, KVM_SET_REGS, &regs);
-        if (r < 0) {
-            return r;
-        }
-    }
+    g_assert((cs->kvm_run->kvm_valid_regs & KVM_SYNC_REQUIRED_BITS) ==
+             KVM_SYNC_REQUIRED_BITS);
+    cs->kvm_run->kvm_dirty_regs |= KVM_SYNC_REQUIRED_BITS;
+    memcpy(cs->kvm_run->s.regs.gprs, env->regs, 
sizeof(cs->kvm_run->s.regs.gprs));


+    memcpy(cs->kvm_run->s.regs.acrs, env->aregs, 
sizeof(cs->kvm_run->s.regs.acrs));
+    memcpy(cs->kvm_run->s.regs.crs, env->cregs, 
sizeof(cs->kvm_run->s.regs.crs));
+
+    cs->kvm_run->s.regs.prefix = env->psa;

These 3 have only been saved for level> KVM_PUT_RUNTIME_STATE. By moving the 
memcpy
into this position you would always write them. Probably ok but a change in
behaviour. Was this intentional?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]