Linus Torvalds
6bd23e0c2b
tty: add the option to have a tty reject a new ldisc
...
... and use it to limit the virtual terminals to just N_TTY. They are
kind of special, and in particular, the "con_write()" routine violates
the "writes cannot sleep" rule that some ldiscs rely on.
This avoids the
BUG: sleeping function called from invalid context at kernel/printk/printk.c:2659
when N_GSM has been attached to a virtual console, and gsmld_write()
calls con_write() while holding a spinlock, and con_write() then tries
to get the console lock.
Tested-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp >
Cc: Jiri Slaby <jirislaby@kernel.org >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Daniel Starke <daniel.starke@siemens.com >
Reported-by: syzbot <syzbot+dbac96d8e73b61aa559c@syzkaller.appspotmail.com >
Closes: https://syzkaller.appspot.com/bug?extid=dbac96d8e73b61aa559c
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Link: https://lore.kernel.org/r/20240423163339.59780-1-torvalds@linux-foundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-05-04 18:45:11 +02:00
Linus Torvalds
3bcb0bf65c
Merge tag 'tty-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
...
Pull tty / serial driver updates from Greg KH:
"Here is the big set of TTY/Serial driver updates and cleanups for
6.9-rc1. Included in here are:
- more tty cleanups from Jiri
- loads of 8250 driver cleanups from Andy
- max310x driver updates
- samsung serial driver updates
- uart_prepare_sysrq_char() updates for many drivers
- platform driver remove callback void cleanups
- stm32 driver updates
- other small tty/serial driver updates
All of these have been in linux-next for a long time with no reported
issues"
* tag 'tty-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (199 commits)
dt-bindings: serial: stm32: add power-domains property
serial: 8250_dw: Replace ACPI device check by a quirk
serial: Lock console when calling into driver before registration
serial: 8250_uniphier: Switch to use uart_read_port_properties()
serial: 8250_tegra: Switch to use uart_read_port_properties()
serial: 8250_pxa: Switch to use uart_read_port_properties()
serial: 8250_omap: Switch to use uart_read_port_properties()
serial: 8250_of: Switch to use uart_read_port_properties()
serial: 8250_lpc18xx: Switch to use uart_read_port_properties()
serial: 8250_ingenic: Switch to use uart_read_port_properties()
serial: 8250_dw: Switch to use uart_read_port_properties()
serial: 8250_bcm7271: Switch to use uart_read_port_properties()
serial: 8250_bcm2835aux: Switch to use uart_read_port_properties()
serial: 8250_aspeed_vuart: Switch to use uart_read_port_properties()
serial: port: Introduce a common helper to read properties
serial: core: Add UPIO_UNKNOWN constant for unknown port type
serial: core: Move struct uart_port::quirks closer to possible values
serial: sh-sci: Call sci_serial_{in,out}() directly
serial: core: only stop transmit when HW fifo is empty
serial: pch: Use uart_prepare_sysrq_char().
...
2024-03-21 12:44:10 -07:00
Nicolas Pitre
1581dafaf0
vt: fix unicode buffer corruption when deleting characters
...
This is the same issue that was fixed for the VGA text buffer in commit
39cdb68c64 ("vt: fix memory overlapping when deleting chars in the
buffer"). The cure is also the same i.e. replace memcpy() with memmove()
due to the overlaping buffers.
Signed-off-by: Nicolas Pitre <nico@fluxnic.net >
Fixes: 81732c3b2f ("tty vt: Fix line garbage in virtual console on command line edition")
Cc: stable <stable@kernel.org >
Link: https://lore.kernel.org/r/sn184on2-3p0q-0qrq-0218-895349s4753o@syhkavp.arg
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-03-02 23:09:04 +01:00
Roman Žilka
8524788abf
tty/vt: Corrected doc of vc_sanitize_unicode(), vc_translate_unicode()
...
Corrected the doc of vc_sanitize_unicode() and vc_translate_unicode(),
tightly coupled functions which parse UTF-8 byte sequences.
1. Desc. of @rescan corresponded to the meaning of the return value -1.
Corrected + added "Return:" section.
2. Replaced the ambiguous "character" with "code point" or "byte".
Signed-off-by: Roman Žilka <roman.zilka@gmail.com >
Link: https://lore.kernel.org/r/bee9faa8-0ea7-4411-bf77-3cb2e06385c7@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-17 17:44:46 +01:00
Jiri Slaby (SUSE)
6cc3028f79
tty: vt: decrypt magic constants in vc_is_control()
...
0x0d00ff81 and 0x0800f501 are bitmasks of ASCII characters. Spell them
explicitly using BIT() + ASCII constants. GENMASK() is used for the
9-bit range in CTRL_ACTION.
This also modifies the 'if' checking if the masks should be applied.
>From a "random" ' ' to the actual size of the bitmasks' type.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-23-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
3701400a39
tty: vt: use ASCII enum constants in vt_console_print()
...
There are still numbers used for ASCII characters in vt_console_print().
As we have an ASCII enum now, use the constant names from the enum
instead.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-22-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
137eb9ad22
tty: vt: use switch+case in the ESgetpars case
...
To be uniform in the 'c' handling, use switch-case (with ranges) even in
the ESgetpars case in do_con_trol().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-21-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
3d5f5b9711
tty: vt: use switch+case in the ESnonstd case
...
To be uniform in the 'c' handling, use switch-case (with ranges) even in
the ESnonstd case in do_con_trol().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-20-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
798d8b1cfe
tty: vt: add new helper for reseting vc parameters
...
The code to reset the vc parameter parsing is repeated on two locations.
Create a helper vc_reset_params() and use it on both of them.
And instead of a 'for' loop to clear the array of parameters, use
simpler memset().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-19-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
bc9d077a8d
tty: vt: handle CSI+[ inside preexisting switch-case
...
In do_con_trol()'s ESsquare case, there is already a switch (c). It is
preceded by an 'if (c == '[')'. Despite this 'if' handles a state
transition and not a modifier, move it as one of the switch cases. This
makes all the 'c' decision making more obvious there.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-18-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
fd5b40251a
tty: vt: simplify ansi_control_string()
...
Given all the ANSI control states are sequential in the vc_ctl_state
enum, we can define first/last constants and use them in
ansi_control_string(). It makes the test simple and allows for removal
of the 'if' (which was unnecessary at all -- the 'return' should have
returned the 'if' content directly anyway).
And remove the useless comment -- it's clear from the function
prototype.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-17-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
22795b3c47
tty: vt: name, reflow and document enum vc_ctl_state
...
The enum for states is currently compact and undocumented. Put each
definition on a separate line and document them all using kernel-doc.
Document the same on the use sites.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-16-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:39 +00:00
Jiri Slaby (SUSE)
7c1c9c1494
tty: vt: move CSI ECMA handling to a separate function
...
Similar to previous moves, move also "CSI ..." (i.e. vc_priv == EPecma)
handling to a separate function.
This is the last large move of code out of do_con_trol(). And despite it
is still 151 lines of code (down from 407!), it is now quite easy to
folllow the transitions of the state machine in there. ESnonstd and
ESpalette handling still can be moved away, but it won't improve that
much.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-15-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
de0f61f342
tty: vt: move CSI DEC handling to a separate function
...
The handling of "CSI ? ..." (i.e. vc_priv == EPdec) can be easily moved
out of do_con_trol() into a separate function. This again increases
readability of do_con_trol().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-14-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
a9ffb22347
tty: vt: separate ESesc state handling into handle_esc()
...
Similar to the ASCII handling, the ESC handling can be easily moved away
from do_con_trol(). So create a new handle_esc() for that.
And add a comment with an example.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-13-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
ce66f8e387
tty: vt: extract ascii handling to handle_ascii()
...
To make the do_con_trol() a bit more understandable, extract the ASCII
handling (the switch-case) to a separate function.
Other nested switch-cases will follow in the next patches.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-12-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
a8ccce55a8
tty: vt: accept u8 in do_con_trol() and vc_setGx()
...
These functions expect u8 as the control character. Switch the type from
'int' appropriately. The caller passing the value (do_con_write()) is
fixed as well.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-11-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
9156792bcf
tty: vt: put cases on separate lines
...
Some cases of the CSI switch are stuffed on one line. Put them all to a
separate line as is dictated by the coding style (and for better
readability).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-10-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
cc8539cab4
tty: vt: rename setterm_command() to csi_RSB()
...
It follows naming of other similar functions. RSB stands here for Right
Square Bracket as (obviously) ']' cannot be in the function name.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-9-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
f9ac8d4e9f
tty: vt: define an enum for CSI+] codes
...
Decrypt the constant values by proper enum names. This time in
setterm_command() (to be renamed to csi_RSB() in the next patches).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-8-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:38 +00:00
Jiri Slaby (SUSE)
0afaeb78d1
tty: vt: move CSI+n handling along to other ECMA CSIs
...
CSIs without [<=>?] modifiers (ECMA) are handled in the switch-case
below this DEC switch+case handler. So move this ECMA CSI+n there too as
it fits there better.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-7-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Jiri Slaby (SUSE)
9abe9bf574
tty: vt: remove unneeded assignment of EPecma to vc_priv
...
vc_data::vc_priv is _always_ assigned before the ESgetpars case is
entered (in ESsquare). Therefore, there is no need to reset it when
leaving the ESgetpars case. Note the state is set to ESnormal few lines
above, so ESgetpars is entered only by the next CSI.
Therefore, this obfuscation can be removed.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-6-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Jiri Slaby (SUSE)
58d1af9319
tty: vt: split DEC CSI+h/l handling into csi_DEC_hl()
...
The DEC and ECMA handling of CSI+h/l is needlessly complicated. Split
these two, so that DEC is handled when the state is EPdec ('CSI ?' was
seen) and ECMA is handled in the EPecma state (no '?').
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-5-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Jiri Slaby (SUSE)
69b2c2693a
tty: vt: rename set_mode() to csi_hl()
...
It's how the other CSI handling functions are named, so unify to that.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-4-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Jiri Slaby (SUSE)
608053e194
tty: vt: define enums for CSI+h/l codes
...
Decrypt the constant values by proper enum names. This time in
set_mode().
Define two of them as DEC ('CSI ?') is about to be split away in the
next patches.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-3-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Jiri Slaby (SUSE)
fb8fa9093a
tty: vt: make rgb_from_256() slighly more comprehensible
...
* make the parameter unsigned, as it is expected to be unsigned,
* make the computation easier to follow -- step-by-step, and
* don't use 85 / 2 which is only a reduced form of 255 / 6 (by a factor
3). Unlike the former, the latter can be understood.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Link: https://lore.kernel.org/r/20240202065608.14019-2-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-02-06 14:37:37 +00:00
Roman Žilka
c01e71b49c
tty/vt: UTF-8 parsing update according to RFC 3629, modern Unicode
...
vc_translate_unicode() and vc_sanitize_unicode() parse input to the
UTF-8-enabled console, marking invalid byte sequences and producing Unicode
codepoints. The current algorithm follows ancient Unicode and may accept
invalid byte sequences, pass on non-existent codepoints and reject valid
sequences.
The patch restores the functions' compliance with modern Unicode (v15.1 [1]
+ many previous versions) as well as RFC 3629 [2].
1. Codepoint space is limited to 0x10FFFF.
2. "Noncharacters", such as U+FFFE, U+FFFF, are no longer invalid in
Unicode and will be accepted. Another option was to complete the set of
noncharacters (used to be just those two, now there's more) and preserve
the rejection step. This is indeed what Unicode suggests ([1] chap.
23.7) (not requires), but most codepoints are !iswprint(), so selecting
just the noncharacters seemed arbitrary and futile (and unnecessary).
This is not a security patch. I'm not aware of any present security
implications of the old code.
[1] https://www.unicode.org/versions/Unicode15.1.0
[2] https://datatracker.ietf.org/doc/html/rfc3629
Signed-off-by: Roman Žilka <roman.zilka@gmail.com >
Link: https://lore.kernel.org/r/598ab459-6ba9-4a17-b4a1-08f26a356fc0@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 19:01:27 -08:00
Jiri Slaby (SUSE)
60234365ae
tty: vt: fix up kernel-doc
...
selection.c and vt.c still uses tabs in the kernel-doc. This misrenders the
functions in the output -- sphinx misinterprets the description. So
remove these tabs, incl. those around dashes.
'enum' keyword is needed before enum names. Fix that.
Superfluous \n after the comments are also removed. They are not
completely faulty, but this unifies all the kernel-doc in the files.
Finally fix up the cross references.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Reviewed-by: Randy Dunlap <rdunlap@infradead.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-47-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
b23bf1a43b
tty: vt: remove unused consw::con_flush_scrollback()
...
consw::con_flush_scrollback() is unused since commit 973c096f6a
(vgacon: remove software scrollback support). Drop it.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-45-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
f441aa3b44
tty: vt: remove consw::con_getxy()
...
After the previous patch, nobody sets that hook. So drop it completely.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-44-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
fd1ca81971
tty: vt: make types of screenpos() more consistent
...
* parameter offset: it is expected to be non-negative, so switch to
unsigned
* return type: switch from ushort to explicit u16. This is expected on
most places. And fix the remaining two places too.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-42-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
7cf01c92ad
tty: vt: remove consw::con_screen_pos()
...
After the previous patch, nobody sets that hook. So drop it completely.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-41-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:55 -08:00
Jiri Slaby (SUSE)
fd0f631fff
tty: vt: make font of consw::con_font_set() const
...
Provided the font parameter of consw::con_font_set() is not supposed to
be changed, make it const.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-37-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
0a58d83dfb
tty: vt: use enum constants for VESA blanking modes
...
Use the new enum for VESA constants. This improves type checking in
consw::con_blank().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-35-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
15d0fff7d6
tty: vt: use VESA blanking constants
...
There are VESA blanking constants defined in vesa.h. So use them in the
console code instead of constant values.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-34-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
735a51943f
tty: vt: stop using -1 for blank mode in consw::con_blank()
...
-1 is the same as VESA_VSYNC_SUSPEND in all con_blank() implementations.
So we can remove this special case from vgacon now too.
Despite con_blank() of fbcon looks complicated, the "if
(!fbcon_is_inactive(vc, info))" branch is not taken as we set
"ops->graphics = 1;" few lines above. So what matters there (as in all
other blank implementations except vgacon) is if 'blank' is zero or not.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-32-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
8d5cc8eed7
tty: vt: make consw::con_switch() return a bool
...
The non-zero (true) return value from consw::con_switch() means a redraw
is needed. So make this return type a bool explicitly instead of int.
The latter might imply that -Eerrors are expected. They are not.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-31-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
a292e3fc94
tty: vt: remove CM_* constants
...
There is no difference between CM_MOVE and CM_DRAW. Either of them
enables the cursor. CM_ERASE then disables cursor.
So get rid of all of them and use simple "bool enable".
Note that this propagates down to the fbcon code.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-30-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:54 -08:00
Jiri Slaby (SUSE)
387ccbdb63
tty: vt: add con_putc() helper
...
And let it call consw::con_putc() if it exists, otherwise
consw::con_putcs(). This is similar to tty_put_char().
It supports dropping unneeded duplication of code like sticon_putc() is
(see the next patch).
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-24-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
559f01a0ee
tty: vt: sanitize arguments of consw::con_clear()
...
In consw::con_clear():
* Height is always 1, so drop it.
* Offsets and width are always unsigned values, so re-type them as such.
This needs a new __fbcon_clear() in the fbcon code to still handle
height which might not be 1 when called internally.
Note that tests for negative count/width are left in place -- they are
taken care of in the next patches.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-22-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
dae3e6b618
tty: vt: make init parameter of consw::con_init() a bool
...
The 'init' parameter of consw::con_init() is true for the first call of
the hook on a particular console. So make the parameter a bool.
And document the hook.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be >
Cc: Helge Deller <deller@gmx.de >
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-parisc@vger.kernel.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-21-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
7995c30d8d
tty: vt: make consw::con_debug_*() return void
...
The return value of con_debug_enter() and con_debug_leave() is ignored
on many fronts. So just don't propagate errors (the current
implementations return 0 anyway) and make the return type a void.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Helge Deller <deller@gmx.de >
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-20-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
bf9e206b8a
tty: vt: define an enum for ascii characters
...
I didn't find definitions for ascii in the kernel yet, so define it for
non-printable characters used here.
Note we use ' ' instead of 32 on one line too.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-18-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
23672a572f
tty: vt: reflow csi_K()
...
Push cases one level left, according to coding style.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-17-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
7eb38a765e
tty: vt: define an enum for CSI+K codes
...
Decrypt the constant values by proper enum names. This time in csi_K().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-16-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
8e6bd49a61
don't pass vc->vc_par[0] to csi_?() handlers
...
Fetch the value directly in the helpers instead.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-15-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
eb881ebab5
use clamp() for counts in csi_?() handlers
...
The count to process is supposed to be between 1 and vc->vc_cols -
vc->state.x (or rows and .y). clamp() can be used exactly for this,
instead of ifs and min().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-14-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
fe4f6beb59
tty: vt: reflow csi_J()
...
Push cases one level left, according to coding style. And reorder local
variables.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-13-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
4b8f936185
tty: vt: define an enum for CSI+J codes
...
Decrypt the constant values by proper enum names. This time in csi_J().
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-12-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00
Jiri Slaby (SUSE)
76ec3a7a51
tty: vt: use case ranges for CSI+m fg/bg colors
...
Replacing the default case with the iffery by case ranges makes the code
more understandable at last.
Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org >
Tested-by: Helge Deller <deller@gmx.de > # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-11-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2024-01-27 18:08:53 -08:00