On Tue, Jan 22, 2019 at 03:53:46PM +0000, Paul Durrant wrote: > There is a flaw in the xen-bus state model. To allow a frontend to re- > connect the backend state of an online XenDevice is transitioned from > Closed to InitWait, but this is currently done unilaterally which is > incorrect. The backend state should remain Closed until the frontend state > transitions to Initialising. > > This patch removes the automatic backend state transition from > xen_device_backend_state_changed() and, instead, adds an extra check in > xen_device_frontend_state_changed() to determine whether a frontend is > trying to re-connect to a previously Closed XenDevice. Only if this is > found to be the case is the backend state transitioned from Closed to > InitWait. Note that this transition will be common amongst all XenDevice > classes and hence xen_device_frontend_state_changed() returns immediately > afterwards without calling into the XenDeviceClass frontend_changed() > method. > > Signed-off-by: Paul Durrant <paul.durr...@citrix.com>
I've tested OVMF with that patch, and states transitions looks better when transitionning from ovmf to linux. (Less Closed->InitWait->Closed..., and ovmf trying to win a race at reading the backend state at the right time). Acked-by: Anthony PERARD <anthony.per...@citrix.com> Thanks, -- Anthony PERARD