All of lore.kernel.org
 help / color / mirror / Atom feed
* [hare-scsi-devel:scsi-result.v1 93/170] drivers/scsi/qlogicfas408.c:263:22: warning: variable 'result' set but not used
@ 2021-09-30  4:25 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-09-30  4:25 UTC (permalink / raw)
  To: Hannes Reinecke; +Cc: kbuild-all, linux-kernel

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git scsi-result.v1
head:   8b1a0adf66803c2d24951496a97bfe401d17b777
commit: 041da41fe006ccff222ee1fc53861955577d28e9 [93/170] qlogicfac408: set SCSI result during ql_pcmd()
config: arc-allyesconfig (attached as .config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git/commit/?id=041da41fe006ccff222ee1fc53861955577d28e9
        git remote add hare-scsi-devel https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git
        git fetch --no-tags hare-scsi-devel scsi-result.v1
        git checkout 041da41fe006ccff222ee1fc53861955577d28e9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arc 

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

All warnings (new ones prefixed by >>):

   drivers/scsi/qlogicfas408.c: In function 'ql_pcmd':
>> drivers/scsi/qlogicfas408.c:263:22: warning: variable 'result' set but not used [-Wunused-but-set-variable]
     263 |         unsigned int result;    /* ultimate return result */
         |                      ^~~~~~


vim +/result +263 drivers/scsi/qlogicfas408.c

^1da177e4c3f41 Linus Torvalds  2005-04-16  254  
^1da177e4c3f41 Linus Torvalds  2005-04-16  255  /*
^1da177e4c3f41 Linus Torvalds  2005-04-16  256   *	Process scsi command - usually after interrupt 
^1da177e4c3f41 Linus Torvalds  2005-04-16  257   */
^1da177e4c3f41 Linus Torvalds  2005-04-16  258  
041da41fe006cc Hannes Reinecke 2020-12-01  259  static void ql_pcmd(struct scsi_cmnd *cmd)
^1da177e4c3f41 Linus Torvalds  2005-04-16  260  {
^1da177e4c3f41 Linus Torvalds  2005-04-16  261  	unsigned int i, j;
^1da177e4c3f41 Linus Torvalds  2005-04-16  262  	unsigned long k;
^1da177e4c3f41 Linus Torvalds  2005-04-16 @263  	unsigned int result;	/* ultimate return result */
^1da177e4c3f41 Linus Torvalds  2005-04-16  264  	unsigned int status;	/* scsi returned status */
^1da177e4c3f41 Linus Torvalds  2005-04-16  265  	unsigned int message;	/* scsi returned message */
^1da177e4c3f41 Linus Torvalds  2005-04-16  266  	unsigned int phase;	/* recorded scsi phase */
^1da177e4c3f41 Linus Torvalds  2005-04-16  267  	unsigned int reqlen;	/* total length of transfer */
^1da177e4c3f41 Linus Torvalds  2005-04-16  268  	char *buf;
^1da177e4c3f41 Linus Torvalds  2005-04-16  269  	struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
^1da177e4c3f41 Linus Torvalds  2005-04-16  270  	int qbase = priv->qbase;
^1da177e4c3f41 Linus Torvalds  2005-04-16  271  	int int_type = priv->int_type;
^1da177e4c3f41 Linus Torvalds  2005-04-16  272  
^1da177e4c3f41 Linus Torvalds  2005-04-16  273  	rtrc(1)
^1da177e4c3f41 Linus Torvalds  2005-04-16  274  	j = inb(qbase + 6);
^1da177e4c3f41 Linus Torvalds  2005-04-16  275  	i = inb(qbase + 5);
^1da177e4c3f41 Linus Torvalds  2005-04-16  276  	if (i == 0x20) {
041da41fe006cc Hannes Reinecke 2020-12-01  277  		set_host_byte(cmd, DID_NO_CONNECT);
041da41fe006cc Hannes Reinecke 2020-12-01  278  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  279  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  280  	i |= inb(qbase + 5);	/* the 0x10 bit can be set after the 0x08 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  281  	if (i != 0x18) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  282  		printk(KERN_ERR "Ql:Bad Interrupt status:%02x\n", i);
^1da177e4c3f41 Linus Torvalds  2005-04-16  283  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  284  		set_host_byte(cmd, DID_BAD_INTR);
041da41fe006cc Hannes Reinecke 2020-12-01  285  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  286  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  287  	j &= 7;			/* j = inb( qbase + 7 ) >> 5; */
^1da177e4c3f41 Linus Torvalds  2005-04-16  288  
^1da177e4c3f41 Linus Torvalds  2005-04-16  289  	/* correct status is supposed to be step 4 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  290  	/* it sometimes returns step 3 but with 0 bytes left to send */
^1da177e4c3f41 Linus Torvalds  2005-04-16  291  	/* We can try stuffing the FIFO with the max each time, but we will get a
^1da177e4c3f41 Linus Torvalds  2005-04-16  292  	   sequence of 3 if any bytes are left (but we do flush the FIFO anyway */
^1da177e4c3f41 Linus Torvalds  2005-04-16  293  
^1da177e4c3f41 Linus Torvalds  2005-04-16  294  	if (j != 3 && j != 4) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  295  		printk(KERN_ERR "Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n",
^1da177e4c3f41 Linus Torvalds  2005-04-16  296  		     j, i, inb(qbase + 7) & 0x1f);
^1da177e4c3f41 Linus Torvalds  2005-04-16  297  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  298  		set_host_byte(cmd, DID_ERROR);
041da41fe006cc Hannes Reinecke 2020-12-01  299  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  300  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  301  	result = DID_OK;
^1da177e4c3f41 Linus Torvalds  2005-04-16  302  	if (inb(qbase + 7) & 0x1f)	/* if some bytes in fifo */
^1da177e4c3f41 Linus Torvalds  2005-04-16  303  		outb(1, qbase + 3);	/* clear fifo */
^1da177e4c3f41 Linus Torvalds  2005-04-16  304  	/* note that request_bufflen is the total xfer size when sg is used */
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  305  	reqlen = scsi_bufflen(cmd);
^1da177e4c3f41 Linus Torvalds  2005-04-16  306  	/* note that it won't work if transfers > 16M are requested */
^1da177e4c3f41 Linus Torvalds  2005-04-16  307  	if (reqlen && !((phase = inb(qbase + 4)) & 6)) {	/* data phase */
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  308  		struct scatterlist *sg;
^1da177e4c3f41 Linus Torvalds  2005-04-16  309  		rtrc(2)
^1da177e4c3f41 Linus Torvalds  2005-04-16  310  		outb(reqlen, qbase);	/* low-mid xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  311  		outb(reqlen >> 8, qbase + 1);	/* low-mid xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  312  		outb(reqlen >> 16, qbase + 0xe);	/* high xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  313  		outb(0x90, qbase + 3);	/* command do xfer */
^1da177e4c3f41 Linus Torvalds  2005-04-16  314  		/* PIO pseudo DMA to buffer or sglist */
^1da177e4c3f41 Linus Torvalds  2005-04-16  315  		REG1;
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  316  
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  317  		scsi_for_each_sg(cmd, sg, scsi_sg_count(cmd), i) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  318  			if (priv->qabort) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  319  				REG0;
041da41fe006cc Hannes Reinecke 2020-12-01  320  				if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  321  					set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  322  				else
041da41fe006cc Hannes Reinecke 2020-12-01  323  					set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  324  				return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  325  			}
45711f1af6eff1 Jens Axboe      2007-10-22  326  			buf = sg_virt(sg);
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  327  			if (ql_pdma(priv, phase, buf, sg->length))
^1da177e4c3f41 Linus Torvalds  2005-04-16  328  				break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  329  		}
^1da177e4c3f41 Linus Torvalds  2005-04-16  330  		REG0;
^1da177e4c3f41 Linus Torvalds  2005-04-16  331  		rtrc(2)
^1da177e4c3f41 Linus Torvalds  2005-04-16  332  		/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  333  		 *	Wait for irq (split into second state of irq handler
^1da177e4c3f41 Linus Torvalds  2005-04-16  334  		 *	if this can take time)
^1da177e4c3f41 Linus Torvalds  2005-04-16  335  		 */
041da41fe006cc Hannes Reinecke 2020-12-01  336  		if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  337  			set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  338  			return;
041da41fe006cc Hannes Reinecke 2020-12-01  339  		}
^1da177e4c3f41 Linus Torvalds  2005-04-16  340  		k = inb(qbase + 5);	/* should be 0x10, bus service */
^1da177e4c3f41 Linus Torvalds  2005-04-16  341  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  342  
^1da177e4c3f41 Linus Torvalds  2005-04-16  343  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  344  	 *	Enter Status (and Message In) Phase
^1da177e4c3f41 Linus Torvalds  2005-04-16  345  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  346  
^1da177e4c3f41 Linus Torvalds  2005-04-16  347  	k = jiffies + WATCHDOG;
^1da177e4c3f41 Linus Torvalds  2005-04-16  348  
^1da177e4c3f41 Linus Torvalds  2005-04-16  349  	while (time_before(jiffies, k) && !priv->qabort &&
^1da177e4c3f41 Linus Torvalds  2005-04-16  350  						!(inb(qbase + 4) & 6))
^1da177e4c3f41 Linus Torvalds  2005-04-16  351  		cpu_relax();	/* wait for status phase */
^1da177e4c3f41 Linus Torvalds  2005-04-16  352  
^1da177e4c3f41 Linus Torvalds  2005-04-16  353  	if (time_after_eq(jiffies, k)) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  354  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  355  		set_host_byte(cmd, DID_TIME_OUT);
041da41fe006cc Hannes Reinecke 2020-12-01  356  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  357  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  358  
^1da177e4c3f41 Linus Torvalds  2005-04-16  359  	/* FIXME: timeout ?? */
^1da177e4c3f41 Linus Torvalds  2005-04-16  360  	while (inb(qbase + 5))
^1da177e4c3f41 Linus Torvalds  2005-04-16  361  		cpu_relax();	/* clear pending ints */
^1da177e4c3f41 Linus Torvalds  2005-04-16  362  
041da41fe006cc Hannes Reinecke 2020-12-01  363  	if (priv->qabort) {
041da41fe006cc Hannes Reinecke 2020-12-01  364  		if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  365  			set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  366  		else
041da41fe006cc Hannes Reinecke 2020-12-01  367  			set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  368  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  369  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  370  	outb(0x11, qbase + 3);	/* get status and message */
041da41fe006cc Hannes Reinecke 2020-12-01  371  	if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  372  		set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  373  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  374  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  375  	i = inb(qbase + 5);	/* get chip irq stat */
^1da177e4c3f41 Linus Torvalds  2005-04-16  376  	j = inb(qbase + 7) & 0x1f;	/* and bytes rec'd */
^1da177e4c3f41 Linus Torvalds  2005-04-16  377  	status = inb(qbase + 2);
^1da177e4c3f41 Linus Torvalds  2005-04-16  378  	message = inb(qbase + 2);
^1da177e4c3f41 Linus Torvalds  2005-04-16  379  
^1da177e4c3f41 Linus Torvalds  2005-04-16  380  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  381  	 *	Should get function complete int if Status and message, else 
^1da177e4c3f41 Linus Torvalds  2005-04-16  382  	 *	bus serv if only status 
^1da177e4c3f41 Linus Torvalds  2005-04-16  383  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  384  	if (!((i == 8 && j == 2) || (i == 0x10 && j == 1))) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  385  		printk(KERN_ERR "Ql:Error during status phase, int=%02X, %d bytes recd\n", i, j);
041da41fe006cc Hannes Reinecke 2020-12-01  386  		set_host_byte(cmd, DID_ERROR);
^1da177e4c3f41 Linus Torvalds  2005-04-16  387  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  388  	outb(0x12, qbase + 3);	/* done, disconnect */
^1da177e4c3f41 Linus Torvalds  2005-04-16  389  	rtrc(1)
041da41fe006cc Hannes Reinecke 2020-12-01  390  	if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  391  		set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  392  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  393  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  394  
^1da177e4c3f41 Linus Torvalds  2005-04-16  395  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  396  	 *	Should get bus service interrupt and disconnect interrupt 
^1da177e4c3f41 Linus Torvalds  2005-04-16  397  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  398  
^1da177e4c3f41 Linus Torvalds  2005-04-16  399  	i = inb(qbase + 5);	/* should be bus service */
^1da177e4c3f41 Linus Torvalds  2005-04-16  400  	while (!priv->qabort && ((i & 0x20) != 0x20)) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  401  		barrier();
^1da177e4c3f41 Linus Torvalds  2005-04-16  402  		cpu_relax();
^1da177e4c3f41 Linus Torvalds  2005-04-16  403  		i |= inb(qbase + 5);
^1da177e4c3f41 Linus Torvalds  2005-04-16  404  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  405  	rtrc(0)
^1da177e4c3f41 Linus Torvalds  2005-04-16  406  
041da41fe006cc Hannes Reinecke 2020-12-01  407  	if (priv->qabort) {
041da41fe006cc Hannes Reinecke 2020-12-01  408  		if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  409  			set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  410  		else
041da41fe006cc Hannes Reinecke 2020-12-01  411  			set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  412  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  413  	}
041da41fe006cc Hannes Reinecke 2020-12-01  414  	set_msg_byte(cmd, message);
041da41fe006cc Hannes Reinecke 2020-12-01  415  	set_status_byte(cmd, status);
^1da177e4c3f41 Linus Torvalds  2005-04-16  416  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  417  

:::::: The code at line 263 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: 66470 bytes --]

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

* [hare-scsi-devel:scsi-result.v1 93/170] drivers/scsi/qlogicfas408.c:263:22: warning: variable 'result' set but not used
@ 2021-09-30  4:25 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-09-30  4:25 UTC (permalink / raw)
  To: kbuild-all

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git scsi-result.v1
head:   8b1a0adf66803c2d24951496a97bfe401d17b777
commit: 041da41fe006ccff222ee1fc53861955577d28e9 [93/170] qlogicfac408: set SCSI result during ql_pcmd()
config: arc-allyesconfig (attached as .config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git/commit/?id=041da41fe006ccff222ee1fc53861955577d28e9
        git remote add hare-scsi-devel https://git.kernel.org/pub/scm/linux/kernel/git/hare/scsi-devel.git
        git fetch --no-tags hare-scsi-devel scsi-result.v1
        git checkout 041da41fe006ccff222ee1fc53861955577d28e9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arc 

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

All warnings (new ones prefixed by >>):

   drivers/scsi/qlogicfas408.c: In function 'ql_pcmd':
>> drivers/scsi/qlogicfas408.c:263:22: warning: variable 'result' set but not used [-Wunused-but-set-variable]
     263 |         unsigned int result;    /* ultimate return result */
         |                      ^~~~~~


vim +/result +263 drivers/scsi/qlogicfas408.c

^1da177e4c3f41 Linus Torvalds  2005-04-16  254  
^1da177e4c3f41 Linus Torvalds  2005-04-16  255  /*
^1da177e4c3f41 Linus Torvalds  2005-04-16  256   *	Process scsi command - usually after interrupt 
^1da177e4c3f41 Linus Torvalds  2005-04-16  257   */
^1da177e4c3f41 Linus Torvalds  2005-04-16  258  
041da41fe006cc Hannes Reinecke 2020-12-01  259  static void ql_pcmd(struct scsi_cmnd *cmd)
^1da177e4c3f41 Linus Torvalds  2005-04-16  260  {
^1da177e4c3f41 Linus Torvalds  2005-04-16  261  	unsigned int i, j;
^1da177e4c3f41 Linus Torvalds  2005-04-16  262  	unsigned long k;
^1da177e4c3f41 Linus Torvalds  2005-04-16 @263  	unsigned int result;	/* ultimate return result */
^1da177e4c3f41 Linus Torvalds  2005-04-16  264  	unsigned int status;	/* scsi returned status */
^1da177e4c3f41 Linus Torvalds  2005-04-16  265  	unsigned int message;	/* scsi returned message */
^1da177e4c3f41 Linus Torvalds  2005-04-16  266  	unsigned int phase;	/* recorded scsi phase */
^1da177e4c3f41 Linus Torvalds  2005-04-16  267  	unsigned int reqlen;	/* total length of transfer */
^1da177e4c3f41 Linus Torvalds  2005-04-16  268  	char *buf;
^1da177e4c3f41 Linus Torvalds  2005-04-16  269  	struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
^1da177e4c3f41 Linus Torvalds  2005-04-16  270  	int qbase = priv->qbase;
^1da177e4c3f41 Linus Torvalds  2005-04-16  271  	int int_type = priv->int_type;
^1da177e4c3f41 Linus Torvalds  2005-04-16  272  
^1da177e4c3f41 Linus Torvalds  2005-04-16  273  	rtrc(1)
^1da177e4c3f41 Linus Torvalds  2005-04-16  274  	j = inb(qbase + 6);
^1da177e4c3f41 Linus Torvalds  2005-04-16  275  	i = inb(qbase + 5);
^1da177e4c3f41 Linus Torvalds  2005-04-16  276  	if (i == 0x20) {
041da41fe006cc Hannes Reinecke 2020-12-01  277  		set_host_byte(cmd, DID_NO_CONNECT);
041da41fe006cc Hannes Reinecke 2020-12-01  278  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  279  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  280  	i |= inb(qbase + 5);	/* the 0x10 bit can be set after the 0x08 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  281  	if (i != 0x18) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  282  		printk(KERN_ERR "Ql:Bad Interrupt status:%02x\n", i);
^1da177e4c3f41 Linus Torvalds  2005-04-16  283  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  284  		set_host_byte(cmd, DID_BAD_INTR);
041da41fe006cc Hannes Reinecke 2020-12-01  285  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  286  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  287  	j &= 7;			/* j = inb( qbase + 7 ) >> 5; */
^1da177e4c3f41 Linus Torvalds  2005-04-16  288  
^1da177e4c3f41 Linus Torvalds  2005-04-16  289  	/* correct status is supposed to be step 4 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  290  	/* it sometimes returns step 3 but with 0 bytes left to send */
^1da177e4c3f41 Linus Torvalds  2005-04-16  291  	/* We can try stuffing the FIFO with the max each time, but we will get a
^1da177e4c3f41 Linus Torvalds  2005-04-16  292  	   sequence of 3 if any bytes are left (but we do flush the FIFO anyway */
^1da177e4c3f41 Linus Torvalds  2005-04-16  293  
^1da177e4c3f41 Linus Torvalds  2005-04-16  294  	if (j != 3 && j != 4) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  295  		printk(KERN_ERR "Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n",
^1da177e4c3f41 Linus Torvalds  2005-04-16  296  		     j, i, inb(qbase + 7) & 0x1f);
^1da177e4c3f41 Linus Torvalds  2005-04-16  297  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  298  		set_host_byte(cmd, DID_ERROR);
041da41fe006cc Hannes Reinecke 2020-12-01  299  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  300  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  301  	result = DID_OK;
^1da177e4c3f41 Linus Torvalds  2005-04-16  302  	if (inb(qbase + 7) & 0x1f)	/* if some bytes in fifo */
^1da177e4c3f41 Linus Torvalds  2005-04-16  303  		outb(1, qbase + 3);	/* clear fifo */
^1da177e4c3f41 Linus Torvalds  2005-04-16  304  	/* note that request_bufflen is the total xfer size when sg is used */
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  305  	reqlen = scsi_bufflen(cmd);
^1da177e4c3f41 Linus Torvalds  2005-04-16  306  	/* note that it won't work if transfers > 16M are requested */
^1da177e4c3f41 Linus Torvalds  2005-04-16  307  	if (reqlen && !((phase = inb(qbase + 4)) & 6)) {	/* data phase */
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  308  		struct scatterlist *sg;
^1da177e4c3f41 Linus Torvalds  2005-04-16  309  		rtrc(2)
^1da177e4c3f41 Linus Torvalds  2005-04-16  310  		outb(reqlen, qbase);	/* low-mid xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  311  		outb(reqlen >> 8, qbase + 1);	/* low-mid xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  312  		outb(reqlen >> 16, qbase + 0xe);	/* high xfer cnt */
^1da177e4c3f41 Linus Torvalds  2005-04-16  313  		outb(0x90, qbase + 3);	/* command do xfer */
^1da177e4c3f41 Linus Torvalds  2005-04-16  314  		/* PIO pseudo DMA to buffer or sglist */
^1da177e4c3f41 Linus Torvalds  2005-04-16  315  		REG1;
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  316  
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  317  		scsi_for_each_sg(cmd, sg, scsi_sg_count(cmd), i) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  318  			if (priv->qabort) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  319  				REG0;
041da41fe006cc Hannes Reinecke 2020-12-01  320  				if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  321  					set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  322  				else
041da41fe006cc Hannes Reinecke 2020-12-01  323  					set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  324  				return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  325  			}
45711f1af6eff1 Jens Axboe      2007-10-22  326  			buf = sg_virt(sg);
bc1ebfba1a3a27 FUJITA Tomonori 2007-05-14  327  			if (ql_pdma(priv, phase, buf, sg->length))
^1da177e4c3f41 Linus Torvalds  2005-04-16  328  				break;
^1da177e4c3f41 Linus Torvalds  2005-04-16  329  		}
^1da177e4c3f41 Linus Torvalds  2005-04-16  330  		REG0;
^1da177e4c3f41 Linus Torvalds  2005-04-16  331  		rtrc(2)
^1da177e4c3f41 Linus Torvalds  2005-04-16  332  		/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  333  		 *	Wait for irq (split into second state of irq handler
^1da177e4c3f41 Linus Torvalds  2005-04-16  334  		 *	if this can take time)
^1da177e4c3f41 Linus Torvalds  2005-04-16  335  		 */
041da41fe006cc Hannes Reinecke 2020-12-01  336  		if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  337  			set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  338  			return;
041da41fe006cc Hannes Reinecke 2020-12-01  339  		}
^1da177e4c3f41 Linus Torvalds  2005-04-16  340  		k = inb(qbase + 5);	/* should be 0x10, bus service */
^1da177e4c3f41 Linus Torvalds  2005-04-16  341  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  342  
^1da177e4c3f41 Linus Torvalds  2005-04-16  343  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  344  	 *	Enter Status (and Message In) Phase
^1da177e4c3f41 Linus Torvalds  2005-04-16  345  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  346  
^1da177e4c3f41 Linus Torvalds  2005-04-16  347  	k = jiffies + WATCHDOG;
^1da177e4c3f41 Linus Torvalds  2005-04-16  348  
^1da177e4c3f41 Linus Torvalds  2005-04-16  349  	while (time_before(jiffies, k) && !priv->qabort &&
^1da177e4c3f41 Linus Torvalds  2005-04-16  350  						!(inb(qbase + 4) & 6))
^1da177e4c3f41 Linus Torvalds  2005-04-16  351  		cpu_relax();	/* wait for status phase */
^1da177e4c3f41 Linus Torvalds  2005-04-16  352  
^1da177e4c3f41 Linus Torvalds  2005-04-16  353  	if (time_after_eq(jiffies, k)) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  354  		ql_zap(priv);
041da41fe006cc Hannes Reinecke 2020-12-01  355  		set_host_byte(cmd, DID_TIME_OUT);
041da41fe006cc Hannes Reinecke 2020-12-01  356  		return;
^1da177e4c3f41 Linus Torvalds  2005-04-16  357  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  358  
^1da177e4c3f41 Linus Torvalds  2005-04-16  359  	/* FIXME: timeout ?? */
^1da177e4c3f41 Linus Torvalds  2005-04-16  360  	while (inb(qbase + 5))
^1da177e4c3f41 Linus Torvalds  2005-04-16  361  		cpu_relax();	/* clear pending ints */
^1da177e4c3f41 Linus Torvalds  2005-04-16  362  
041da41fe006cc Hannes Reinecke 2020-12-01  363  	if (priv->qabort) {
041da41fe006cc Hannes Reinecke 2020-12-01  364  		if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  365  			set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  366  		else
041da41fe006cc Hannes Reinecke 2020-12-01  367  			set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  368  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  369  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  370  	outb(0x11, qbase + 3);	/* get status and message */
041da41fe006cc Hannes Reinecke 2020-12-01  371  	if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  372  		set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  373  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  374  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  375  	i = inb(qbase + 5);	/* get chip irq stat */
^1da177e4c3f41 Linus Torvalds  2005-04-16  376  	j = inb(qbase + 7) & 0x1f;	/* and bytes rec'd */
^1da177e4c3f41 Linus Torvalds  2005-04-16  377  	status = inb(qbase + 2);
^1da177e4c3f41 Linus Torvalds  2005-04-16  378  	message = inb(qbase + 2);
^1da177e4c3f41 Linus Torvalds  2005-04-16  379  
^1da177e4c3f41 Linus Torvalds  2005-04-16  380  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  381  	 *	Should get function complete int if Status and message, else 
^1da177e4c3f41 Linus Torvalds  2005-04-16  382  	 *	bus serv if only status 
^1da177e4c3f41 Linus Torvalds  2005-04-16  383  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  384  	if (!((i == 8 && j == 2) || (i == 0x10 && j == 1))) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  385  		printk(KERN_ERR "Ql:Error during status phase, int=%02X, %d bytes recd\n", i, j);
041da41fe006cc Hannes Reinecke 2020-12-01  386  		set_host_byte(cmd, DID_ERROR);
^1da177e4c3f41 Linus Torvalds  2005-04-16  387  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  388  	outb(0x12, qbase + 3);	/* done, disconnect */
^1da177e4c3f41 Linus Torvalds  2005-04-16  389  	rtrc(1)
041da41fe006cc Hannes Reinecke 2020-12-01  390  	if ((k = ql_wai(priv))) {
041da41fe006cc Hannes Reinecke 2020-12-01  391  		set_host_byte(cmd, k);
041da41fe006cc Hannes Reinecke 2020-12-01  392  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  393  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  394  
^1da177e4c3f41 Linus Torvalds  2005-04-16  395  	/*
^1da177e4c3f41 Linus Torvalds  2005-04-16  396  	 *	Should get bus service interrupt and disconnect interrupt 
^1da177e4c3f41 Linus Torvalds  2005-04-16  397  	 */
^1da177e4c3f41 Linus Torvalds  2005-04-16  398  
^1da177e4c3f41 Linus Torvalds  2005-04-16  399  	i = inb(qbase + 5);	/* should be bus service */
^1da177e4c3f41 Linus Torvalds  2005-04-16  400  	while (!priv->qabort && ((i & 0x20) != 0x20)) {
^1da177e4c3f41 Linus Torvalds  2005-04-16  401  		barrier();
^1da177e4c3f41 Linus Torvalds  2005-04-16  402  		cpu_relax();
^1da177e4c3f41 Linus Torvalds  2005-04-16  403  		i |= inb(qbase + 5);
^1da177e4c3f41 Linus Torvalds  2005-04-16  404  	}
^1da177e4c3f41 Linus Torvalds  2005-04-16  405  	rtrc(0)
^1da177e4c3f41 Linus Torvalds  2005-04-16  406  
041da41fe006cc Hannes Reinecke 2020-12-01  407  	if (priv->qabort) {
041da41fe006cc Hannes Reinecke 2020-12-01  408  		if (priv->qabort == 1)
041da41fe006cc Hannes Reinecke 2020-12-01  409  			set_host_byte(cmd, DID_ABORT);
041da41fe006cc Hannes Reinecke 2020-12-01  410  		else
041da41fe006cc Hannes Reinecke 2020-12-01  411  			set_host_byte(cmd, DID_RESET);
041da41fe006cc Hannes Reinecke 2020-12-01  412  		return;
041da41fe006cc Hannes Reinecke 2020-12-01  413  	}
041da41fe006cc Hannes Reinecke 2020-12-01  414  	set_msg_byte(cmd, message);
041da41fe006cc Hannes Reinecke 2020-12-01  415  	set_status_byte(cmd, status);
^1da177e4c3f41 Linus Torvalds  2005-04-16  416  }
^1da177e4c3f41 Linus Torvalds  2005-04-16  417  

:::::: The code at line 263 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: 66470 bytes --]

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

end of thread, other threads:[~2021-09-30  4:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-30  4:25 [hare-scsi-devel:scsi-result.v1 93/170] drivers/scsi/qlogicfas408.c:263:22: warning: variable 'result' set but not used kernel test robot
2021-09-30  4:25 ` 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.