2023-01-18 21:52:03

by Anthony Krowiak

[permalink] [raw]
Subject: [PATCH v2 0/6] improve AP queue reset processing

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


2023-01-18 22:28:47

by Anthony Krowiak

[permalink] [raw]
Subject: [PATCH v2 6/6] s390/vfio_ap: increase max wait time for reset verification

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

2023-01-20 10:29:17

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] improve AP queue reset processing

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.

2023-01-20 14:37:49

by Anthony Krowiak

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] improve AP queue reset processing


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.