Re: [PATCH] vt_ioctl: make VT_RESIZEX behave like VT_RESIZE

Maciej W. Rozycki
2021-04-11T21:43:53Z

On Tue, 29 Sep 2020, Greg KH wrote:

> > > > >> VT_RESIZEX was introduced in Linux 1.3.3, but it is unclear that what
> > > > >> comes to the "+ more" part, and I couldn't find a user of VT_RESIZEX.
> > > > >>
> > > > >
> > > > > It seems this is/was used by "svgatextmode" which seems to be at
> > > > > http://www.ibiblio.org/pub/Linux/utils/console/
> > > > >
> > > > > Not sure if that kind of software still has a chance to work nowadays.
> > > > >
> > > >
> > > > Thanks for the information.
> > > >
> > > > It seems that v.v_vlin = curr_textmode->VDisplay / (MOFLG_ISSET(curr_textmode, ATTR_DOUBLESCAN) ? 2 : 1)
> > > > and v.v_clin = curr_textmode->FontHeight . Thus, v.v_clin is font's height and seems to be non-zero.
> > > > But according to https://bugs.gentoo.org/19485 , people are using kernel framebuffer instead.
> > > >
> > >
> > > Yes, this seems to be from pre framebuffer times.
> > >
> > > Back in the days "svga" was the wording you got for "pokes svga card
> > > hardware registers from userspace drivers". And textmode means font
> > > rendering is done via (fixed function in those times) hardware scanout
> > > engine. Of course having only to update 2 bytes per character was a huge
> > > saving early on. Likely this is also before vesa VBE was reliable.
> > >
> > > So i guess the point where this all starts going wrong allowing the X parts
> > > of the api to be combined with FB based rendering at all? Sounds the only
> > > user didn't use that combination and so it was never tested?
> > >
> > > Then again, this all relates to hardware from 20 years ago...
> >
> > Imo userspace modesetting should be burned down anywhere we can. We've
> > gotten away with this in drivers/gpu by just seamlessly transitioning to
> > kernel drivers.
> >
> > Since th only userspace we've found seems to be able to cope if this ioctl
> > doesn't do anything, my vote goes towards ripping it out completely and
> > doing nothing in there. Only question is whether we should error or fail
> > with a silent success: Former is safer, latter can avoid a few regression
> > reports since the userspace tools keep "working", and usually people don't
> > notice for stuff this old. It worked in drivers/gpu :-)
>
> This patch just ignores the ioctl and keeps on going, so userspace
> "shouldn't" notice it :)
>
> And it's in linux-next now, so all should be good.

So it does trigger with vgacon and my old server, which I have started
experimenting with and for a start I have switched to a new kernel for an
unrelated purpose (now that I have relieved it from all its usual tasks
except for the last remaining one for which I haven't got the required
user software ported to the new system yet):

"struct vt_consize"->v_vlin is ignored. Please report if you need this.
"struct vt_consize"->v_clin is ignored. Please report if you need this.

It continues using svgatextmode with its glass (CRT) VT to set my usual
80x37 text mode (720x576 pixel resolution) by manipulating the VGA clock
chip and the CRT controller appropriately for a nice refresh rate of 85Hz:

Chipset = `TVGA8900', Textmode clock = 44.90 MHz, 80x37 chars, CharCell = 9x16. Refresh = 52.51kHz/84.7Hz.

Indeed the piece of software became less usable around Y2K as clock chip
support stopped being added to svgatextmode for new video adapters, but
with the advent of LCD technology and its disregard for the refresh rate
previously driven by the pixel clock the program got its second life and I
have used it ever since with its plain VGA driver by just manipulating the
CRTC for the resolution required:

Chipset = `VGA', Textmode clock = 28.32 MHz, 80x37 chars, CharCell = 9x16. Refresh = 31.47kHz/49.0Hz.

(that would still work with a standard 800x600 SVGA CRT, but the refresh
rate would make anyone's eyes cry soon; with LCD it's just awesome, and
the VGA emulation of the actual graphics adapter turns it at the video
output into a 1600x1200 picture at the horizontal and vertical rates of
75KHz and 60Hz respectively, making the text produced on LCD outstanding
while showing about the right amount of it).

But I'm currently ~160km/100mi away from the server I have triggered this
message with, so I cannot easily check what's going on with its VT. And I
can't fiddle with my production laptop (ThinkPad P51) I have with me that
I also use svgatextmode with so much as to reboot it with a new kernel
(plain Debian 4.19.16-1~bpo9+1 still here).

So what's the supposed impact of this change that prompted the inclusion
of the messages? I can port svgatextmode (it's my own compilation anyway)
if that is required for it to continue working correctly, but I need to
understand the circumstances here. I have failed to find a satisfactory
alternative solution to vgacon and svgatextmode; the main showstopper is
the IBM's hardware trick for a 9x16 character cell that I rely on.

Maciej