summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/text_amode31.S
diff options
context:
space:
mode:
authorSven Schnelle <svens@linux.ibm.com>2022-11-17 22:02:01 +0100
committerHeiko Carstens <hca@linux.ibm.com>2023-01-09 14:33:56 +0100
commitfbaee7464fbb61a4cb484d9c41f14517738c80c7 (patch)
tree84d4f4624a40ce6e2659c51e960168c2dd63d11d /arch/s390/kernel/text_amode31.S
parent9603cb334a7dc30fb544a3579bcbf23ae5b04f8f (diff)
downloadlinux-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.S13
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)