virtio: hint if callbacks surprisingly might sleep
authorCornelia Huck <cohuck@redhat.com>
Thu, 31 Jan 2019 12:53:14 +0000 (13:53 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 6 Mar 2019 16:19:57 +0000 (11:19 -0500)
commitab7a2375fb8e83f8744c34442f476fa5a9df5e35
tree58698720fc0a7a79f4fdefaae195aabf57a83dba
parent971bedca26e037ee961e090c84c2640563836d3e
virtio: hint if callbacks surprisingly might sleep

A virtio transport is free to implement some of the callbacks in
virtio_config_ops in a matter that they cannot be called from
atomic context (e.g. virtio-ccw, which maps a lot of the callbacks
to channel I/O, which is an inherently asynchronous mechanism).
This can be very surprising for developers using the much more
common virtio-pci transport, just to find out that things break
when used on s390.

The documentation for virtio_config_ops now contains a comment
explaining this, but it makes sense to add a might_sleep() annotation
to various wrapper functions in the virtio core to avoid surprises
later.

Note that annotations are NOT added to two classes of calls:
- direct calls from device drivers (all current callers should be
  fine, however)
- calls which clearly won't be made from atomic context (such as
  those ultimately coming in via the driver core)

Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio.c
include/linux/virtio_config.h