lguest: Simplify device initialization.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jul 2011 05:09:49 +0000 (14:39 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jul 2011 05:09:49 +0000 (14:39 +0930)
commit3c3ed482dc077a67903a58c9e1aedba1bb18c18a
treead3987515d68fcfa7155574e53ab47aabd41e593
parent6d7a5d1ea34495ecb1d608f0e40afba7776ee408
lguest: Simplify device initialization.

We used to notify the Host every time we updated a device's status.  However,
it only really needs to know when we're resetting the device, or failed to
initialize it, or when we've finished our feature negotiation.

In particular, we used to wait for VIRTIO_CONFIG_S_DRIVER_OK in the
status byte before starting the device service threads.  But this
corresponds to the successful finish of device initialization, which
might (like virtio_blk's partition scanning) use the device.  So we
had a hack, if they used the device before we expected we started the
threads anyway.

Now we hook into the finalize_features hook in the Guest: at that
point we tell the Launcher that it can rely on the features we have
acked.  On the Launcher side, we look at the status at that point, and
start servicing the device.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Documentation/virtual/lguest/lguest.c
drivers/lguest/lguest_device.c