Aaron Zang wrote: >> 2.4) Resetting frame buffer state on exit from X >> >> On exit X will generally attempt to restore the mode the card was >> in before it started. While some native drivers do restore enough >> state to reset a VESA mode properly, a number do not. >> >> Since it is impractical to test and fix every native driver on all >> cards, a method for explicitly setting the VESA mode at OS run-time >> is used. Setting the mode requires execution of a call into the >> VESA BIOS supplied by the card. This is achieved via vbiosd, a >> daemon that provides userland x86 realmode emulation. This daemon >> is a derivative work based on uvesafb::v86d, covered by OSR 12387. >> >> While the mode is set by vbiosd in userland, the state continues to >> be tracked by the KD_TEXT/KD_GRAPHICS states in the gfx_private >> lower-layer of the kernel driver. Mode changes happen in >> gfx_private and invoke vbiosd via a door. >> >> If X does not exit cleanly, the native driver can leave the card >> in an unknown state. This project does not change that behavior. >> >> vbiosd is managed by svc:/system/vbios. While it is only required >> when X is running, an effort must be made to keep the console in >> a sane state when X is started by something other than smf, such as >> say running Xorg manually, so the vbios service is always started. >> > > Hi Jerry, > Good to see this going. I have something unclear about this section. > The graphic card might not always be in VESA (KD_TEXT) mode before an X > server starts. > This is true when an second X server is started while the first X server > is in control of the graphic card. It is now supported with virtual console > and new gdm. Xorg's saving/restoring graphic context while starting/exiting > or switching to/from via user land DDX driver works fine now. > I am not sure that there won't be any problems if we make such assumption > and restore the graphic card to VESA mode every time the X server exits.
In this case exiting really means that the X server explicitly sets KD_TEXT as part of releasing the device and turning control back over to the text console. This shouldn't happen unless the intent is to at least temporarily hand control of the frame buffer back to the text console, in which case there should not be a problem. If the X server ever sets KD_TEXT in a scenario where the graphics card is used in a native mode by another X server, I would expect problems even with just the VGA support. -jan