On 7/13/22 10:34, Janosch Frank wrote:
[...]
+/**
+ * kvm_s390_update_topology_change_report - update CPU topology
change report
+ * @kvm: guest KVM description
+ * @val: set or clear the MTCR bit
+ *
+ * Updates the Multiprocessor Topology-Change-Report bit to signal
+ * the guest with a topology change.
+ * This is only relevant if the topology facility is present.
+ *
+ * The SCA version, bsca or esca, doesn't matter as offset is the
same.
+ */
+static void kvm_s390_update_topology_change_report(struct kvm
*kvm, bool val)
+{
+ union sca_utility new, old;
+ struct bsca_block *sca;
+
+ read_lock(&kvm->arch.sca_lock);
+ do {
+ sca = kvm->arch.sca;
I find this assignment being in the loop unintuitive, but it should
not make a difference.
The price would be an ugly cast.
I don't get what you mean. Nothing about the types changes if you
move it before the loop.
Yes right, did wrong understand.
It is better before.
With the assignment moved one line up:
Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
Thanks
+ old = READ_ONCE(sca->utility);
+ new = old;
+ new.mtcr = val;
+ } while (cmpxchg(&sca->utility.val, old.val, new.val) !=
old.val);
+ read_unlock(&kvm->arch.sca_lock);
+}
+
[...]
--
Pierre Morel
IBM Lab Boeblingen