This series introduces several improvements to the function that performs
AP queue resets:
* Breaks up reset processing into multiple smaller, more concise functions.
* Use TAPQ to verify completion of a reset in progress rather than mulitple
invocations of ZAPQ.
* Check TAPQ response codes when verifying successful completion of ZAPQ.
* Fix erroneous handling of some error response codes.
* Increase the maximum amount of time to wait for successful completion of
ZAPQ.
Change log v1 => v2:
-------------------
Remove patch 7/7 to restore original behavior since we don't know whether
interrupts are disabled when an unexpected response code is returned from
ZAPQ. (Halil)
Tony Krowiak (6):
s390/vfio-ap: verify reset complete in separate function
s390/vfio_ap: check TAPQ response code when waiting for queue reset
s390/vfio_ap: use TAPQ to verify reset in progress completes
s390/vfio_ap: verify ZAPQ completion after return of response code
zero
s390/vfio_ap: fix handling of error response codes
s390/vfio_ap: increase max wait time for reset verification
drivers/s390/crypto/vfio_ap_ops.c | 104 +++++++++++++++++++++---------
1 file changed, 72 insertions(+), 32 deletions(-)
--
2.31.1
Increase the maximum time to wait for verification of a queue reset
operation to 200ms.
Signed-off-by: Tony Krowiak <[email protected]>
Reviewed-by: Jason J. Herne <[email protected]>
Reviewed-by: Harald Freudenberger <[email protected]>
---
drivers/s390/crypto/vfio_ap_ops.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c
index 68be34362680..d665e1bc494a 100644
--- a/drivers/s390/crypto/vfio_ap_ops.c
+++ b/drivers/s390/crypto/vfio_ap_ops.c
@@ -30,6 +30,9 @@
#define AP_QUEUE_UNASSIGNED "unassigned"
#define AP_QUEUE_IN_USE "in use"
+#define MAX_RESET_CHECK_WAIT 200 /* Sleep max 200ms for reset check */
+#define AP_RESET_INTERVAL 20 /* Reset sleep interval (20ms) */
+
static int vfio_ap_mdev_reset_queues(struct ap_queue_table *qtable);
static struct vfio_ap_queue *vfio_ap_find_queue(int apqn);
static const struct vfio_device_ops vfio_ap_matrix_dev_ops;
@@ -1626,11 +1629,12 @@ static int apq_status_check(int apqn, struct ap_queue_status *status)
static int apq_reset_check(struct vfio_ap_queue *q)
{
- int iters = 2, ret;
+ int ret;
+ int iters = MAX_RESET_CHECK_WAIT / AP_RESET_INTERVAL;
struct ap_queue_status status;
- while (iters--) {
- msleep(20);
+ for (; iters > 0; iters--) {
+ msleep(AP_RESET_INTERVAL);
status = ap_tapq(q->apqn, NULL);
ret = apq_status_check(q->apqn, &status);
if (ret != -EBUSY)
--
2.31.1
Am 18.01.23 um 21:31 schrieb Tony Krowiak:
> This series introduces several improvements to the function that performs
> AP queue resets:
>
> * Breaks up reset processing into multiple smaller, more concise functions.
>
> * Use TAPQ to verify completion of a reset in progress rather than mulitple
> invocations of ZAPQ.
>
> * Check TAPQ response codes when verifying successful completion of ZAPQ.
>
> * Fix erroneous handling of some error response codes.
>
> * Increase the maximum amount of time to wait for successful completion of
> ZAPQ.
>
> Change log v1 => v2:
> -------------------
> Remove patch 7/7 to restore original behavior since we don't know whether
> interrupts are disabled when an unexpected response code is returned from
> ZAPQ. (Halil)
>
> Tony Krowiak (6):
> s390/vfio-ap: verify reset complete in separate function
> s390/vfio_ap: check TAPQ response code when waiting for queue reset
> s390/vfio_ap: use TAPQ to verify reset in progress completes
> s390/vfio_ap: verify ZAPQ completion after return of response code
> zero
> s390/vfio_ap: fix handling of error response codes
> s390/vfio_ap: increase max wait time for reset verification
>
> drivers/s390/crypto/vfio_ap_ops.c | 104 +++++++++++++++++++++---------
> 1 file changed, 72 insertions(+), 32 deletions(-)
>
Thanks applied and queued for CI and regression runs. Will likely go via s390 tree.
On 1/20/23 5:25 AM, Christian Borntraeger wrote:
> Am 18.01.23 um 21:31 schrieb Tony Krowiak:
>> This series introduces several improvements to the function that
>> performs
>> AP queue resets:
>>
>> * Breaks up reset processing into multiple smaller, more concise
>> functions.
>>
>> * Use TAPQ to verify completion of a reset in progress rather than
>> mulitple
>> invocations of ZAPQ.
>>
>> * Check TAPQ response codes when verifying successful completion of
>> ZAPQ.
>>
>> * Fix erroneous handling of some error response codes.
>>
>> * Increase the maximum amount of time to wait for successful
>> completion of
>> ZAPQ.
>> Change log v1 => v2:
>> -------------------
>> Remove patch 7/7 to restore original behavior since we don't know
>> whether
>> interrupts are disabled when an unexpected response code is returned
>> from
>> ZAPQ. (Halil)
>>
>> Tony Krowiak (6):
>> s390/vfio-ap: verify reset complete in separate function
>> s390/vfio_ap: check TAPQ response code when waiting for queue reset
>> s390/vfio_ap: use TAPQ to verify reset in progress completes
>> s390/vfio_ap: verify ZAPQ completion after return of response code
>> zero
>> s390/vfio_ap: fix handling of error response codes
>> s390/vfio_ap: increase max wait time for reset verification
>>
>> drivers/s390/crypto/vfio_ap_ops.c | 104 +++++++++++++++++++++---------
>> 1 file changed, 72 insertions(+), 32 deletions(-)
>>
>
> Thanks applied and queued for CI and regression runs. Will likely go
> via s390 tree.
Got it, thanks.