public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Krowiak <akrowiak@linux.ibm.com>
To: Christian Borntraeger <borntraeger@linux.ibm.com>,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org
Cc: jjherne@linux.ibm.com, pasic@linux.ibm.com,
	alex.williamson@redhat.com, kwankhede@nvidia.com,
	frankja@linux.ibm.com, imbrenda@linux.ibm.com, david@redhat.com
Subject: Re: [PATCH] s390/vfio-ap: handle response code 01 on queue reset
Date: Mon, 4 Dec 2023 09:53:50 -0500	[thread overview]
Message-ID: <1f4720d7-93f1-4e38-a3ad-abaf99596e7c@linux.ibm.com> (raw)
In-Reply-To: <b43414ef-7aa4-9e5c-a706-41861f0d346c@linux.ibm.com>



On 11/29/23 12:12, Christian Borntraeger wrote:
> Am 29.11.23 um 15:35 schrieb Tony Krowiak:
>> In the current implementation, response code 01 (AP queue number not 
>> valid)
>> is handled as a default case along with other response codes returned 
>> from
>> a queue reset operation that are not handled specifically. Barring a bug,
>> response code 01 will occur only when a queue has been externally removed
>> from the host's AP configuration; nn this case, the queue must
>> be reset by the machine in order to avoid leaking crypto data if/when the
>> queue is returned to the host's configuration. The response code 01 case
>> will be handled specifically by logging a WARN message followed by 
>> cleaning
>> up the IRQ resources.
>>
> 
> To me it looks like this can be triggered by the LPAR admin, correct? So it
> is not desireable but possible.
> In that case I prefer to not use WARN, maybe use dev_warn or dev_err 
> instead.
> WARN can be a disruptive event if panic_on_warn is set.

Yes, it can be triggered by the LPAR admin. I can't use dev_warn here 
because we don't have a reference to any device, but I can use pr_warn 
if that suffices.

> 
> 
>> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
>> ---
>>   drivers/s390/crypto/vfio_ap_ops.c | 31 +++++++++++++++++++++++++++++++
>>   1 file changed, 31 insertions(+)
>>
>> diff --git a/drivers/s390/crypto/vfio_ap_ops.c 
>> b/drivers/s390/crypto/vfio_ap_ops.c
>> index 4db538a55192..91d6334574d8 100644
>> --- a/drivers/s390/crypto/vfio_ap_ops.c
>> +++ b/drivers/s390/crypto/vfio_ap_ops.c
>> @@ -1652,6 +1652,21 @@ static int apq_status_check(int apqn, struct 
>> ap_queue_status *status)
>>            * a value indicating a reset needs to be performed again.
>>            */
>>           return -EAGAIN;
>> +    case AP_RESPONSE_Q_NOT_AVAIL:
>> +        /*
>> +         * This response code indicates the queue is not available.
>> +         * Barring a bug, response code 01 will occur only when a queue
>> +         * has been externally removed from the host's AP configuration;
>> +         * in which case, the queue must be reset by the machine in
>> +         * order to avoid leaking crypto data if/when the queue is
>> +         * returned to the host's configuration. In this case, let's go
>> +         * ahead and log a warning message and return 0 so the AQIC
>> +         * resources get cleaned up by the caller.
>> +         */
>> +        WARN(true,
>> +             "Unable to reset queue %02x.%04x: not in host AP 
>> configuration\n",
>> +             AP_QID_CARD(apqn), AP_QID_QUEUE(apqn));
>> +            return 0;
>>       default:
>>           WARN(true,
>>                "failed to verify reset of queue %02x.%04x: TAPQ rc=%u\n",
>> @@ -1736,6 +1751,22 @@ static void vfio_ap_mdev_reset_queue(struct 
>> vfio_ap_queue *q)
>>           q->reset_status.response_code = 0;
>>           vfio_ap_free_aqic_resources(q);
>>           break;
>> +    case AP_RESPONSE_Q_NOT_AVAIL:
>> +        /*
>> +         * This response code indicates the queue is not available.
>> +         * Barring a bug, response code 01 will occur only when a queue
>> +         * has been externally removed from the host's AP configuration;
>> +         * in which case, the queue must be reset by the machine in
>> +         * order to avoid leaking crypto data if/when the queue is
>> +         * returned to the host's configuration. In this case, let's go
>> +         * ahead and log a warning message then clean up the AQIC
>> +         * resources.
>> +         */
>> +        WARN(true,
>> +             "Unable to reset queue %02x.%04x: not in host AP 
>> configuration\n",
>> +             AP_QID_CARD(q->apqn), AP_QID_QUEUE(q->apqn));
>> +        vfio_ap_free_aqic_resources(q);
>> +        break;
>>       default:
>>           WARN(true,
>>                "PQAP/ZAPQ for %02x.%04x failed with invalid rc=%u\n",

  reply	other threads:[~2023-12-04 14:54 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-29 14:35 [PATCH] s390/vfio-ap: handle response code 01 on queue reset Tony Krowiak
2023-11-29 17:12 ` Christian Borntraeger
2023-12-04 14:53   ` Tony Krowiak [this message]
2023-12-04 15:16     ` Christian Borntraeger
2023-12-04 16:15       ` Halil Pasic
2023-12-04 17:05         ` Tony Krowiak
2023-12-05  8:04         ` Harald Freudenberger
2023-12-06 17:17           ` Halil Pasic
2023-12-07 15:31             ` Anthony Krowiak
2023-12-04 12:10 ` Halil Pasic
2023-12-04 17:51   ` Tony Krowiak
2023-12-04 22:05     ` Halil Pasic
2024-01-09 17:02       ` Anthony Krowiak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1f4720d7-93f1-4e38-a3ad-abaf99596e7c@linux.ibm.com \
    --to=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jjherne@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pasic@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox