Message ID | 20220202172138.411440-3-frank.heimes@canonical.com |
---|---|
State | New |
Headers | show |
Series | KVM: Improve SIGP architectural compliance (LP: 1959735) | expand |
On 02/02/2022 18:21, frank.heimes@canonical.com wrote: > From: Eric Farman <farman@linux.ibm.com> > > BugLink: https://bugs.launchpad.net/bugs/1959735 > > The Principles of Operations describe the various reasons that > each individual SIGP orders might be rejected, and the status > bit that are set for each condition. > > For example, for the Set Architecture order, it states: > > "If it is not true that all other CPUs in the configu- > ration are in the stopped or check-stop state, ... > bit 54 (incorrect state) ... is set to one." > > However, it also states: > > "... if the CZAM facility is installed, ... > bit 55 (invalid parameter) ... is set to one." > > Since the Configuration-z/Architecture-Architectural Mode (CZAM) > facility is unconditionally presented, there is no need to examine > each VCPU to determine if it is started/stopped. It can simply be > rejected outright with the Invalid Parameter bit. > > Fixes: b697e435aeee ("KVM: s390: Support Configuration z/Architecture Mode") > Signed-off-by: Eric Farman <farman@linux.ibm.com> > Reviewed-by: Thomas Huth <thuth@redhat.com> > Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > Reviewed-by: David Hildenbrand <david@redhat.com> > Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> > Link: https://lore.kernel.org/r/20211008203112.1979843-2-farman@linux.ibm.com > Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> > (cherry picked from commit 8eeba194a32e0f50329354a696baaa2e3d9accc5 linux-next) Both commits are now in mainline kernel, so drop "linux-next". > Signed-off-by: Frank Heimes <frank.heimes@canonical.com> > --- This has to be a NAK (ACK/Cmnt) is not enough anymore, because this commit is earlier in the Git history than "KVM: s390: Add a routine for setting userspace CPU state". Please re-order them to match mainline order. Best regards, Krzysztof
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c index 3dc921e853b6..8aaee2892ec3 100644 --- a/arch/s390/kvm/sigp.c +++ b/arch/s390/kvm/sigp.c @@ -151,22 +151,10 @@ static int __sigp_stop_and_store_status(struct kvm_vcpu *vcpu, static int __sigp_set_arch(struct kvm_vcpu *vcpu, u32 parameter, u64 *status_reg) { - unsigned int i; - struct kvm_vcpu *v; - bool all_stopped = true; - - kvm_for_each_vcpu(i, v, vcpu->kvm) { - if (v == vcpu) - continue; - if (!is_vcpu_stopped(v)) - all_stopped = false; - } - *status_reg &= 0xffffffff00000000UL; /* Reject set arch order, with czam we're always in z/Arch mode. */ - *status_reg |= (all_stopped ? SIGP_STATUS_INVALID_PARAMETER : - SIGP_STATUS_INCORRECT_STATE); + *status_reg |= SIGP_STATUS_INVALID_PARAMETER; return SIGP_CC_STATUS_STORED; }