All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-23  9:29 ` kernel test robot
  0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2020-07-23  9:29 UTC (permalink / raw)
  To: Johan Hovold
  Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman, Andy Shevchenko,
	Dmitry Safonov

[-- Attachment #1: Type: text/plain, Size: 12731 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
date:   4 weeks ago
config: m68k-randconfig-s032-20200723 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

>> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

vim +/pmz_receive_chars +255 drivers/tty/serial/pmac_zilog.c

7cf82b1b65833f drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  214  
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  215  static bool pmz_receive_chars(struct uart_pmac_port *uap)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  216  {
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  217  	struct tty_port *port;
13b4353bb05568 drivers/tty/serial/pmac_zilog.c YueHaibing      2018-09-20  218  	unsigned char ch, r1, drop, flag;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  219  	int loops = 0;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  220  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  221  	/* Sanity check, make sure the old bug is no longer happening */
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  222  	if (uap->port.state == NULL) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  223  		WARN_ON(1);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  224  		(void)read_zsdata(uap);
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  225  		return false;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  226  	}
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  227  	port = &uap->port.state->port;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  228  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  229  	while (1) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  230  		drop = 0;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  231  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  232  		r1 = read_zsreg(uap, R1);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  233  		ch = read_zsdata(uap);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  234  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  235  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR)) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  236  			write_zsreg(uap, R0, ERR_RES);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  237  			zssync(uap);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  238  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  239  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  240  		ch &= uap->parity_mask;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  241  		if (ch == 0 && uap->flags & PMACZILOG_FLAG_BREAK) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  242  			uap->flags &= ~PMACZILOG_FLAG_BREAK;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  243  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  244  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  245  #if defined(CONFIG_MAGIC_SYSRQ) && defined(CONFIG_SERIAL_CORE_CONSOLE)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  246  #ifdef USE_CTRL_O_SYSRQ
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  247  		/* Handle the SysRq ^O Hack */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  248  		if (ch == '\x0f') {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  249  			uap->port.sysrq = jiffies + HZ*5;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  250  			goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  251  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  252  #endif /* USE_CTRL_O_SYSRQ */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  253  		if (uap->port.sysrq) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  254  			int swallow;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16 @255  			spin_unlock(&uap->port.lock);
7d12e780e003f9 drivers/serial/pmac_zilog.c     David Howells   2006-10-05  256  			swallow = uart_handle_sysrq_char(&uap->port, ch);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  257  			spin_lock(&uap->port.lock);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  258  			if (swallow)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  259  				goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  260  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  261  #endif /* CONFIG_MAGIC_SYSRQ && CONFIG_SERIAL_CORE_CONSOLE */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  262  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  263  		/* A real serial line, record the character and status.  */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  264  		if (drop)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  265  			goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  266  
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  267  		flag = TTY_NORMAL;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  268  		uap->port.icount.rx++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  269  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  270  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR | BRK_ABRT)) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  271  			if (r1 & BRK_ABRT) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  272  				pmz_debug("pmz: got break !\n");
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  273  				r1 &= ~(PAR_ERR | CRC_ERR);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  274  				uap->port.icount.brk++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  275  				if (uart_handle_break(&uap->port))
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  276  					goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  277  			}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  278  			else if (r1 & PAR_ERR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  279  				uap->port.icount.parity++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  280  			else if (r1 & CRC_ERR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  281  				uap->port.icount.frame++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  282  			if (r1 & Rx_OVR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  283  				uap->port.icount.overrun++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  284  			r1 &= uap->port.read_status_mask;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  285  			if (r1 & BRK_ABRT)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  286  				flag = TTY_BREAK;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  287  			else if (r1 & PAR_ERR)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  288  				flag = TTY_PARITY;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  289  			else if (r1 & CRC_ERR)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  290  				flag = TTY_FRAME;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  291  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  292  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  293  		if (uap->port.ignore_status_mask == 0xff ||
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  294  		    (r1 & uap->port.ignore_status_mask) == 0) {
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  295  			tty_insert_flip_char(port, ch, flag);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  296  		}
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  297  		if (r1 & Rx_OVR)
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  298  			tty_insert_flip_char(port, 0, TTY_OVERRUN);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  299  	next_char:
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  300  		/* We can get stuck in an infinite loop getting char 0 when the
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  301  		 * line is in a wrong HW state, we break that here.
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  302  		 * When that happens, I disable the receive side of the driver.
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  303  		 * Note that what I've been experiencing is a real irq loop where
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  304  		 * I'm getting flooded regardless of the actual port speed.
25985edcedea63 drivers/tty/serial/pmac_zilog.c Lucas De Marchi 2011-03-30  305  		 * Something strange is going on with the HW
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  306  		 */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  307  		if ((++loops) > 1000)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  308  			goto flood;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  309  		ch = read_zsreg(uap, R0);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  310  		if (!(ch & Rx_CH_AV))
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  311  			break;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  312  	}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  313  
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  314  	return true;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  315   flood:
7cf82b1b65833f drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  316  	pmz_interrupt_control(uap, 0);
ec9cbe09899e36 drivers/serial/pmac_zilog.c     Finn Thain      2009-11-17  317  	pmz_error("pmz: rx irq flood !\n");
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  318  	return true;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  319  }
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  320  

:::::: The code at line 255 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 21908 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-23  9:29 ` kernel test robot
  0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2020-07-23  9:29 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 12875 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
date:   4 weeks ago
config: m68k-randconfig-s032-20200723 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

>> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

vim +/pmz_receive_chars +255 drivers/tty/serial/pmac_zilog.c

7cf82b1b65833f drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  214  
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  215  static bool pmz_receive_chars(struct uart_pmac_port *uap)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  216  {
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  217  	struct tty_port *port;
13b4353bb05568 drivers/tty/serial/pmac_zilog.c YueHaibing      2018-09-20  218  	unsigned char ch, r1, drop, flag;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  219  	int loops = 0;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  220  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  221  	/* Sanity check, make sure the old bug is no longer happening */
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  222  	if (uap->port.state == NULL) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  223  		WARN_ON(1);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  224  		(void)read_zsdata(uap);
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  225  		return false;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  226  	}
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  227  	port = &uap->port.state->port;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  228  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  229  	while (1) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  230  		drop = 0;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  231  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  232  		r1 = read_zsreg(uap, R1);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  233  		ch = read_zsdata(uap);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  234  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  235  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR)) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  236  			write_zsreg(uap, R0, ERR_RES);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  237  			zssync(uap);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  238  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  239  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  240  		ch &= uap->parity_mask;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  241  		if (ch == 0 && uap->flags & PMACZILOG_FLAG_BREAK) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  242  			uap->flags &= ~PMACZILOG_FLAG_BREAK;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  243  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  244  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  245  #if defined(CONFIG_MAGIC_SYSRQ) && defined(CONFIG_SERIAL_CORE_CONSOLE)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  246  #ifdef USE_CTRL_O_SYSRQ
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  247  		/* Handle the SysRq ^O Hack */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  248  		if (ch == '\x0f') {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  249  			uap->port.sysrq = jiffies + HZ*5;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  250  			goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  251  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  252  #endif /* USE_CTRL_O_SYSRQ */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  253  		if (uap->port.sysrq) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  254  			int swallow;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16 @255  			spin_unlock(&uap->port.lock);
7d12e780e003f9 drivers/serial/pmac_zilog.c     David Howells   2006-10-05  256  			swallow = uart_handle_sysrq_char(&uap->port, ch);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  257  			spin_lock(&uap->port.lock);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  258  			if (swallow)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  259  				goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  260  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  261  #endif /* CONFIG_MAGIC_SYSRQ && CONFIG_SERIAL_CORE_CONSOLE */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  262  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  263  		/* A real serial line, record the character and status.  */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  264  		if (drop)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  265  			goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  266  
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  267  		flag = TTY_NORMAL;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  268  		uap->port.icount.rx++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  269  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  270  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR | BRK_ABRT)) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  271  			if (r1 & BRK_ABRT) {
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  272  				pmz_debug("pmz: got break !\n");
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  273  				r1 &= ~(PAR_ERR | CRC_ERR);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  274  				uap->port.icount.brk++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  275  				if (uart_handle_break(&uap->port))
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  276  					goto next_char;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  277  			}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  278  			else if (r1 & PAR_ERR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  279  				uap->port.icount.parity++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  280  			else if (r1 & CRC_ERR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  281  				uap->port.icount.frame++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  282  			if (r1 & Rx_OVR)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  283  				uap->port.icount.overrun++;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  284  			r1 &= uap->port.read_status_mask;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  285  			if (r1 & BRK_ABRT)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  286  				flag = TTY_BREAK;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  287  			else if (r1 & PAR_ERR)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  288  				flag = TTY_PARITY;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  289  			else if (r1 & CRC_ERR)
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  290  				flag = TTY_FRAME;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  291  		}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  292  
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  293  		if (uap->port.ignore_status_mask == 0xff ||
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  294  		    (r1 & uap->port.ignore_status_mask) == 0) {
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  295  			tty_insert_flip_char(port, ch, flag);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  296  		}
33f0f88f1c51ae drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  297  		if (r1 & Rx_OVR)
92a19f9cec9a80 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  298  			tty_insert_flip_char(port, 0, TTY_OVERRUN);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  299  	next_char:
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  300  		/* We can get stuck in an infinite loop getting char 0 when the
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  301  		 * line is in a wrong HW state, we break that here.
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  302  		 * When that happens, I disable the receive side of the driver.
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  303  		 * Note that what I've been experiencing is a real irq loop where
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  304  		 * I'm getting flooded regardless of the actual port speed.
25985edcedea63 drivers/tty/serial/pmac_zilog.c Lucas De Marchi 2011-03-30  305  		 * Something strange is going on with the HW
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  306  		 */
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  307  		if ((++loops) > 1000)
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  308  			goto flood;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  309  		ch = read_zsreg(uap, R0);
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  310  		if (!(ch & Rx_CH_AV))
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  311  			break;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  312  	}
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  313  
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  314  	return true;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  315   flood:
7cf82b1b65833f drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  316  	pmz_interrupt_control(uap, 0);
ec9cbe09899e36 drivers/serial/pmac_zilog.c     Finn Thain      2009-11-17  317  	pmz_error("pmz: rx irq flood !\n");
2e124b4a390ca8 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  318  	return true;
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  319  }
^1da177e4c3f41 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  320  

:::::: The code at line 255 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 21908 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
  2020-07-23  9:29 ` kernel test robot
@ 2020-07-23 12:16   ` Johan Hovold
  -1 siblings, 0 replies; 10+ messages in thread
From: Johan Hovold @ 2020-07-23 12:16 UTC (permalink / raw)
  To: kernel test robot
  Cc: Johan Hovold, kbuild-all, linux-kernel, Greg Kroah-Hartman,
	Andy Shevchenko, Dmitry Safonov

On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> date:   4 weeks ago
> config: m68k-randconfig-s032-20200723 (attached as .config)
> compiler: m68k-linux-gcc (GCC) 9.3.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # apt-get install sparse
>         # sparse version: v0.6.2-93-g4c6cbe55-dirty
>         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> 
> sparse warnings: (new ones prefixed by >>)
> 
> >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

This warning is far from new, but let's add the missing annotation
nonetheless:

	https://lore.kernel.org/r/20200723121423.24217-1-johan@kernel.org

Johan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-23 12:16   ` Johan Hovold
  0 siblings, 0 replies; 10+ messages in thread
From: Johan Hovold @ 2020-07-23 12:16 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1398 bytes --]

On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> date:   4 weeks ago
> config: m68k-randconfig-s032-20200723 (attached as .config)
> compiler: m68k-linux-gcc (GCC) 9.3.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # apt-get install sparse
>         # sparse version: v0.6.2-93-g4c6cbe55-dirty
>         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> 
> sparse warnings: (new ones prefixed by >>)
> 
> >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

This warning is far from new, but let's add the missing annotation
nonetheless:

	https://lore.kernel.org/r/20200723121423.24217-1-johan(a)kernel.org

Johan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
  2020-07-23 12:16   ` Johan Hovold
@ 2020-07-23 12:26     ` Andy Shevchenko
  -1 siblings, 0 replies; 10+ messages in thread
From: Andy Shevchenko @ 2020-07-23 12:26 UTC (permalink / raw)
  To: Johan Hovold
  Cc: kernel test robot, kbuild-all, Linux Kernel Mailing List,
	Greg Kroah-Hartman, Andy Shevchenko, Dmitry Safonov

On Thu, Jul 23, 2020 at 3:19 PM Johan Hovold <johan@kernel.org> wrote:
>
> On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> > commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> > date:   4 weeks ago
> > config: m68k-randconfig-s032-20200723 (attached as .config)
> > compiler: m68k-linux-gcc (GCC) 9.3.0
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         # apt-get install sparse
> >         # sparse version: v0.6.2-93-g4c6cbe55-dirty
> >         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
> >         # save the attached .config to linux build tree
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> >
> >
> > sparse warnings: (new ones prefixed by >>)
> >
> > >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
>
> This warning is far from new,

I suspect it's a new sparse and kbuildbot that decided to unveil old sins.

> but let's add the missing annotation
> nonetheless:
>
>         https://lore.kernel.org/r/20200723121423.24217-1-johan@kernel.org

Feel free to add Reviewed-by: Andy Shevchenko
<andy.shevchenko@gmail.com> to them.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-23 12:26     ` Andy Shevchenko
  0 siblings, 0 replies; 10+ messages in thread
From: Andy Shevchenko @ 2020-07-23 12:26 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1734 bytes --]

On Thu, Jul 23, 2020 at 3:19 PM Johan Hovold <johan@kernel.org> wrote:
>
> On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> > commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> > date:   4 weeks ago
> > config: m68k-randconfig-s032-20200723 (attached as .config)
> > compiler: m68k-linux-gcc (GCC) 9.3.0
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         # apt-get install sparse
> >         # sparse version: v0.6.2-93-g4c6cbe55-dirty
> >         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
> >         # save the attached .config to linux build tree
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> >
> >
> > sparse warnings: (new ones prefixed by >>)
> >
> > >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
>
> This warning is far from new,

I suspect it's a new sparse and kbuildbot that decided to unveil old sins.

> but let's add the missing annotation
> nonetheless:
>
>         https://lore.kernel.org/r/20200723121423.24217-1-johan(a)kernel.org

Feel free to add Reviewed-by: Andy Shevchenko
<andy.shevchenko@gmail.com> to them.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
  2020-07-23 12:26     ` Andy Shevchenko
@ 2020-07-23 12:37       ` Johan Hovold
  -1 siblings, 0 replies; 10+ messages in thread
From: Johan Hovold @ 2020-07-23 12:37 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Johan Hovold, kernel test robot, kbuild-all,
	Linux Kernel Mailing List, Greg Kroah-Hartman, Andy Shevchenko,
	Dmitry Safonov

On Thu, Jul 23, 2020 at 03:26:54PM +0300, Andy Shevchenko wrote:
> On Thu, Jul 23, 2020 at 3:19 PM Johan Hovold <johan@kernel.org> wrote:
> >
> > On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > > head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> > > commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> > > date:   4 weeks ago
> > > config: m68k-randconfig-s032-20200723 (attached as .config)
> > > compiler: m68k-linux-gcc (GCC) 9.3.0
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         # apt-get install sparse
> > >         # sparse version: v0.6.2-93-g4c6cbe55-dirty
> > >         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
> > >         # save the attached .config to linux build tree
> > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > >
> > >
> > > sparse warnings: (new ones prefixed by >>)
> > >
> > > >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
> >
> > This warning is far from new,
> 
> I suspect it's a new sparse and kbuildbot that decided to unveil old sins.

Possibly.

> > but let's add the missing annotation
> > nonetheless:
> >
> >         https://lore.kernel.org/r/20200723121423.24217-1-johan@kernel.org
> 
> Feel free to add Reviewed-by: Andy Shevchenko
> <andy.shevchenko@gmail.com> to them.

Thanks, and sorry I missed this before sending a v2 with the missing
ampersands added. It's better if you reply to the cover letter so Greg's
tooling will pick it up:

	https://lore.kernel.org/r/20200723123327.5843-1-johan@kernel.org

Johan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-23 12:37       ` Johan Hovold
  0 siblings, 0 replies; 10+ messages in thread
From: Johan Hovold @ 2020-07-23 12:37 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2093 bytes --]

On Thu, Jul 23, 2020 at 03:26:54PM +0300, Andy Shevchenko wrote:
> On Thu, Jul 23, 2020 at 3:19 PM Johan Hovold <johan@kernel.org> wrote:
> >
> > On Thu, Jul 23, 2020 at 05:29:14PM +0800, kernel test robot wrote:
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > > head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
> > > commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
> > > date:   4 weeks ago
> > > config: m68k-randconfig-s032-20200723 (attached as .config)
> > > compiler: m68k-linux-gcc (GCC) 9.3.0
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         # apt-get install sparse
> > >         # sparse version: v0.6.2-93-g4c6cbe55-dirty
> > >         git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
> > >         # save the attached .config to linux build tree
> > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > >
> > >
> > > sparse warnings: (new ones prefixed by >>)
> > >
> > > >> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
> >
> > This warning is far from new,
> 
> I suspect it's a new sparse and kbuildbot that decided to unveil old sins.

Possibly.

> > but let's add the missing annotation
> > nonetheless:
> >
> >         https://lore.kernel.org/r/20200723121423.24217-1-johan(a)kernel.org
> 
> Feel free to add Reviewed-by: Andy Shevchenko
> <andy.shevchenko@gmail.com> to them.

Thanks, and sorry I missed this before sending a v2 with the missing
ampersands added. It's better if you reply to the cover letter so Greg's
tooling will pick it up:

	https://lore.kernel.org/r/20200723123327.5843-1-johan(a)kernel.org

Johan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-24  1:56 ` kernel test robot
  0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2020-07-24  1:56 UTC (permalink / raw)
  To: Johan Hovold
  Cc: kbuild-all, linux-kernel, Greg Kroah-Hartman, Andy Shevchenko,
	Dmitry Safonov

[-- Attachment #1: Type: text/plain, Size: 12838 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
date:   4 weeks ago
config: m68k-randconfig-s032-20200723 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

>> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

vim +/pmz_receive_chars +255 drivers/tty/serial/pmac_zilog.c

7cf82b1b65833f2 drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  214  
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  215  static bool pmz_receive_chars(struct uart_pmac_port *uap)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  216  {
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  217  	struct tty_port *port;
13b4353bb05568c drivers/tty/serial/pmac_zilog.c YueHaibing      2018-09-20  218  	unsigned char ch, r1, drop, flag;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  219  	int loops = 0;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  220  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  221  	/* Sanity check, make sure the old bug is no longer happening */
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  222  	if (uap->port.state == NULL) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  223  		WARN_ON(1);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  224  		(void)read_zsdata(uap);
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  225  		return false;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  226  	}
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  227  	port = &uap->port.state->port;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  228  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  229  	while (1) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  230  		drop = 0;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  231  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  232  		r1 = read_zsreg(uap, R1);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  233  		ch = read_zsdata(uap);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  234  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  235  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR)) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  236  			write_zsreg(uap, R0, ERR_RES);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  237  			zssync(uap);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  238  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  239  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  240  		ch &= uap->parity_mask;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  241  		if (ch == 0 && uap->flags & PMACZILOG_FLAG_BREAK) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  242  			uap->flags &= ~PMACZILOG_FLAG_BREAK;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  243  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  244  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  245  #if defined(CONFIG_MAGIC_SYSRQ) && defined(CONFIG_SERIAL_CORE_CONSOLE)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  246  #ifdef USE_CTRL_O_SYSRQ
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  247  		/* Handle the SysRq ^O Hack */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  248  		if (ch == '\x0f') {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  249  			uap->port.sysrq = jiffies + HZ*5;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  250  			goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  251  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  252  #endif /* USE_CTRL_O_SYSRQ */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  253  		if (uap->port.sysrq) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  254  			int swallow;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16 @255  			spin_unlock(&uap->port.lock);
7d12e780e003f93 drivers/serial/pmac_zilog.c     David Howells   2006-10-05  256  			swallow = uart_handle_sysrq_char(&uap->port, ch);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  257  			spin_lock(&uap->port.lock);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  258  			if (swallow)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  259  				goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  260  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  261  #endif /* CONFIG_MAGIC_SYSRQ && CONFIG_SERIAL_CORE_CONSOLE */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  262  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  263  		/* A real serial line, record the character and status.  */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  264  		if (drop)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  265  			goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  266  
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  267  		flag = TTY_NORMAL;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  268  		uap->port.icount.rx++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  269  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  270  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR | BRK_ABRT)) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  271  			if (r1 & BRK_ABRT) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  272  				pmz_debug("pmz: got break !\n");
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  273  				r1 &= ~(PAR_ERR | CRC_ERR);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  274  				uap->port.icount.brk++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  275  				if (uart_handle_break(&uap->port))
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  276  					goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  277  			}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  278  			else if (r1 & PAR_ERR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  279  				uap->port.icount.parity++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  280  			else if (r1 & CRC_ERR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  281  				uap->port.icount.frame++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  282  			if (r1 & Rx_OVR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  283  				uap->port.icount.overrun++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  284  			r1 &= uap->port.read_status_mask;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  285  			if (r1 & BRK_ABRT)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  286  				flag = TTY_BREAK;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  287  			else if (r1 & PAR_ERR)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  288  				flag = TTY_PARITY;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  289  			else if (r1 & CRC_ERR)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  290  				flag = TTY_FRAME;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  291  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  292  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  293  		if (uap->port.ignore_status_mask == 0xff ||
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  294  		    (r1 & uap->port.ignore_status_mask) == 0) {
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  295  			tty_insert_flip_char(port, ch, flag);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  296  		}
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  297  		if (r1 & Rx_OVR)
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  298  			tty_insert_flip_char(port, 0, TTY_OVERRUN);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  299  	next_char:
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  300  		/* We can get stuck in an infinite loop getting char 0 when the
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  301  		 * line is in a wrong HW state, we break that here.
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  302  		 * When that happens, I disable the receive side of the driver.
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  303  		 * Note that what I've been experiencing is a real irq loop where
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  304  		 * I'm getting flooded regardless of the actual port speed.
25985edcedea639 drivers/tty/serial/pmac_zilog.c Lucas De Marchi 2011-03-30  305  		 * Something strange is going on with the HW
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  306  		 */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  307  		if ((++loops) > 1000)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  308  			goto flood;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  309  		ch = read_zsreg(uap, R0);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  310  		if (!(ch & Rx_CH_AV))
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  311  			break;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  312  	}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  313  
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  314  	return true;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  315   flood:
7cf82b1b65833f2 drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  316  	pmz_interrupt_control(uap, 0);
ec9cbe09899e36b drivers/serial/pmac_zilog.c     Finn Thain      2009-11-17  317  	pmz_error("pmz: rx irq flood !\n");
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  318  	return true;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  319  }
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  320  

:::::: The code at line 255 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 21908 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock
@ 2020-07-24  1:56 ` kernel test robot
  0 siblings, 0 replies; 10+ messages in thread
From: kernel test robot @ 2020-07-24  1:56 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 12982 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
commit: 08d5470308ac3598e7709d08b8979ce6e9de8da2 serial: core: fix sysrq overhead regression
date:   4 weeks ago
config: m68k-randconfig-s032-20200723 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        git checkout 08d5470308ac3598e7709d08b8979ce6e9de8da2
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

>> drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock

vim +/pmz_receive_chars +255 drivers/tty/serial/pmac_zilog.c

7cf82b1b65833f2 drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  214  
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  215  static bool pmz_receive_chars(struct uart_pmac_port *uap)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  216  {
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  217  	struct tty_port *port;
13b4353bb05568c drivers/tty/serial/pmac_zilog.c YueHaibing      2018-09-20  218  	unsigned char ch, r1, drop, flag;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  219  	int loops = 0;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  220  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  221  	/* Sanity check, make sure the old bug is no longer happening */
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  222  	if (uap->port.state == NULL) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  223  		WARN_ON(1);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  224  		(void)read_zsdata(uap);
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  225  		return false;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  226  	}
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  227  	port = &uap->port.state->port;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  228  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  229  	while (1) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  230  		drop = 0;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  231  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  232  		r1 = read_zsreg(uap, R1);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  233  		ch = read_zsdata(uap);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  234  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  235  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR)) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  236  			write_zsreg(uap, R0, ERR_RES);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  237  			zssync(uap);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  238  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  239  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  240  		ch &= uap->parity_mask;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  241  		if (ch == 0 && uap->flags & PMACZILOG_FLAG_BREAK) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  242  			uap->flags &= ~PMACZILOG_FLAG_BREAK;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  243  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  244  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  245  #if defined(CONFIG_MAGIC_SYSRQ) && defined(CONFIG_SERIAL_CORE_CONSOLE)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  246  #ifdef USE_CTRL_O_SYSRQ
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  247  		/* Handle the SysRq ^O Hack */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  248  		if (ch == '\x0f') {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  249  			uap->port.sysrq = jiffies + HZ*5;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  250  			goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  251  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  252  #endif /* USE_CTRL_O_SYSRQ */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  253  		if (uap->port.sysrq) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  254  			int swallow;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16 @255  			spin_unlock(&uap->port.lock);
7d12e780e003f93 drivers/serial/pmac_zilog.c     David Howells   2006-10-05  256  			swallow = uart_handle_sysrq_char(&uap->port, ch);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  257  			spin_lock(&uap->port.lock);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  258  			if (swallow)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  259  				goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  260  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  261  #endif /* CONFIG_MAGIC_SYSRQ && CONFIG_SERIAL_CORE_CONSOLE */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  262  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  263  		/* A real serial line, record the character and status.  */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  264  		if (drop)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  265  			goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  266  
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  267  		flag = TTY_NORMAL;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  268  		uap->port.icount.rx++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  269  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  270  		if (r1 & (PAR_ERR | Rx_OVR | CRC_ERR | BRK_ABRT)) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  271  			if (r1 & BRK_ABRT) {
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  272  				pmz_debug("pmz: got break !\n");
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  273  				r1 &= ~(PAR_ERR | CRC_ERR);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  274  				uap->port.icount.brk++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  275  				if (uart_handle_break(&uap->port))
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  276  					goto next_char;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  277  			}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  278  			else if (r1 & PAR_ERR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  279  				uap->port.icount.parity++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  280  			else if (r1 & CRC_ERR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  281  				uap->port.icount.frame++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  282  			if (r1 & Rx_OVR)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  283  				uap->port.icount.overrun++;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  284  			r1 &= uap->port.read_status_mask;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  285  			if (r1 & BRK_ABRT)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  286  				flag = TTY_BREAK;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  287  			else if (r1 & PAR_ERR)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  288  				flag = TTY_PARITY;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  289  			else if (r1 & CRC_ERR)
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  290  				flag = TTY_FRAME;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  291  		}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  292  
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  293  		if (uap->port.ignore_status_mask == 0xff ||
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  294  		    (r1 & uap->port.ignore_status_mask) == 0) {
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  295  			tty_insert_flip_char(port, ch, flag);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  296  		}
33f0f88f1c51ae5 drivers/serial/pmac_zilog.c     Alan Cox        2006-01-09  297  		if (r1 & Rx_OVR)
92a19f9cec9a80a drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  298  			tty_insert_flip_char(port, 0, TTY_OVERRUN);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  299  	next_char:
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  300  		/* We can get stuck in an infinite loop getting char 0 when the
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  301  		 * line is in a wrong HW state, we break that here.
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  302  		 * When that happens, I disable the receive side of the driver.
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  303  		 * Note that what I've been experiencing is a real irq loop where
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  304  		 * I'm getting flooded regardless of the actual port speed.
25985edcedea639 drivers/tty/serial/pmac_zilog.c Lucas De Marchi 2011-03-30  305  		 * Something strange is going on with the HW
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  306  		 */
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  307  		if ((++loops) > 1000)
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  308  			goto flood;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  309  		ch = read_zsreg(uap, R0);
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  310  		if (!(ch & Rx_CH_AV))
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  311  			break;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  312  	}
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  313  
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  314  	return true;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  315   flood:
7cf82b1b65833f2 drivers/tty/serial/pmac_zilog.c Finn Thain      2011-12-06  316  	pmz_interrupt_control(uap, 0);
ec9cbe09899e36b drivers/serial/pmac_zilog.c     Finn Thain      2009-11-17  317  	pmz_error("pmz: rx irq flood !\n");
2e124b4a390ca85 drivers/tty/serial/pmac_zilog.c Jiri Slaby      2013-01-03  318  	return true;
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  319  }
^1da177e4c3f415 drivers/serial/pmac_zilog.c     Linus Torvalds  2005-04-16  320  

:::::: The code at line 255 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 21908 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-07-24  1:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-23  9:29 drivers/tty/serial/pmac_zilog.c:255:36: sparse: sparse: context imbalance in 'pmz_receive_chars' - unexpected unlock kernel test robot
2020-07-23  9:29 ` kernel test robot
2020-07-23 12:16 ` Johan Hovold
2020-07-23 12:16   ` Johan Hovold
2020-07-23 12:26   ` Andy Shevchenko
2020-07-23 12:26     ` Andy Shevchenko
2020-07-23 12:37     ` Johan Hovold
2020-07-23 12:37       ` Johan Hovold
2020-07-24  1:56 kernel test robot
2020-07-24  1:56 ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.