public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] s390/vfio-ap: handle response code 01 on queue reset
@ 2023-11-29 14:35 Tony Krowiak
  2023-11-29 17:12 ` Christian Borntraeger
  2023-12-04 12:10 ` Halil Pasic
  0 siblings, 2 replies; 13+ messages in thread
From: Tony Krowiak @ 2023-11-29 14:35 UTC (permalink / raw)
  To: linux-s390, linux-kernel, kvm
  Cc: jjherne, pasic, alex.williamson, borntraeger, kwankhede, frankja,
	imbrenda, david

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.

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",
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2024-01-09 17:02 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox