History log of /dflybsd-src/sys/dev/misc/syscons/scvgarndr.c (Results 1 – 25 of 30)
Revision Date Author Comments
# fcf6efef 02-Mar-2019 Sascha Wildner <saw@online.de>

kernel: Remove numerous #include <sys/thread2.h>.

Most of them were added when we converted spl*() calls to
crit_enter()/crit_exit(), almost 14 years ago. We can now
remove a good chunk of them agai

kernel: Remove numerous #include <sys/thread2.h>.

Most of them were added when we converted spl*() calls to
crit_enter()/crit_exit(), almost 14 years ago. We can now
remove a good chunk of them again for where crit_*() are
no longer used.

I had to adjust some files that were relying on thread2.h
or headers that it includes coming in via other headers
that it was removed from.

show more ...


# 2efb75f3 04-Oct-2018 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Refactor tty_token, fix SMP performance issues

* Remove most uses of tty_token in favor of per-tty tp->t_token.
This is particularly important for removing bottlenecks related to PTYs,

kernel - Refactor tty_token, fix SMP performance issues

* Remove most uses of tty_token in favor of per-tty tp->t_token.
This is particularly important for removing bottlenecks related to PTYs,
which are used all over the place. tty_token remains in a few places
managing overall registration and global list manipulation.

* tty structures are now required to be persistent. Implement a sepearate
ttyinit() function. Continue to allow ttyregister() and ttyunregister()
calls, but these no longer presume destruction of the structure.

* Refactor ttymalloc() to take a **tty pointer and interlock allocations.
Allocations are intended to be one-time. ttymalloc() only requires the
tty_token for initial allocations.

* Remove all critical section use that was combined with tty_token and
tp->t_token. Leave only the tokens. The critical sections were
hold-overs going all the way back to pre-SMP days.

* syscons now gets its own token, vga_token. The ISA VGA code and
the framebuffer code also now use this token instead of tty_token.

* The keyboard subsystem now uses kbd_token instead of tty_token.

* A few remaining serial-like devices (snp, nmdm) also get their own
tokens, as well as use the now required tp->t_token.

* Remove use of tty_token in the session management code. This fixes
a niggling performance path since sessions almost universally go
hand-in-hand with fork/exec/exit sequences. Instead we use the
already-existing per-hash session token.

show more ...


# 539fbd92 26-Jun-2015 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Fix syscons deadlock during panic

* The system console can deadlock during a panic if a cpu is stopped
while holding syscons_mtx.

* The new asynchronous update thread makes this problem

kernel - Fix syscons deadlock during panic

* The system console can deadlock during a panic if a cpu is stopped
while holding syscons_mtx.

* The new asynchronous update thread makes this problem more likely to occur.

* Fix the problem by recoding syscons_lock() to detect the panic or shutdown
condition and loop for up to 0.5 seconds trying to get the syscons_mtx.
If it is unable to acquire it, it reinitializes the mutex.

* We still have issues with VT switching away from X.

show more ...


# 7ae6dbf0 19-Jun-2015 Matthew Dillon <dillon@apollo.backplane.com>

kernel/syscons - Fix excessive cpu latency during scrolling

* Scrolling a high-resolution (e.g. 4K monitor) kms console with the syscons
spinlock held can prevent the cpu from being able to servic

kernel/syscons - Fix excessive cpu latency during scrolling

* Scrolling a high-resolution (e.g. 4K monitor) kms console with the syscons
spinlock held can prevent the cpu from being able to service interrupts
for very long periods of time, enough to cause clicking and other audio
issues.

* The previous hack tried to fix this by allowing yields inside the render
loop, but this was not stable and did not completely solve the clicking.

* The new solution is to shove large screen updates off to a cothread which
will then run the update lockless, allowing interrupts. Minor frame buffer
corruption can occur during scrolling but will be quickly cleaned up.

This feature is disabled if the system is in the middle of a panic or
shutdown.

show more ...


# a6aa3935 11-Jun-2015 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Reduce interrupt latency during large framebuffer updates

* When syscons scrolls the entire framebuffer is updated. On large
(e.g. 4K) displays this can take excessively long and delay i

kernel - Reduce interrupt latency during large framebuffer updates

* When syscons scrolls the entire framebuffer is updated. On large
(e.g. 4K) displays this can take excessively long and delay interrupts
on the cpu for too long.

* Causes the hard sound interrupt to have high latencies and not operate
properly.

* Solved by releasing the syscons_lock() temporarily and issuing a splz()
during long copy operations.

Reported-by: swildner, others

show more ...


# 219917ca 10-Jun-2015 Sascha Wildner <saw@online.de>

kernel/syscons: Add simple font scaling when using KMS drivers.

This commit lets the user choose the number of columns for KMS syscons
with a new tunable, kern.kms_columns. If it is not set, the def

kernel/syscons: Add simple font scaling when using KMS drivers.

This commit lets the user choose the number of columns for KMS syscons
with a new tunable, kern.kms_columns. If it is not set, the default is
to scale as close as possible to 80x25 using natural numbers as scaling
factors (e.g., on 1680x1050 the default would be a 105x32 char console
using a 16x32 font).

The commit also separates (scaled) character drawing into a new
function, blit_blk(), and does some cleanups.

Submitted-by: dillon

show more ...


# ef56dbd7 04-Aug-2013 François Tigeot <ftigeot@wolfpond.org>

drm2: Synchronize with FreeBSD

as of r253709 (2013-07-27): The pmap_qenter() and pmap_qremove() perform
TLB invalidation on its own, no need to call pmap_invalidate_range() one
more time.


# 766a68c8 01-Sep-2010 Matthew Dillon <dillon@apollo.backplane.com>

kernel - Fix multiple tty_token issues related to vt switching and X

* Numerous places where gettoken/reltoken was not matched up

* Of particular note the multi-line macros in fbreg.h did not have

kernel - Fix multiple tty_token issues related to vt switching and X

* Numerous places where gettoken/reltoken was not matched up

* Of particular note the multi-line macros in fbreg.h did not have
any do/while() protection and were being used in if() macro()
situations which caused massive issues.

Reported-by: Everyone

show more ...


# 3c2ade05 30-Aug-2010 Alex Hornung <ahornung@gmail.com>

syscons MPSAFE - another attempt

* Do another pass on syscons and reduce the number of token
uses significantly.

* syscons now works with a limited number of tokens, acquired almost
only around

syscons MPSAFE - another attempt

* Do another pass on syscons and reduce the number of token
uses significantly.

* syscons now works with a limited number of tokens, acquired almost
only around linesw and vidsw routines, but out of the way of tty_cons.

show more ...


# 5688255a 29-Aug-2010 Alex Hornung <ahornung@gmail.com>

MPSAFE TTY - get rid of tokens in console path

* The console path (coming through tty_cons.c) can never block, so do
not try to acquire tokens there.

Reported-by: Jan Lentfer


# 22ff886e 27-Aug-2010 Alex Hornung <ahornung@gmail.com>

MPSAFE - TTY & related drivers

* Put kern/tty_* under the tty_token (and acquire the proc_token where
needed).

* MPSAFE all related drivers (users of kbdsw, linesw and vidsw) with the
same tty_

MPSAFE - TTY & related drivers

* Put kern/tty_* under the tty_token (and acquire the proc_token where
needed).

* MPSAFE all related drivers (users of kbdsw, linesw and vidsw) with the
same tty_token.

* NOTE: syscons.c and scvgarndr.c are not really under this new lock
yet as some really strange hangs appear. Some are related to the
cursor drawing (which stalls the machine if a token is held) and
others are in some other syscons.c functions.

show more ...


# 771006e1 29-Mar-2010 Sascha Wildner <saw@online.de>

syscons(4): Add support for 8 bit packed pixel modes.


# 21343892 21-Mar-2010 Sascha Wildner <saw@online.de>

syscons(4): Base renderer selection on the new mode's memory model.

Remove the hack that was initializing the renderer's functions
after switching.


# 03c040a2 10-Aug-2008 Sascha Wildner <swildner@dragonflybsd.org>

Remove unused variable.

Found-by: LLVM/Clang Static Analyzer


# 4e193d20 09-Jan-2008 Sascha Wildner <swildner@dragonflybsd.org>

Remove a lot of old, mummified code whose sole purpose was probing and
initialization of ye olde mono adapter/color adapter combination.

Instead of this, generally assume that we are dealing with on

Remove a lot of old, mummified code whose sole purpose was probing and
initialization of ye olde mono adapter/color adapter combination.

Instead of this, generally assume that we are dealing with one VGA
card.

After this commit, the VGA code is still a mess, but a slightly
smaller one. :)

show more ...


# 9c06b297 19-Feb-2006 Sascha Wildner <swildner@dragonflybsd.org>

* Remove unused SC_RENDER_DEBUG option.

* While I'm in LINT, add VGA_DEBUG and VESA_DEBUG.
Also, set SC_DEBUG_LEVEL to 5 (the maximum value used).


# 47d95543 26-May-2005 Sascha Wildner <swildner@dragonflybsd.org>

* Declare vtb_buffer as a pointer to uint16_t and get rid of
sc_vtb_pointer() and some casts.

* Use the standard uint16_t type instead of u_int16_t.

* Use M_ZERO instead of explicitly bzero()ing.

* Declare vtb_buffer as a pointer to uint16_t and get rid of
sc_vtb_pointer() and some casts.

* Use the standard uint16_t type instead of u_int16_t.

* Use M_ZERO instead of explicitly bzero()ing.

* Don't set VTB_VALID if malloc() failed.

In discussion with: joerg

show more ...


# b3bc0ed3 16-May-2005 Sascha Wildner <swildner@dragonflybsd.org>

Remove MGA/CGA/EGA rendering code.


# 5d528f4d 26-Apr-2005 Sascha Wildner <swildner@dragonflybsd.org>

Remove unused clear() function from the console renderer interface.


# a5eb78ad 18-Feb-2005 Sascha Wildner <swildner@dragonflybsd.org>

* For the direct modes, get rid of the predefined palettes and use the
system's EGA palette instead (like planar modes do). Since palette
values can be 5:5:5, 5:6:5, 8:8:8 etc., add code to refre

* For the direct modes, get rid of the predefined palettes and use the
system's EGA palette instead (like planar modes do). Since palette
values can be 5:5:5, 5:6:5, 8:8:8 etc., add code to refresh them via
the adapter's palette registers upon video mode change. Scrap the
ugly vga_drawpxl() macro. This makes 15 and 16 bit modes faster than
24 or 32 bpp.

* Fix mouse pointer drawing code for direct modes. Never draw the
pointer in the border area so that direct and planar modes can now
share a single function for removing the mouse.

* Do some minor cleanup and restructuring.

show more ...


# 05f75c35 13-Feb-2005 Sascha Wildner <swildner@dragonflybsd.org>

Remove unneeded conditionals.


# b9222d3b 12-Feb-2005 Sascha Wildner <swildner@dragonflybsd.org>

Fix a little redundancy from my last commit. The border cannot be outside
of the drawing area.


# 5fa98c1e 12-Feb-2005 Sascha Wildner <swildner@dragonflybsd.org>

In VESA_800x600, never draw the mouse pointer in the border area
which means the border does no longer have to be redrawn in
remove_pxlmouse_planar().


# e14d8d5b 28-Jan-2005 Sascha Wildner <swildner@dragonflybsd.org>

Scrap DEC Alpha support.


# 4097d120 04-Sep-2004 Eirik Nygaard <eirikn@dragonflybsd.org>

Add noops for vga_pxlmouse_direct and vga_pxlmouse_planar in the case where
SC_NO_CUTPASTE is defined. Also remove the old vga_pxlmouse noop.


12