summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* vfio/ccw: refactor the idaw counterEric Farman2023-01-091-9/+30
| | | | | | | | | | | | | | | | | | | The rules of an IDAW are fairly simple: Each one can move no more than a defined amount of data, must not cross the boundary defined by that length, and must be aligned to that length as well. The first IDAW in a list is special, in that it does not need to adhere to that alignment, but the other rules still apply. Thus, by reading the first IDAW in a list, the number of IDAWs that will comprise a data transfer of a particular size can be calculated. Let's factor out the reading of that first IDAW with the logic that calculates the length of the list, to simplify the rest of the routine that handles the individual IDAWs. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: populate page_array struct inlineEric Farman2023-01-091-17/+5
| | | | | | | | | | | | | | | | | | | | | There are two possible ways the list of addresses that get passed to vfio are calculated. One is from a guest IDAL, which would be an array of (probably) non-contiguous addresses. The other is built from contiguous pages that follow the starting address provided by ccw->cda. page_array_alloc() attempts to simplify things by pre-populating this array from the starting address, but that's not needed for a CCW with an IDAL anyway so doesn't need to be in the allocator. Move it to the caller in the non-IDAL case, since it will be overwritten when reading the guest IDAL. Remove the initialization of the pa_page output pointers, since it won't be explicitly needed for either case. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: pass page count to page_array structEric Farman2023-01-091-10/+13
| | | | | | | | | | | | | | | | The allocation of our page_array struct calculates the number of 4K pages that would be needed to hold a certain number of bytes. But, since the number of pages that will be pinned is also calculated by the length of the IDAL, this logic is unnecessary. Let's pass that information in directly, and avoid the math within the allocator. Also, let's make this two allocations instead of one, to make it apparent what's happening within here. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: remove unnecessary malloc alignmentEric Farman2023-01-091-20/+23
| | | | | | | | | | | | | | Everything about this allocation is harder than necessary, since the memory allocation is already aligned to our needs. Break them apart for readability, instead of doing the funky arithmetic. Of the structures that are involved, only ch_ccw needs the GFP_DMA flag, so the others can be allocated without it. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: simplify CCW chain fetch routinesEric Farman2023-01-091-18/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The act of processing a fetched CCW has two components: 1) Process a Transfer-in-channel (TIC) CCW 2) Process any other CCW The former needs to look at whether the TIC jumps backwards into the current channel program or forwards into a new segment, while the latter just processes the CCW data address itself. Rather than passing the chain segment and index within it to the handlers for the above, and requiring each to calculate the elements it needs, simply pass the needed pointers directly. For the TIC, that means the CCW being processed and the location of the entire channel program which holds all segments. For the other CCWs, the page_array pointer is also needed to perform the page pinning, etc. While at it, rename ccwchain_fetch_direct to _ccw, to indicate what it is. The name "_direct" is historical, when it used to process a direct-addressed CCW, but IDAs are processed here too. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: replace copy_from_iova with vfio_dma_rwEric Farman2023-01-091-51/+5
| | | | | | | | | | | | | | | | | It was suggested [1] that we replace the old copy_from_iova() routine (which pins a page, does a memcpy, and unpins the page) with the newer vfio_dma_rw() interface. This has a modest improvement in the overall time spent through the fsm_io_request() path, and simplifies some of the code to boot. [1] https://lore.kernel.org/r/20220706170553.GK693670@nvidia.com/ Suggested-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: move where IDA flag is set in ORBEric Farman2023-01-091-7/+6
| | | | | | | | | | | | | | | | | | | The output of vfio_ccw is always a Format-2 IDAL, but the code that explicitly sets this is buried in cp_init(). In fact the input is often already a Format-2 IDAL, and would be rejected (via the check in ccwchain_calc_length()) if it weren't, so explicitly setting it doesn't do much. Setting it way down here only makes it impossible to make decisions in support of other IDAL formats. Let's move that to where the rest of the ORB is set up, so that the CCW processing in cp_prefetch() is performed according to the contents of the unmodified guest ORB. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: allow non-zero storage keysEric Farman2023-01-091-1/+0
| | | | | | | | | | | | | | | | | | | | | Currently, vfio-ccw copies the ORB from the io_region to the channel_program struct being built. It then adjusts various pieces of that ORB to the values needed to be used by the SSCH issued by vfio-ccw in the host. This includes setting the subchannel key to the default, presumably because Linux doesn't do anything with non-zero storage keys itself. But it seems wrong to convert every I/O to the default key if the guest itself requested a non-zero subchannel (access) key. Any channel program that sets a non-zero key would expect the same key returned in the SCSW of the IRB, not zero, so best to allow that to occur unimpeded. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: simplify the cp_get_orb interfaceEric Farman2023-01-093-7/+6
| | | | | | | | | | | | | There's no need to send in both the address of the subchannel struct, and an element within it, to populate the ORB. Pass the whole pointer and let cp_get_orb() take the pieces that are needed. Suggested-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* vfio/ccw: cleanup some of the mdev commentaryEric Farman2023-01-092-4/+2
| | | | | | | | | | There is no longer an mdev struct accessible via a channel program struct, but there are some artifacts remaining that mention it. Clean them up. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: add special output handling when oops_in_progress is setSven Schnelle2023-01-091-15/+61
| | | | | | | | | | | | | Normally a user can scroll back with PF7/PF8 if printed messages are outside of the visible screen area. This doesn't work when the kernel crashes, because the scrollback handling is done by the kernel, which is no longer alive after the kernel crash. Add code to always print all dirty lines in the screen buffer, so the user can scroll back with the terminal scrollback keys (Page Up/Down). Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: set SBA and RA addresses when converting linesSven Schnelle2023-01-091-23/+8
| | | | | | | | | | Now that lines are converted during output, the RA and SBA no longer need to get updated as an additional step. Instead set them when converting the line. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: simplify update flagsSven Schnelle2023-01-091-20/+10
| | | | | | | | | Make TTY3270_UPDATE_ALL the sum of all TTY3270_* flags, so we don't need any special handling for it. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: return from notifier when activate view failsSven Schnelle2023-01-091-2/+6
| | | | | | | | | | When activating the view fails (in this case because the 3270 is disconnected) return from the notifer callback. Otherwise the system will deadlock. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/diag: use __packed __alignedSven Schnelle2023-01-091-1/+1
| | | | | | | | | Use __packed __aligned instead of __attribute__((packed, aligned(X))); to match the rest of the file. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: split header filesSven Schnelle2023-01-094-88/+102
| | | | | | | | | | | | | In order to use the fs3270 one would need at least the ioctl definitions in uapi. Add two new include files in uapi, which contain: fs3270: ioctl number declarations + returned struct for TUBGETMOD. raw3270: all the orders, attributes and similar stuff used with 3270 terminals. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: fix screen reset on activateSven Schnelle2023-01-091-6/+7
| | | | | | | | | | | fs3270 uses EWRITEA to clear the screen when a user opens /dev/3270/tub. However it misses the attribute byte after the EWRITEA, so (at least) x3270 complains about 'Record too short, missing write flags'. Add the missing flag byte to fix this. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: fix function prototypesSven Schnelle2023-01-091-38/+22
| | | | | | | | | | | fix function prototypes split over two lines like: static void foobar(void) Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: use *ptr instead of struct in kzallocSven Schnelle2023-01-091-1/+1
| | | | | | Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: remove duplicate assignmentSven Schnelle2023-01-091-1/+2
| | | | | | | | remove a duplicate assignment reported by checkpatch. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: add missing braces to if/elseSven Schnelle2023-01-091-6/+9
| | | | | | | | | Fix a few missing braces and wrong placement of braces reported by checkpatch. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/fs3270: fix whitespace errorsSven Schnelle2023-01-091-16/+16
| | | | | | | | | Fix a few whitespace errors reported by checkpatch, namely superfluous whitespace, missing spaces and empty lines. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: fix nullpointer checkSven Schnelle2023-01-091-1/+1
| | | | | | | | | | | Fix the following checkpatch warning: CHECK: Comparison to NULL could be written "!rp" + if (rp == NULL) Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: split up raw3270_activate_view()Sven Schnelle2023-01-091-28/+46
| | | | | | | | | move the core processing to __raw3270_activate_view() to reduce the required if/else blocks and indentiion levels. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: remove BUG_ON in raw3270_request_reset()Sven Schnelle2023-01-092-4/+8
| | | | | | | | | WARN_ON_ONCE if list is not empty, and return an error code instead. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: use DEVICE_ATTR_RO() for sysfs attributesSven Schnelle2023-01-091-9/+9
| | | | | | Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: add comment to spinlock memberSven Schnelle2023-01-091-1/+1
| | | | | | | | | Add a small comment to the lock member of struct raw3270_view to make checkpatch happy. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: fix raw3270 declarationsSven Schnelle2023-01-091-29/+30
| | | | | | | | | checkpatch complains about missing argument names in function declarations. Fix it. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: fix indentation/whitespace errorsSven Schnelle2023-01-092-20/+23
| | | | | | Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/raw3270: move EXPORT_SYMBOL() next to functionsSven Schnelle2023-01-091-24/+23
| | | | | | | | | | Fixes a few checkpatch warning about EXPORT_SYMBOL being at the end of the file instead of being next to the functions. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: fix minor checkpatch issuesSven Schnelle2023-01-091-11/+17
| | | | | | | | | Fix remaining checkpatch issues, like misplaced brackets, whitespace and similar things. No functional change. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: use msecs_to_jiffies()Sven Schnelle2023-01-091-1/+1
| | | | | | | | Use msecs_to_jiffies() instead of HZ/10. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: fix multiple assignments in one lineSven Schnelle2023-01-091-5/+10
| | | | | | | | | | | fix the following and similar checkpatch warnings: CHECK: multiple assignments should be avoided + tp->cx = tp->saved_cx = 0; Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: fix camelcase in enum membersSven Schnelle2023-01-091-13/+13
| | | | | | | | | | | fix the following and similar checkpatch warnings: CHECK: Avoid CamelCase: <ESnormal> + enum { ESnormal, ESesc, ESsquare, ESparen, ESgetpars }; Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
* s390/con3270: add key help to status areaSven Schnelle2023-01-091-7/+33
| | | | | | | | | | | To let the user know about function key bindings, print them next to the Running/History field at the lower right of the screen. Also print the scrollback position. 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>
* s390/con3270: reduce highlight width to 3 bitsSven Schnelle2023-01-091-14/+21
| | | | | | | | | | | With the previous change this reduces the size of struct tty3270_attribute from four to two bytes. As we have this struct allocated for each character cell, this saves quite some memory. 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>
* s390/con3270: reduce f_color and b_color attribute size to 4 bitSven Schnelle2023-01-091-10/+18
| | | | | | | | | | As we're only supportign 8 colors, we don't need 8 bits. Reduce the size to 4 bits to save memory. 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>
* s390/con3270: rewrite command line recallingSven Schnelle2023-01-092-170/+74
| | | | | | | | | | | Command line recalling is the last user of the 3270 custom malloc() like allocator. Remove this dependency by using a statically allocated buffer for the saved command lines, and also remove the allocator. 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>
* s390/tty3270: use normal char buffer for prompt/inputSven Schnelle2023-01-091-55/+81
| | | | | | | | | Preparation patch to allow removing the custom 3270 memory allocator. 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>
* s390/tty3270: convert lines during outputSven Schnelle2023-01-092-238/+102
| | | | | | | | | | | | | | | | | | | | 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>
* s390/con3270: generate status line during outputSven Schnelle2023-01-091-39/+45
| | | | | | | | | | | Updating the status line is almost the same as generating it when redrawing the screen. However, the code is much easier to read when doing so. 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>
* s390/tty3270: add 3270 datastream helpersSven Schnelle2023-01-091-44/+53
| | | | | | | | | | There are lots of places adding attributes or orders to the datastream. Add a few helpers to make that code shorter and easier to read. 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>
* s390/tty3270: move ASCII->EBCDIC conversion to convert_line()Sven Schnelle2023-01-091-42/+42
| | | | | | | | | | Instead of always converting the character set, only convert them when the line is really displayed. 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>
* s390/con3270: move tty3270_convert_line()Sven Schnelle2023-01-091-162/+162
| | | | | | | | | | To make the upcoming patches easier to read, move tty3270_convert_line() before changing code. No functional change. 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>
* s390/raw3270: make raw3270_buffer_address() accept x/y coordinatesSven Schnelle2023-01-093-15/+17
| | | | | | | | | | | | All callers of raw3270_buffer_address() are calculating the offset from some x/y coordinates. Move that calculation inside of the function, so user can pass the x/y values directly. Note that negative values are relative to the end-of-line or end-of-screen. 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>
* s390/tty3270: allocate screen with scrollbackSven Schnelle2023-01-091-14/+21
| | | | | | | | | | No functional change (except more memory consumption), in preparation for the line buffer rework. 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>
* s390/con3270: add helper to get number of tty rowsSven Schnelle2023-01-091-23/+29
| | | | | | | | | | | There a quite a few places using 'tp->view.rows - 2'. Add a helper function for this. This will also be used when a function key help line will be added. 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>
* s390/tty3270: split up tty3270_convert_line()Sven Schnelle2023-01-091-68/+93
| | | | | | | | | | | | | | | | | To make the code easier to read, split up tty3270_convertline() into several subfunctions: - tty3270_resize_line() to realloc the line if it doesn't have enough space left - tty3270_required_length() to calculate how much space we need - tty3270_add_attributes() to add the color and highlight attributes - tty3270_add_reset_attributes() to reset the attributes at the end of the line 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>
* s390/tty3270: resize terminal when the clear key is pressedSven Schnelle2023-01-093-8/+27
| | | | | | | | | | | | There's no easy way to figure out whether the user has re-connected to the z/VM session. When the user re-connected with a different geometry to z/VM, the screen layout is broken. Allow the user to force a resizing by pressing the Clear Key. 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>
* s390/tty3270: move resize work to raw3270Sven Schnelle2023-01-093-34/+42
| | | | | | | | | | | | This change was initially made to reduce code duplication when the con3270 and tty3270 shared the same resize code. It still makes sense to move the resize workqueue to raw3270 in case we add some other view later. 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>