virtio_rpmsg: set DRIVER_OK before using device
authorMichael S. Tsirkin <mst@redhat.com>
Thu, 12 Mar 2015 01:24:41 +0000 (11:54 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 13 Mar 2015 05:25:42 +0000 (15:55 +1030)
commit71e4b8bf0482fc7d70e9d4c10b13c207a285d58a
tree435db3fcf8c9e28fdc331b64fb0f4effb80b3138
parent8051a2a518fcf3827a143470083ad6008697ff17
virtio_rpmsg: set DRIVER_OK before using device

virtio spec requires that all drivers set DRIVER_OK
before using devices. While rpmsg isn't yet
included in the virtio 1 spec, previous spec versions
also required this.

virtio rpmsg violates this rule: is calls kick
before setting DRIVER_OK.

The fix isn't trivial since simply calling virtio_device_ready earlier
would mean we might get an interrupt in parallel with adding buffers.

Instead, split kick out to prepare+notify calls.  prepare before
virtio_device_ready - when we know we won't get interrupts. notify right
afterwards.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/rpmsg/virtio_rpmsg_bus.c