Commit Graph

159 Commits

Author SHA1 Message Date
hselasky
35b126e324 Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
gjb
fc21f40567 Revert r267961, r267973:
These changes prevent sysctl(8) from returning proper output,
such as:

 1) no output from sysctl(8)
 2) erroneously returning ENOMEM with tools like truss(1)
    or uname(1)
 truss: can not get etype: Cannot allocate memory
2014-06-27 22:05:21 +00:00
marius
15fe259895 In order to get vt(4) a bit closer to the feature set provided by sc(4),
implement options TERMINAL_{KERN,NORM}_ATTR. These are aliased to
SC_{KERNEL_CONS,NORM}_ATTR and like these latter, allow to change the
default colors of normal and kernel text respectively.
Note on the naming: Although affecting the output of vt(4), technically
kern/subr_terminal.c is primarily concerned with changing default colors
so it would be inconsistent to term these options VT_{KERN,NORM}_ATTR.
Actually, if the architecture and abstraction of terminal+teken+vt would
be perfect, dev/vt/* wouldn't be touched by this commit at all.

Reviewed by:	emaste
MFC after:	3 days
Sponsored by:	Bally Wulff Games & Entertainment GmbH
2014-06-27 19:57:57 +00:00
emaste
2b75e7bbda Use a common tunable to choose between vt(4)/sc(4)
With this change and previous work from ray@ it will be possible to put
both in GENERIC, and have one enabled by default, but allow the other to
be selected via the loader.

(The previous implementation had separate kern.vt.disable and
hw.syscons.disable tunables, and would panic if both drivers were
compiled in and neither was explicitly disabled.)

MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-06-27 17:50:33 +00:00
hselasky
bd1ed65f0f Extend the meaning of the CTLFLAG_TUN flag to automatically check if
there is an environment variable which shall initialize the SYSCTL
during early boot. This works for all SYSCTL types both statically and
dynamically created ones, except for the SYSCTL NODE type and SYSCTLs
which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to
be used in the case a tunable sysctl has a custom initialisation
function allowing the sysctl to still be marked as a tunable. The
kernel SYSCTL API is mostly the same, with a few exceptions for some
special operations like iterating childrens of a static/extern SYSCTL
node. This operation should probably be made into a factored out
common macro, hence some device drivers use this. The reason for
changing the SYSCTL API was the need for a SYSCTL parent OID pointer
and not only the SYSCTL parent OID list pointer in order to quickly
generate the sysctl path. The motivation behind this patch is to avoid
parameter loading cludges inside the OFED driver subsystem. Instead of
adding special code to the OFED driver subsystem to post-load tunables
into dynamically created sysctls, we generalize this in the kernel.

Other changes:
- Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask"
to "hw.pcic.intr_mask".
- Removed redundant TUNABLE statements throughout the kernel.
- Some minor code rewrites in connection to removing not needed
TUNABLE statements.
- Added a missing SYSCTL_DECL().
- Wrapped two very long lines.
- Avoid malloc()/free() inside sysctl string handling, in case it is
called to initialize a sysctl from a tunable, hence malloc()/free() is
not ready when sysctls from the sysctl dataset are registered.
- Bumped FreeBSD version to indicate SYSCTL API change.

MFC after:	2 weeks
Sponsored by:	Mellanox Technologies
2014-06-27 16:33:43 +00:00
ray
dd840c3fbc Suspend vt(4) initialization if "kern.vt.disable" kenv is set.
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-06-18 22:30:22 +00:00
ray
9722d2a95d syscons(4) and vt(4) can be built together now.
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-06-18 22:18:58 +00:00
ray
c432a5d44c Rename vt(4) vga module to dismiss interference with syscons(4) vga module.
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-06-18 22:10:10 +00:00
emaste
0900c8475c Correct unicode map for VGA ROM character 0x0e
The character is a beamed pair of sixteenth notes, so should be U+266C
not U+266B (beamed eighth notes).
2014-06-10 01:19:48 +00:00
emaste
cdd68772f8 Clarify statement on font origin
Submitted by:	Dimitar Zhekov
2014-06-06 18:32:05 +00:00
emaste
e076ef2bb0 Update vt(4) "Terminus BSD Console" font
"Terminus BSD Console" is a derivative of Terminus that is provided
by Mr. Dimitar Zhekov under the 2-clause BSD license for use by the             FreeBSD vt(4) console.

Reviewed by:	jhb
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-06-05 13:49:37 +00:00
emaste
ddde167c85 Remove extra copy of old email address.
MFC after:	3 days
2014-06-04 20:05:52 +00:00
emaste
aa9e3882d3 Update vt(4) console font author's email address
MFC after:	3 days
2014-06-04 19:42:47 +00:00
ray
2168fa5962 Fix case when vt(4) started w/o driver assigned.
o Always init locks and cv ASAP.
o Initialize driver-independent parts even if driver probing fail.
o Allow to call vt_upgrade anytime, for later loaded drivers.
o New window flag VWF_READY, to track if window already initialized.
Other updates:
o Pass vd as a cookie for kbd_allocate.
o Do not blank window on driver replacement.

Tested by:	hselasky (RPi), emaste(VGA, EFIFB, KMS), me

MFC after:	7 days
Sponsored by:	The FreeBSD Foundation
2014-06-03 13:33:43 +00:00
emaste
ad73b7a65d Correct vt(4) border calculations on font switch
If a vt(4) font does not exactly fit the screen dimensions, the console
window is offset so that it is centered.  A rectangle is drawn at the
top, left, right, and bottom of the screen, to erase any leftovers that
are outside of the new usable console area.

If the x offset or y offset is 0 then the left border or top border
respectively is not drawn.  The right and bottom borders may be one
pixel larger than necessary due to rounding, and are always drawn.

Prior to this change a 0 offset would result in a panic when calling
vt_drawrect with an x or y coordinate of -1.

Sponsored by:	The FreeBSD Foundation
2014-05-29 21:52:42 +00:00
emaste
8ef756fbbe Update size in vt_grow if we don't have to reallocate
vt_grow may be called with a new size that's larger than previous but
does not require reallocation - for example, when the number of columns
is the same and new number of rows is less than the history size.
Prior to this change we would fail to update vb_scr_size, and then hit
a KASSERT when trying to write to the newly visible rows.

Sponsored by:	The FreeBSD Foundation
2014-05-29 21:10:33 +00:00
emaste
57a402ba9d Correct KASSERT strings
Rows refer to height and cols to width.
2014-05-29 20:26:01 +00:00
ray
7c2069f21e Remove driver as unused.
MFC after:	7 days
Sponsored by:	The FreeBSD Foundation
2014-05-29 12:29:58 +00:00
ray
0d172b522e Proper fix of VT_LOCKSWITCH ioctl.
Sponsored by:	The FreeBSD Foundation
2014-05-22 09:31:18 +00:00
ray
15a2caccb1 Fix tty locking.
o Correct expected values for VT_LOCKSWITCH ioctl.
o Check current window for locked state.

Sponsored by:	The FreeBSD Foundation
2014-05-21 11:15:38 +00:00
ray
bbaed97062 Update terminal sizes in any case when new vt(4) driver arrive.
(Plus remove one unused newline)

Sponsored by:	The FreeBSD Foundation
2014-05-12 19:29:38 +00:00
nwhitehorn
0d88dcb1ca Port over mmap routine from syscons. This lets X11 work on PowerPC with vt.
The last obstacle to switching PowerPC entirely to vt is that the Playstation 3
framebuffer driver needs to be ported over. This only applies for powerpc64,
however.
2014-05-11 02:16:08 +00:00
nwhitehorn
5da6b5db2f Make ofwfb not be painfully slow. This reduces the time for a verbose boot
on my G4 iBook by more than half. Still 10% slower than syscons, but that's
much better than a factor of 2.

The slowness had to do with pathological write performance on 8-bit
framebuffers, which are almost universally used on Open Firmware systems.
Writing 1 byte at a time, potentially nonconsecutively, resulted in many
extra PCI write cycles. This patch, in the common case where it's writing
one or several characters in an 8x8 font, gangs the writes together into
a set of 32-bit writes. This is a port of r143830 to vt(4).

The EFI framebuffer is also extremely slow, probably for the same reason,
and the same patch will likely help there.
2014-05-11 01:58:56 +00:00
nwhitehorn
86d06b221e Make ofwfb actually work again. Apparently the API it was written against
still exists but is now silently ignored by the VT core. At least xboxfb
needs similar changes.
2014-05-11 01:19:55 +00:00
ray
a2e6be0add Hide debug messages under VT_DEBUG.
Sponsored by:	The FreeBSD Foundation
2014-05-08 22:52:05 +00:00
ray
8fb9f18d80 Fix scrollback.
Sponsored by:	The FreeBSD Foundation
2014-05-08 13:46:36 +00:00
ray
a333f6cfe1 No need to assign fields required and checked on probe.
Sponsored by:	The FreeBSD Foundation
2014-05-08 13:38:29 +00:00
ray
71833a00dd Fix possible divide by zero.
Spotted by:	many

Sponsored by:	The FreeBSD Foundation
2014-05-07 13:53:38 +00:00
ray
39b4e3c4c2 Implement KDMKTONE ioctl.
Submitted by:	Matthew D.Fuller <fullermd@over-yonder.net> (original version)
MFC:		7 days
PR:		kern/189170

Sponsored by:	The FreeBSD Foundation
2014-05-06 13:52:13 +00:00
ray
266d4c3f7f Switch vga drivers to use names and new vt(4) driver probe method.
Sponsored by:	The FreeBSD Foundation
2014-05-05 22:12:46 +00:00
ray
9be8a6b14a Revert r264997 and r265026. It is not required anymore.
Sponsored by:	The FreeBSD Foundation
2014-05-05 22:10:31 +00:00
ray
59ef450874 Add vt(4) driver name for ofwfb driver.
Sponsored by:	The FreeBSD Foundation
2014-05-05 21:49:31 +00:00
ray
cc38cb22e9 Switch fb and efifb drivers to use names and new vt(4) driver probe method.
Sponsored by:	The FreeBSD Foundation
2014-05-05 21:48:19 +00:00
ray
98f430292f Set of updates to vt(4) core part.
o Declare vt(4) drivers dataset.
o Create single static structures for all early drivers.
o Add vt(4) to be by default in the kernel consoles list.
o Create one more sysinit point, to be able to initialize memory and lock
	requirement of early drivers.
o Implement early drivers select. (Only best available will be selected).
o Fix one missed "return (0)" for VTYLOCK.
o Improve locking for cases when one driver replace another.
o Make driver replacement notification less debug-look-like.

Minor spell fixes.

Sponsored by:	The FreeBSD Foundation
2014-05-05 21:44:53 +00:00
ray
4c0632abf4 Create dataset for vt(4) drivers.
Sponsored by:	The FreeBSD Foundation
2014-05-05 21:31:00 +00:00
ray
53e0a1c2d0 Define a new method for probing vt(4) driver before attach it at early stage.
Sponsored by:	The FreeBSD Foundation
2014-05-05 21:29:56 +00:00
nwhitehorn
6e141e7c5b No EFI on i386. This unbreaks the i386 VT kernel build. 2014-04-27 20:36:19 +00:00
nwhitehorn
a1630fad26 Increase the maximum framebuffer size to more reasonable values reflecting
the high-resolution boot consoles present on Open Firmware and EFI systems.
2014-04-27 02:20:51 +00:00
nwhitehorn
9f4d9da1e7 Disable vga if EFI framebuffer present. vt(9) should handle this internally
based on efifb's higher priority, but it doesn't, and this at least lets
us build a kernel that boots on both BIOS and EFI systems for now.
2014-04-27 02:19:53 +00:00
ray
aceeb16d13 Update to fix at r264244.
o Unmute terminal when done with driver replacement.
o Move init fonts to early point.
o Minor cleanup.

MFC after:	6 days
X-MFC-with:	r264244 r264242
Sponsored by:	The FreeBSD Foundation
2014-04-08 14:18:39 +00:00
ray
d42cbcb075 Fix cursor color in reverse video mode.
PR:		kern/188196
Submitted by:	Claude Buisson <clbuisson@orange.fr> (original version)
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2014-04-08 14:14:25 +00:00
ray
a024a44936 Fix panic on load new driver while vt(4) is in VGA textmode.
o Mute terminal while vt(4) driver change in progress.
o Reset VDF_TEXTMODE before init new driver.
o Assign default font, if new driver is not in TEXTMODE.
o Do not update screen while driver changing.

Resolved by:	adrian
Reported by:	tyler
MFC after:	7 days
Sponsored by:	The FreeBSD Foundation
2014-04-07 22:49:41 +00:00
rpaulo
bde4329af1 Need to include machine/fdt.h. 2014-04-05 23:20:49 +00:00
ray
e6a9754cb8 o Add new vd_driver method to do bitblt with mask, named vd_maskbitbltchr.
o Move vd_bitbltchr vga's driver method to vd_maskbitbltchr.
o Implement new vd_bitbltchr method for vga driver. (It do single write for 8
	pixels, have to be a bit faster).

MFC after:	7 days
Sponsored by:	The FreeBSD Foundation
2014-03-28 22:04:27 +00:00
emaste
d2c99117cd Update EFI framebuffer handoff from loader
Sponsored by:	The FreeBSD Foundation
2014-03-27 19:43:38 +00:00
ray
e057a3ab30 Revert r263321.
vt(9) crash on resume fixed, but Xorg still have damaged screen on resume (at
least with i915kms), so better to switch to VT0 before suspend and back on
resume.

Sponsored by:	The FreeBSD Foundation
2014-03-27 14:07:36 +00:00
ray
0e7786c185 Fix crash on resume in vt(9).
Statically allocated terminal window have not initialized callout handler, so we
have to initialize it even for existing window if it is console window.

Reported by:	gjb and many
Tested by:	gjb
MFC after:	7 days
Sponsored by:	The FreeBSD Foundation
2014-03-27 09:24:09 +00:00
ray
773200d00a Switch kern.vt.suspendswitch to 0 by default (disabled).
kern.vt.suspendswitch - sysctl/tunable which enable switch to VT0 before going
to suspend and switch back after resume.

MFC after:	7 days
2014-03-18 22:22:47 +00:00
emaste
653eb62793 Use the existence of module metadata to indicate framebuffer presence 2014-03-14 19:37:37 +00:00
ray
9727f28ccf Add efifb driver. Driver uses the data passed by UEFI compatible loader/BIOS and
enable to use framebuffer created by those loader.
2014-03-05 14:37:45 +00:00