Project

General

Profile

Feature #7834

uts: vgatext should use gfx_private

Added by Toomas Soome over 2 years ago. Updated 9 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
kernel
Start date:
2017-02-01
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:

Description

The gfx_private is "forgotten" interface since the illumos fork was created and does already implement most of the vgatext. The purpose of the gfx_private is to provide an mechanism to implement console accesss methods, It is time to start to work on this module so we can get basic support linear framebuffer.

The purpose of this feature is to make sure we have gfx_private implementing features used in vgatext, and so we could remove the code duplication and can have basis for future work.

Since there are some references to vgatext from drm module, this change needs to attend those bits as well.

History

#1

Updated by Joshua M. Clulow 9 months ago

Some additional notes that Toomas put on Reviewboard:

The current illumos console does use following chain for displaying the data on the screen:

... skipping streams bits ... -> tem -> vgatext -> screen

The vgatext there is detecting and attaching to primary display. At this time the vgatext does only operate with text mode screen.

This update will plug in the gfx_private module; the idea is actually quite simple and part of the change is already in place as one can see from gfx_private sources.

so this update will set the chain as following:

... skipping streams bits ... -> tem -> vgatext -> gfx_private -> screen

The actual screen handling is managed from tem via visual_io(7I).

The actual screen related calls are implemented in gfx_private, transferred from the vgatext, and with this patch applied, the same text mode console is provided, but the stage is set to followup.

The next logical step is to provide simple software frame buffer via gfx_private:

                       / gfx_vgatext branch
... -> vgatext -> gfx_fb
                       \ gfx_bitmap branch

The mode of the console is picked from boot, the same visual_io(7I) is used and with it, we can have the usable console for both BIOS and UEFI boot. Note, I am skipping over the early console at this time.

This setup is still far from ideal, but does quite good work for now, this is also the current implementation in loader branch and has been presented via demo usb/iso images.

Looking even more forward, obviously the text/software FB based console are for the "generic" case, the proper real console would need KMS driven framebuffer.

#2

Updated by Joshua M. Clulow 9 months ago

Testing Notes

I built this and booted it as a KVM guest. I tried a few combinations of things that already work:

- booting with and without -kd, interacting with kmdb, etc
- booting -kd with diag-device set to ttya
- starting Xorg with the vesa driver, and exiting it to make sure the VGA text mode console still comes back

Everything appears to work as I would expect.

#3

Updated by Electric Monk 9 months ago

  • Status changed from In Progress to Closed
  • % Done changed from 90 to 100

git commit 30165b7f6753bc3d48c52319bed7ec7b3ea36b3c

commit  30165b7f6753bc3d48c52319bed7ec7b3ea36b3c
Author: Toomas Soome <tsoome@me.com>
Date:   2019-01-18T19:23:24.000Z

    7834 uts: vgatext should use gfx_private
    Reviewed by: Yuri Pankov <yuripv@gmx.com>
    Reviewed by: John Howard <Echosoft.LLC@gmail.com>
    Reviewed by: Alexander Eremin <a.eremin@nexenta.com>
    Approved by: Joshua M. Clulow <josh@sysmgr.org>

Also available in: Atom PDF