vioblk attach doesn't always fail when it should
The attach function in vioblk is quite broken w.r.t. the error code it returns. On error (but not success) it will return 'ret', which defaults to DDI_SUCCESS and is set to DDI_FAILURE (or any other value indicating failure) in some places. Of course it doesn't always set it to DDI_FAILURE, like when interrupt allocation fails. This means vioblk will attach despite attach() failing, leaving the driver in an unitialized state and causing issues on detach() and quiesce().