Plymouth's VT handling code isn't really good enough to run plymouth from any vt other than the initial vt.
1) The drm renderer assumes plymouth starts out "active" even before the initial vt switch is finished
2) the console code puts tty0 in PROCESS mode early on. This means we put initial active vt in PROCESS mode, not the one we want to be on. This means we won't get notifications when leaving the right vt, and will get spurious notifications when entering the wrong vt
3) the console code has a state variable that says whether we need to call VT_WAITACTIVE, but it doesn't clear the state variable when the VT is switched behind plymouth's back.
Notes from brief IRC discussion:
- ply_console_t is intended to be "the console which has the active vt", but is being used in ways that really mean "plymouth's vt"
- there isn't a race-free way to always know that the active vt is plymouth's vt
- rename ply_console_t to ply_vt_t, the operations on it are all the things we want to do to plymouth's VT anyway (VT_PROCESS, set mode, etc.)
- ply_vt_new (state->default_tty)
- What about renderers that don't need a VT (x11?)
- new terminal from vt - for the default case?
- should ply_console remain just for get_active_vt and set_active_vt which can be done on /dev/tty0 (though they can be done on /dev/tty7 just as easily)
Scott fixed this up a while ago.