Commit 4ce1e1af37 for qemu.org

commit 4ce1e1af37c8ff76eecca043cf7fa825bbd5a430
Author: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Date:   Tue Sep 22 10:37:26 2026 +0200

    target/s390x: Access S390CpuState atomically

    Use qatomic_read/set() in the S390 CPU state accessors.
    This avoids non-atomic reads in s390_cpu_has_work().

    Reported-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
    Reviewed-by: Eric Farman <farman@linux.ibm.com>
    Message-Id: <20260923171116.31276-6-philmd@oss.qualcomm.com>

diff --git a/target/s390x/cpu-system.c b/target/s390x/cpu-system.c
index e15775875f..d963d9e940 100644
--- a/target/s390x/cpu-system.c
+++ b/target/s390x/cpu-system.c
@@ -276,7 +276,7 @@ void s390_cpu_set_state(S390CpuState cpu_state, S390CPU *cpu)
     if (kvm_enabled() && s390_cpu_get_state(cpu) != cpu_state) {
         kvm_s390_set_cpu_state(cpu, cpu_state);
     }
-    cpu->env.cpu_state = cpu_state;
+    qatomic_set(&cpu->env.cpu_state, cpu_state);
 }

 void s390_cmma_reset(void)
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index bf9f6ed1de..ef73b15218 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -855,7 +855,7 @@ static inline void s390_cpu_set_state(S390CpuState cpu_state, S390CPU *cpu)
 #endif /* CONFIG_USER_ONLY */
 static inline S390CpuState s390_cpu_get_state(const S390CPU *cpu)
 {
-    return cpu->env.cpu_state;
+    return qatomic_read(&cpu->env.cpu_state);
 }