All of lore.kernel.org
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.ibm.com>
To: Cornelia Huck <cohuck@redhat.com>,
	Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, freude@de.ibm.com, schwidefsky@de.ibm.com,
	heiko.carstens@de.ibm.com, borntraeger@de.ibm.com,
	kwankhede@nvidia.com, bjsdjshi@linux.vnet.ibm.com,
	pbonzini@redhat.com, alex.williamson@redhat.com,
	pmorel@linux.vnet.ibm.com, alifm@linux.vnet.ibm.com,
	mjrosato@linux.vnet.ibm.com, jjherne@linux.vnet.ibm.com,
	thuth@redhat.com, pasic@linux.vnet.ibm.com, berrange@redhat.com,
	fiuczy@linux.vnet.ibm.com, buendgen@de.ibm.com,
	frankja@linux.ibm.com, Tony Krowiak <akrowiak@linux.ibm.com>
Subject: Re: [PATCH v10 13/26] s390: vfio-ap: zeroize the AP queues
Date: Mon, 24 Sep 2018 14:16:42 +0200	[thread overview]
Message-ID: <b2eae775-0917-8c71-4ecf-6ef921ac9b0b@linux.ibm.com> (raw)
In-Reply-To: <20180924133611.01fef50e.cohuck@redhat.com>



On 09/24/2018 01:36 PM, Cornelia Huck wrote:
> On Wed, 12 Sep 2018 15:43:03 -0400
> Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:
> 
>> From: Tony Krowiak <akrowiak@linux.ibm.com>
>>
>> Let's call PAPQ(ZAPQ) to zeroize a queue for each queue configured
>> for a mediated matrix device when it is released.
>>
>> Zeroizing a queue resets the queue, clears all pending
>> messages for the queue entries and disables adapter interruptions
>> associated with the queue.
>>
>> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
>> Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
>> Tested-by: Michael Mueller <mimu@linux.ibm.com>
>> Tested-by: Farhan Ali <alifm@linux.ibm.com>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ---
>>  drivers/s390/crypto/vfio_ap_ops.c |   44 +++++++++++++++++++++++++++++++++++++
>>  1 files changed, 44 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c
>> index f8b276a..48b1b78 100644
>> --- a/drivers/s390/crypto/vfio_ap_ops.c
>> +++ b/drivers/s390/crypto/vfio_ap_ops.c
>> @@ -829,6 +829,49 @@ static int vfio_ap_mdev_group_notifier(struct notifier_block *nb,
>>  	return NOTIFY_OK;
>>  }
>>  
>> +static int vfio_ap_mdev_reset_queue(unsigned int apid, unsigned int apqi,
>> +				    unsigned int retry)
>> +{
>> +	struct ap_queue_status status;
>> +
>> +	do {
>> +		status = ap_zapq(AP_MKQID(apid, apqi));
>> +		switch (status.response_code) {
>> +		case AP_RESPONSE_NORMAL:
>> +			return 0;
>> +		case AP_RESPONSE_RESET_IN_PROGRESS:
>> +		case AP_RESPONSE_BUSY:
>> +			msleep(20);
>> +			break;
>> +		default:
>> +			/* things are really broken, give up */
>> +			return -EIO;
>> +		}
>> +	} while (retry--);
>> +
>> +	return -EBUSY;
> 
> So, this function may either return 0, -EIO (things are really broken),
> or -EBUSY (still busy after multiple tries)...
> 
>> +}
>> +
>> +static int vfio_ap_mdev_reset_queues(struct mdev_device *mdev)
>> +{
>> +	int ret;
>> +	int rc = 0;
>> +	unsigned long apid, apqi;
>> +	struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
>> +
>> +	for_each_set_bit_inv(apid, matrix_mdev->matrix.apm,
>> +			     matrix_mdev->matrix.apm_max + 1) {
>> +		for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm,
>> +				     matrix_mdev->matrix.aqm_max + 1) {
>> +			ret = vfio_ap_mdev_reset_queue(apid, apqi, 1);
>> +			if (ret)
>> +				rc = ret;
> 
> ...and here, we return the last error of any of the resets. Two
> questions:
> 
> - Does it make sense to continue if we get -EIO? IOW, does "really
>   broken" only refer to a certain tuple and other tuples still can/need
>   to be reset?

I think it does make sense to continue, because IMHO "things are really
broken" is an overstatement (I mean the APQN invalid case). One could
argue would skipping the current card (adapter) be justified or not.

IMHO the current code is good enough for the first shot, and we can think
about fine-tuning it later.

> - Is the return code useful in any way, as we don't know which tuple it
>   refers to?
> 

Well, good question. It conveys that the operation can 'fail'. AFAIR -EBUSY
is mostly fine given what the architecture say if we are satisfied with just
reset. And the cases behind -EIO might actually be OK too in the same sense.
My guess is, that based on the return value client code can tell if we have
zeroize for all queues or basically just reset (like rapq). We could log that
to some debug facility or whatever -- I guess, but at the moment we don't care.

In the end I think the code is good enough as is, and if we want we can
improve on it later.

Regards,
Halil


>> +		}
>> +	}
>> +
>> +	return rc;
>> +}
>> +
>>  static int vfio_ap_mdev_open(struct mdev_device *mdev)
>>  {
>>  	struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
>> @@ -859,6 +902,7 @@ static void vfio_ap_mdev_release(struct mdev_device *mdev)
>>  	if (matrix_mdev->kvm)
>>  		kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
>>  
>> +	vfio_ap_mdev_reset_queues(mdev);
>>  	vfio_unregister_notifier(mdev_dev(mdev), VFIO_GROUP_NOTIFY,
>>  				 &matrix_mdev->group_notifier);
>>  	matrix_mdev->kvm = NULL;
> 


  reply	other threads:[~2018-09-24 12:16 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-12 19:42 [PATCH v10 00/26] guest dedicated crypto adapters Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 01/26] KVM: s390: vsie: simulate VCPU SIE entry/exit Tony Krowiak
2018-09-24 10:32   ` Christian Borntraeger
2018-09-24 16:53     ` Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 02/26] KVM: s390: introduce and use KVM_REQ_VSIE_RESTART Tony Krowiak
2018-09-24 10:49   ` Christian Borntraeger
2018-09-24 16:48     ` Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 03/26] KVM: s390: refactor crypto initialization Tony Krowiak
2018-09-21 23:18   ` Tony Krowiak
2018-09-24  8:35     ` David Hildenbrand
2018-09-24 10:34     ` Cornelia Huck
2018-09-12 19:42 ` [PATCH v10 04/26] s390: vfio-ap: base implementation of VFIO AP device driver Tony Krowiak
2018-09-20 15:31   ` Cornelia Huck
2018-09-20 15:53     ` Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 05/26] s390: vfio-ap: register matrix device with VFIO mdev framework Tony Krowiak
2018-09-20 15:50   ` Cornelia Huck
2018-09-20 20:35     ` Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 06/26] s390: vfio-ap: sysfs interfaces to configure adapters Tony Krowiak
2018-09-21  9:40   ` Cornelia Huck
2018-09-21  9:52     ` Harald Freudenberger
2018-09-21 14:07     ` Tony Krowiak
2018-09-12 19:42 ` [PATCH v10 07/26] s390: vfio-ap: sysfs interfaces to configure domains Tony Krowiak
2018-09-24 10:45   ` Cornelia Huck
2018-09-12 19:42 ` [PATCH v10 08/26] s390: vfio-ap: sysfs interfaces to configure control domains Tony Krowiak
2018-09-24 10:57   ` Cornelia Huck
2018-09-12 19:42 ` [PATCH v10 09/26] s390: vfio-ap: sysfs interface to view matrix mdev matrix Tony Krowiak
2018-09-24 10:59   ` Cornelia Huck
2018-09-12 19:43 ` [PATCH v10 10/26] KVM: s390: interfaces to clear CRYCB masks Tony Krowiak
2018-09-24 11:01   ` Cornelia Huck
2018-09-24 11:50     ` Halil Pasic
2018-09-24 12:01       ` Cornelia Huck
2018-09-24 15:33         ` Tony Krowiak
2018-09-24 14:49     ` Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 11/26] s390: vfio-ap: implement mediated device open callback Tony Krowiak
2018-09-18 17:00   ` Halil Pasic
2018-09-18 21:57     ` Tony Krowiak
2018-09-21 23:28   ` Tony Krowiak
2018-09-24  8:40     ` David Hildenbrand
2018-09-24 16:07       ` Tony Krowiak
2018-09-24 18:40         ` David Hildenbrand
2018-09-24 18:43           ` Tony Krowiak
2018-09-24 19:46           ` Tony Krowiak
2018-09-24 19:55             ` David Hildenbrand
2018-09-25 19:54               ` Tony Krowiak
2018-09-25 19:55                 ` David Hildenbrand
2018-09-12 19:43 ` [PATCH v10 12/26] s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl Tony Krowiak
2018-09-24 11:43   ` Cornelia Huck
2018-09-24 16:29     ` Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 13/26] s390: vfio-ap: zeroize the AP queues Tony Krowiak
2018-09-24 11:36   ` Cornelia Huck
2018-09-24 12:16     ` Halil Pasic [this message]
2018-09-24 12:32       ` Cornelia Huck
2018-09-24 13:22       ` Harald Freudenberger
2018-09-24 16:42         ` Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 14/26] s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl Tony Krowiak
2018-09-24 11:43   ` Cornelia Huck
2018-09-12 19:43 ` [PATCH v10 15/26] KVM: s390: Clear Crypto Control Block when using vSIE Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 16/26] KVM: s390: vsie: Do the CRYCB validation first Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 17/26] KVM: s390: vsie: Make use of CRYCB FORMAT2 clear Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 18/26] KVM: s390: vsie: Allow CRYCB FORMAT-2 Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 19/26] KVM: s390: vsie: allow CRYCB FORMAT-1 Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 20/26] KVM: s390: vsie: allow CRYCB FORMAT-0 Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 21/26] KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1 Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 22/26] KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2 Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 23/26] KVM: s390: vsie: allow guest FORMAT-0 " Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 24/26] KVM: s390: device attrs to enable/disable AP interpretation Tony Krowiak
2018-09-17  8:51   ` David Hildenbrand
2018-09-21 23:40     ` Tony Krowiak
2018-09-24 11:23       ` David Hildenbrand
2018-09-24 16:25         ` Tony Krowiak
2018-09-24 18:42           ` Tony Krowiak
2018-09-24 18:51             ` David Hildenbrand
2018-09-25 13:24               ` Tony Krowiak
2018-09-25  7:32             ` David Hildenbrand
2018-09-25 13:26               ` Tony Krowiak
2018-09-24 18:46           ` David Hildenbrand
2018-09-25 13:31             ` Tony Krowiak
2018-09-12 19:43 ` [PATCH v10 25/26] KVM: s390: CPU model support for AP virtualization Tony Krowiak
2018-09-21 23:31   ` Tony Krowiak
2018-09-24  8:33     ` David Hildenbrand
2018-09-12 19:43 ` [PATCH v10 26/26] s390: doc: detailed specifications " Tony Krowiak
2018-09-24 10:10 ` [PATCH v10 00/26] guest dedicated crypto adapters Christian Borntraeger
2018-09-24 11:53   ` Cornelia Huck
2018-09-24 16:46     ` Tony Krowiak
2018-09-24 16:50   ` Tony Krowiak
2018-09-24 11:49 ` Cornelia Huck
2018-09-24 16:45   ` Tony 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=b2eae775-0917-8c71-4ecf-6ef921ac9b0b@linux.ibm.com \
    --to=pasic@linux.ibm.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=akrowiak@linux.vnet.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=berrange@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=buendgen@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=fiuczy@linux.vnet.ibm.com \
    --cc=frankja@linux.ibm.com \
    --cc=freude@de.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=schwidefsky@de.ibm.com \
    --cc=thuth@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.