diff options
author | Sven Schnelle <svens@linux.ibm.com> | 2022-11-17 22:02:01 +0100 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2023-01-09 14:33:56 +0100 |
commit | fbaee7464fbb61a4cb484d9c41f14517738c80c7 (patch) | |
tree | 84d4f4624a40ce6e2659c51e960168c2dd63d11d /arch/s390/kernel/text_amode31.S | |
parent | 9603cb334a7dc30fb544a3579bcbf23ae5b04f8f (diff) | |
download | linux-stable-fbaee7464fbb61a4cb484d9c41f14517738c80c7.tar.gz linux-stable-fbaee7464fbb61a4cb484d9c41f14517738c80c7.tar.bz2 linux-stable-fbaee7464fbb61a4cb484d9c41f14517738c80c7.zip |
s390/tty3270: add support for diag 8c
The current code uses diag210 to infer the 3270 geometry from the
model number when running on z/VM. This doesn't work well as almost
all 3270 software clients report as 3279-2 with a custom resolution.
tty3270 assumes it has a 80x24 terminal connected because of the -2
suffix. Use diag 8c to fetch the realy geometry from z/VM.
Note that this doesn't allow dynamic resizing, i.e. reconnecting to
a z/VM session with a different geometry.
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>
Diffstat (limited to 'arch/s390/kernel/text_amode31.S')
-rw-r--r-- | arch/s390/kernel/text_amode31.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/s390/kernel/text_amode31.S b/arch/s390/kernel/text_amode31.S index 2c8b14cc5556..e0f01ce251f5 100644 --- a/arch/s390/kernel/text_amode31.S +++ b/arch/s390/kernel/text_amode31.S @@ -63,6 +63,19 @@ ENTRY(_diag210_amode31) ENDPROC(_diag210_amode31) /* + * int diag8c(struct diag8c *addr, struct ccw_dev_id *devno, size_t len) +*/ +ENTRY(_diag8c_amode31) + llgf %r3,0(%r3) + sam31 + diag %r2,%r4,0x8c +.Ldiag8c_ex: + sam64 + lgfr %r2,%r3 + BR_EX_AMODE31_r14 + EX_TABLE_AMODE31(.Ldiag8c_ex, .Ldiag8c_ex) +ENDPROC(_diag8c_amode31) +/* * int _diag26c_amode31(void *req, void *resp, enum diag26c_sc subcode) */ ENTRY(_diag26c_amode31) |