Patch to add SysRq handling to 3270 console
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 4 lines · Pete Zaitcev
Matin et. al., please consider.
I am going to look into tub sleeping with spinlocks soonish, but please don't hold this patch for that problem.
Martin has started a major rewrite/cleanup of this driver recently that I believe he wanted to send in one of his next updates for 2.5.7x. Your patch looks good, but it is probably duplicated work. Do you have a tested backport for 2.4.2x? If so, we could merge it for the z990 code drop.
Martin, is the new driver in a state that you can send Pete for reference?
Arnd <><
Quoted 5 lines
From: Arnd Bergmann <[email protected]>
Date: Fri, 23 May 2003 01:12:20 +0200[...] Do you have a tested backport for 2.4.2x? If so, we could merge it for the z990 code drop.
It's attached to RH bug #91338. I append it to this mail. I use 2.4.21-rc2-ac2, because pure Marcelo tree does not have a recent s390 codebase. He has the old "char *ctrlchar_handle()" still, and the patch won't apply.
-- Pete
arch/s390/kernel/s390_ksyms.c +3 -0
@@ -10,6 +10,7 @@#include <asm/delay.h> #include <asm/setup.h> #include <asm/softirq.h> +#include <asm/ctrlchar.h> #if CONFIG_IP_MULTICAST #include <net/arp.h> #endif
@@ -62,3 +63,5 @@EXPORT_SYMBOL (console_device);EXPORT_SYMBOL (pfix_table);EXPORT_SYMBOL_NOVERS (do_call_softirq); +EXPORT_SYMBOL (ctrlchar_init); +EXPORT_SYMBOL (ctrlchar_handle);
arch/s390x/kernel/s390_ksyms.c +3 -0
@@ -13,6 +13,7 @@#include <asm/pgalloc.h> #include <asm/setup.h> #include <asm/softirq.h> +#include <asm/ctrlchar.h> #if CONFIG_IP_MULTICAST #include <net/arp.h> #endif
@@ -86,3 +87,5 @@EXPORT_SYMBOL (console_device);EXPORT_SYMBOL (pfix_table);EXPORT_SYMBOL_NOVERS (do_call_softirq); +EXPORT_SYMBOL (ctrlchar_init); +EXPORT_SYMBOL (ctrlchar_handle);
drivers/s390/char/con3215.c +2 -3
@@ -31,8 +31,7 @@#include <asm/cpcmd.h> #include <asm/irq.h> #include <asm/setup.h> - -#include "ctrlchar.h" +#include <asm/ctrlchar.h> #define NR_3215 1#define NR_3215_REQ (4*NR_3215)
@@ -474,7 +473,7 @@if (count >=TTY_FLIPBUF_SIZE - tty->flip.count) count =TTY_FLIPBUF_SIZE - tty->flip.count -1 ;EBCASC (raw->inbuf, count); - cchar =ctrlchar_handle (raw->inbuf, count, tty); + cchar =ctrlchar_handle (raw->inbuf, count, tty,1 );switch (cchar &CTRLCHAR_MASK ) {case CTRLCHAR_SYSRQ :break ;
drivers/s390/char/ctrlchar.c +4 -3
@@ -13,7 +13,7 @@#include <linux/ctype.h> #include <linux/interrupt.h> -#include "ctrlchar.h" +#include <asm/ctrlchar.h> #ifdef CONFIG_MAGIC_SYSRQ static int ctrlchar_sysrq_key;
@@ -52,7 +52,8 @@* with CTRLCHAR_CTRL */ unsigned int -ctrlchar_handle (const unsigned char *buf,int len,struct tty_struct *tty) +ctrlchar_handle (const unsigned char *buf,int len,struct tty_struct *tty, +int is_console) {if ((len <2 ) || (len >3 ))return CTRLCHAR_NONE ;
@@ -64,7 +65,7 @@#ifdef CONFIG_MAGIC_SYSRQ /* racy */ -if (len ==3 && buf[1 ] =='-' ) { +if (is_console && len ==3 && buf[1 ] =='-' ) { ctrlchar_sysrq_key = buf[2 ]; ctrlchar_tq.data = tty;queue_task (&ctrlchar_tq, &tq_immediate);
drivers/s390/char/ctrlchar.h +0 -21
@@ -1,21 +0,0 @@ -/* -* drivers/s390/char/ctrlchar.c -* Unified handling of special chars. -* -* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation -* Author(s): Fritz Elfert <[email protected]> <[email protected]> -* -*/ - -#include <linux/tty.h> - -extern unsigned int -ctrlchar_handle (const unsigned char *buf,int len,struct tty_struct *tty); -extern void ctrlchar_init (void ); - - -#define CTRLCHAR_NONE (1 << 8) -#define CTRLCHAR_CTRL (2 << 8) -#define CTRLCHAR_SYSRQ (3 << 8) - -#define CTRLCHAR_MASK (~0xffu)
drivers/s390/char/sclp_tty.c +2 -2
@@ -17,8 +17,8 @@#include <linux/wait.h> #include <linux/slab.h> #include <asm/uaccess.h> +#include <asm/ctrlchar.h> -#include "ctrlchar.h" #include "sclp.h" #include "sclp_rw.h" #include "sclp_tty.h"
@@ -485,7 +485,7 @@*/ if (sclp_tty ==NULL )return ; - cchar =ctrlchar_handle (buf, count, sclp_tty); + cchar =ctrlchar_handle (buf, count, sclp_tty,1 );switch (cchar &CTRLCHAR_MASK ) {case CTRLCHAR_SYSRQ :break ;
drivers/s390/char/tubtty.c +14 -12
@@ -10,6 +10,7 @@* Author: Richard Hitt */ #include <linux/config.h> +#include <asm/ctrlchar.h> #include "tubio.h" /* Initialization & uninitialization for tubtty */
@@ -118,6 +119,8 @@ td->read_proc = tty3270_read_proc; td->write_proc = tty3270_write_proc; +ctrlchar_init (); + rc =tty_register_driver (td);if (rc) {printk (KERN_ERR "tty3270 registration failed with %d\n" , rc);
@@ -875,23 +878,22 @@ {struct tty_struct *tty;int func =-1 ; +int is_console =0 ; +unsigned int cchar;if ((tty = tubp->tty) ==NULL )return ;if (count <0 )return ; -if (count ==2 && (cp[0 ] =='^' || cp[0 ] =='\252' )) { -switch (cp[1 ]) { -case 'c' :case 'C' : - func =INTR_CHAR (tty); -break ; -case 'd' :case 'D' : - func =EOF_CHAR (tty); -break ; -case 'z' :case 'Z' : - func =SUSP_CHAR (tty); -break ; - } +#ifdef CONFIG_TN3270_CONSOLE +if (CONSOLE_IS_3270 && tub3270_con_tubp == tubp) + is_console =1 ; +#endif + cchar =ctrlchar_handle (cp, count, tty, is_console); +if ((cchar &CTRLCHAR_MASK ) !=CTRLCHAR_NONE ) { +if ((cchar &CTRLCHAR_MASK ) !=CTRLCHAR_CTRL ) +return ; + func = cchar &0xFF ; }else if (count ==2 && cp[0 ] ==0x1b ) {/* if ESC */ int inc =0 ;char buf[GEOM_INPLEN +1 ];
include/asm-s390/ctrlchar.h +20 -0
@@ -0,0 +1,20 @@ +/* +* Implemented in drivers/s390/char/ctrlchar.c +* Unified handling of special chars. +* +* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation +* Author(s): Fritz Elfert <[email protected]> <[email protected]> +* +*/ + +struct tty_struct ; + +extern unsigned int ctrlchar_handle (const unsigned char *buf,int len, +struct tty_struct *tty,int is_console); +extern void ctrlchar_init (void ); + +#define CTRLCHAR_CTRL (0 << 8) +#define CTRLCHAR_NONE (1 << 8) +#define CTRLCHAR_SYSRQ (2 << 8) + +#define CTRLCHAR_MASK (~0xffu)
include/asm-s390x/ctrlchar.h +20 -0
@@ -0,0 +1,20 @@ +/* +* Implemented in drivers/s390/char/ctrlchar.c +* Unified handling of special chars. +* +* Copyright (C) 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation +* Author(s): Fritz Elfert <[email protected]> <[email protected]> +* +*/ + +struct tty_struct ; + +extern unsigned int ctrlchar_handle (const unsigned char *buf,int len, +struct tty_struct *tty,int is_console); +extern void ctrlchar_init (void ); + +#define CTRLCHAR_CTRL (0 << 8) +#define CTRLCHAR_NONE (1 << 8) +#define CTRLCHAR_SYSRQ (2 << 8) + +#define CTRLCHAR_MASK (~0xffu)
Quoted 2 lines · Arnd Bergmann
duplicated work. Do you have a tested backport for 2.4.2x? If so, we could merge it for the z990 code drop.
What is the z990 code drop? Can you please merge support for new hardware into mainline instead of realsing it in these silly IBM patchkits for old kernels with exploitable security issues..
Btw, what's the state of 2.4.21-rc3 vs s390(x)?