virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: borntraeger@de.ibm.com, virtualization@lists.linux-foundation.org
Subject: Re: [PATCH v2 RFC 3/3] virtio_ccw: invoke virtio_driver's notify() on CIO_GONE notification
Date: Thu, 21 Nov 2013 18:12:21 +0100	[thread overview]
Message-ID: <528E3EF5.8030004@linux.vnet.ibm.com> (raw)
In-Reply-To: <20131121151557.GB12001@redhat.com>

On 21/11/13 16:15, Michael S. Tsirkin wrote:
> On Thu, Nov 21, 2013 at 03:45:33PM +0100, Heinz Graalfs wrote:
>> virtio_ccw's notify() callback for the common IO layer invokes
>> virtio_driver's notify() callback to pass-on information to a
>> backend driver if an online device disappeared.
>>
>> Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
>
> simple question: is this serialized with device removal?
> If this races with removal we have a problem.
>

notify and remove callbacks are not serialized.

Additional processing in the notify handler is now locked by the queue lock.

If remove is already active (e.g. driver unregister) and performing its 
cleanup (via virtblk_remove), we should definitely perform the (locked) 
request queue processing in notify (little later), because if a notify 
comes in, the device is GONE (not going away). Earlier triggered cleanup 
processing is about to fail anyway.

>> ---
>>   drivers/s390/kvm/virtio_ccw.c | 15 +++++++++++++--
>>   1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
>> index 35b9aaa..682f688 100644
>> --- a/drivers/s390/kvm/virtio_ccw.c
>> +++ b/drivers/s390/kvm/virtio_ccw.c
>> @@ -27,6 +27,7 @@
>>   #include <linux/module.h>
>>   #include <linux/io.h>
>>   #include <linux/kvm_para.h>
>> +#include <linux/notifier.h>
>>   #include <asm/setup.h>
>>   #include <asm/irq.h>
>>   #include <asm/cio.h>
>> @@ -1064,8 +1065,18 @@ out_free:
>>
>>   static int virtio_ccw_cio_notify(struct ccw_device *cdev, int event)
>>   {
>> -	/* TODO: Check whether we need special handling here. */
>> -	return 0;
>> +	int rc;
>> +	struct virtio_ccw_device *vcdev = dev_get_drvdata(&cdev->dev);
>> +
>> +	switch (event) {
>> +	case CIO_GONE:
>> +		rc = notify_virtio_device(&vcdev->vdev, VDEV_GONE);
>> +		break;
>> +	default:
>> +		rc = NOTIFY_DONE;
>> +		break;
>> +	}
>> +	return rc;
>>   }
>>
>>   static struct ccw_device_id virtio_ids[] = {
>> --
>> 1.8.3.1
>

  reply	other threads:[~2013-11-21 17:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-21 14:45 [PATCH v2 RFC 0/3] virtio: add new notify() callback to virtio_driver Heinz Graalfs
2013-11-21 14:45 ` [PATCH v2 RFC 1/3] virtio: add " Heinz Graalfs
2013-11-21 15:18   ` Michael S. Tsirkin
2013-11-21 14:45 ` [PATCH v2 RFC 2/3] virtio_blk: add virtblk_notify() as virtio_driver's notify() callback Heinz Graalfs
2013-11-21 14:45 ` [PATCH v2 RFC 3/3] virtio_ccw: invoke virtio_driver's notify() on CIO_GONE notification Heinz Graalfs
2013-11-21 15:15   ` Michael S. Tsirkin
2013-11-21 17:12     ` Heinz Graalfs [this message]
2013-11-21 18:31       ` Michael S. Tsirkin
2013-11-27 10:32         ` Heinz Graalfs
2013-11-27 10:42           ` Michael S. Tsirkin

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=528E3EF5.8030004@linux.vnet.ibm.com \
    --to=graalfs@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=mst@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /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;
as well as URLs for NNTP newsgroup(s).