s390/tty3270: convert lines during output
authorSven Schnelle <svens@linux.ibm.com>
Thu, 24 Nov 2022 21:53:44 +0000 (22:53 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Mon, 9 Jan 2023 13:34:01 +0000 (14:34 +0100)
commit9c138af9b777f466226787cf24a34ff94d4f80e2
tree2f9c22b70848a2cc32f3d06ab999357d94c6fdbb
parentec1b0a33a3828801233683dd4fbd07fe8a0e7909
s390/tty3270: convert lines during output

The length of the screen line is variable with the 3270 protocol.
For each attribute (foreground, background color, highlighting etc)
we need 3 bytes: the set attribute order, the attribute number, and
the value of the attribute. This means that depending on screen content,
we might end up 3*3 bytes addtional data for a single character.

Allocating the maximum possible amount of memory is quite a lot, and
we cannot easily extend the lines by allocating memory because we
might get called from atomic context. Failing to extend the memory
would also be bad as that would mean that we could miss kernel messages
in oom conditions. Therefore move the conversion to a 3270 datastream
to tty3270_update(), and use only single line buffer.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Tested-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
drivers/s390/char/con3270.c
drivers/s390/char/raw3270.h