# The virtio-gpu driver, as an ordinary process. # # docs/plan/hybrid.md milestone H2. This manifest is the "the driver restarts" # half of it: KeepAlive means schinit brings vgpud back when it dies, and # because PID 1 forks every job, a driver that crashes is reaped and replaced by # the same machinery that looks after a shell. Nothing about driver recovery is # special -- that is the point. # # Enabled unconditionally, and safe to be, on two machines it is not written # for: one with no virtio-gpu at all, and one where the GPU is the only display # and the kernel therefore refuses to hand it over (virtio_gpu.c's release # hook). In both cases vgpud says so and exits SCHINIT_EXIT_NORESTART, which # stops KeepAlive from starting it again -- the alternative, measured, is # fifteen spawns in forty-five seconds, each printing a line to the console for # the rest of the uptime. No per-machine configuration either way. Label = os.schos.vgpud Program = /bin/vgpud Args = vgpud RunAtLoad = yes KeepAlive = yes # Higher than a shell's second, because a driver that cannot claim its device # will fail identically every time and there is no user waiting on it. Low # enough that a kill is answered while you are still looking at the screen. ThrottleInterval = 3 # It has no terminal and wants none: a driver that seized the console would be # doing exactly what moving it out of the kernel was meant to stop. StandardOut = /dev/tty1 StandardError = /dev/tty1