s390x/kvm: Rework SIGP INITIAL CPU RESET handler
commitf7d3e466764e0258d0883d90edb7e98ad0b56e18
authorThomas Huth <thuth@linux.vnet.ibm.com>
Fri, 24 Jan 2014 15:39:54 +0000 (24 16:39 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 27 Feb 2014 08:51:26 +0000 (27 09:51 +0100)
tree9d4b1762c8780d0ae87aee8fa9ba33f4797eb713
parent49f5c9e98ab44700b58e23ca8c17e21850328da1
s390x/kvm: Rework SIGP INITIAL CPU RESET handler

The s390_cpu_initial_reset() function had two deficiencies: First, it
used an ioctl for the destination CPU, and this ioctl could block
nearly forever, as long as the destination CPU was running in the SIE
loop. Second, it also cleared the general purpose registers - something
it should not do according to the Principles of Operations.
Since we've already got another function for the initial CPU reset in
cpu.c, we can also use that function instead. And by using run_on_cpu()
for executing this code, we make sure that the destination CPU is
correctly kicked out of kernel mode now.

Suggested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
target-s390x/kvm.c