lkml.org 
[lkml]   [2022]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 5/7] s390/vfio_ap: fix handling of error response codes
On 2022-12-13 16:44, Tony Krowiak wrote:
> Some response codes returned from the queue reset function are not
> being
> handled correctly; this patch fixes them:
>
> 1. Response code 3, AP queue deconfigured: Deconfiguring an AP adapter
> resets all of its queues, so this is handled by indicating the reset
> verification completed successfully.
>
> 2. For all response codes other than 0 (normal reset completion), 2
> (queue reset in progress) and 3 (AP deconfigured), the -EIO error
> will
> be returned from the vfio_ap_mdev_reset_queue() function. In all
> cases,
> all fields of the status word other than the response code will be
> set to zero, so it makes no sense to check status bits.
>
> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
> ---
> drivers/s390/crypto/vfio_ap_ops.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/s390/crypto/vfio_ap_ops.c
> b/drivers/s390/crypto/vfio_ap_ops.c
> index c0cf5050be59..dbf681715a6d 100644
> --- a/drivers/s390/crypto/vfio_ap_ops.c
> +++ b/drivers/s390/crypto/vfio_ap_ops.c
> @@ -1659,17 +1659,15 @@ static int vfio_ap_mdev_reset_queue(struct
> vfio_ap_queue *q)
> if (ret)
> break;
> goto retry_zapq;
> - case AP_RESPONSE_Q_NOT_AVAIL:
> case AP_RESPONSE_DECONFIGURED:
> - case AP_RESPONSE_CHECKSTOPPED:
> - WARN_ONCE(status.irq_enabled,
> - "PQAP/ZAPQ for %02x.%04x failed with rc=%u while IRQ enabled",
> - AP_QID_CARD(q->apqn), AP_QID_QUEUE(q->apqn),
> - status.response_code);
> - ret = -EBUSY;
> - goto free_resources;
> + /*
> + * When an AP adapter is deconfigured, the associated
> + * queues are reset, so let's return a value indicating the reset
> + * completed successfully.
> + */
> + ret = 0;
> + break;
> default:
> - /* things are really broken, give up */
> WARN(true,
> "PQAP/ZAPQ for %02x.%04x failed with invalid rc=%u\n",
> AP_QID_CARD(q->apqn), AP_QID_QUEUE(q->apqn),
> @@ -1677,7 +1675,6 @@ static int vfio_ap_mdev_reset_queue(struct
> vfio_ap_queue *q)
> return -EIO;
> }
>
> -free_resources:
> vfio_ap_free_aqic_resources(q);
>
> return ret;

Reviewed-by: Harald Freudenberger <freude@linux.ibm.com>

\
 
 \ /
  Last update: 2022-12-15 11:57    [W:0.192 / U:0.596 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site