[6/7] s390/vfio_ap: increase max wait time for reset verification

Message ID 20221213154437.15480-7-akrowiak@linux.ibm.com
State New
Headers
Series improve AP queue reset processing |

Commit Message

Anthony Krowiak Dec. 13, 2022, 3:44 p.m. UTC
  Increase the maximum time to wait for verification of a queue reset
operation to 200ms.

Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
---
 drivers/s390/crypto/vfio_ap_ops.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
  

Comments

Harald Freudenberger Dec. 15, 2022, 10:58 a.m. UTC | #1
On 2022-12-13 16:44, Tony Krowiak wrote:
> Increase the maximum time to wait for verification of a queue reset
> operation to 200ms.
> 
> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
> ---
>  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 dbf681715a6d..e80c5a6b91be 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;
> @@ -1615,11 +1618,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)

Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>
  
Anthony Krowiak Dec. 20, 2022, 2:27 p.m. UTC | #2
On 12/15/22 5:58 AM, Harald Freudenberger wrote:
> On 2022-12-13 16:44, Tony Krowiak wrote:
>> Increase the maximum time to wait for verification of a queue reset
>> operation to 200ms.
>>
>> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
>> ---
>>  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 dbf681715a6d..e80c5a6b91be 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;
>> @@ -1615,11 +1618,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)
>
> Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>


Thanks for the review.
  

Patch

diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c
index dbf681715a6d..e80c5a6b91be 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;
@@ -1615,11 +1618,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)