diff options
author | Tony Krowiak <akrowiak@linux.ibm.com> | 2023-01-18 23:31:09 +0300 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2023-01-22 20:42:36 +0300 |
commit | 5a42b348adf9fbdd24166351046fc9fe317d1d0f (patch) | |
tree | 15379e4f9064cce02d19056c447b1c4ffdc285d1 /drivers | |
parent | 3ba41768105c70faa1e1677c173a9eedc31c5094 (diff) | |
download | linux-5a42b348adf9fbdd24166351046fc9fe317d1d0f.tar.xz |
s390/vfio_ap: verify ZAPQ completion after return of response code zero
Verification that the asynchronous ZAPQ function has completed only needs
to be done when the response code indicates the function was successfully
initiated; so, let's call the apq_reset_check function immediately after
the response code zero is returned from the ZAPQ.
Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
Reviewed-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
Link: https://lore.kernel.org/r/20230118203111.529766-5-akrowiak@linux.ibm.com
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/s390/crypto/vfio_ap_ops.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c index bc9a814e6508..6ed9fe77793e 100644 --- a/drivers/s390/crypto/vfio_ap_ops.c +++ b/drivers/s390/crypto/vfio_ap_ops.c @@ -1656,6 +1656,9 @@ retry_zapq: switch (status.response_code) { case AP_RESPONSE_NORMAL: ret = 0; + /* if the reset has not completed, wait for it to take effect */ + if (!status.queue_empty || status.irq_enabled) + ret = apq_reset_check(q); break; case AP_RESPONSE_RESET_IN_PROGRESS: /* @@ -1685,10 +1688,6 @@ retry_zapq: return -EIO; } - /* wait for the reset to take effect */ - if (!(status.queue_empty && !status.irq_enabled)) - ret = apq_reset_check(q); - free_resources: vfio_ap_free_aqic_resources(q); |