Re: drivers/accessibility/speakup/serialio.c:48:19: warning: variable 'quot' set but not used
From: Samuel Thibault
Date: Mon Nov 16 2020 - 14:01:50 EST
Hello Ben,
A long time ago you added a dependency for speakup drivers on
CONFIG_ISA, and you also added || COMPILE_TEST as an alternative.
It seems that some platform portability tests then think they should
be able to build it, even if they don't enable ISA, but then we are
getting warnings, or even errors, depending on the compatibility macros
in <asm/io.h> in the !ISA case (here, the parisc compatibility macros do
not consume their parameter).
Perhaps we should rather use
depends on ISA || (X86 && COMPILE_TEST)
?
so that we have compile testing on x86 only (where the inb/outb macros
always behave fine) to avoid such issues on other archs?
Or we tell the architecture maintainers to fix their out macros into
consuming their parameters?
Samuel
kernel test robot, le lun. 16 nov. 2020 09:54:50 +0800, a ecrit:
> First bad commit (maybe != root cause):
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: a6af8718b98e1cd37a9ea9a02269c79577fc9138
> commit: 2067fd92d75b6d9085a43caf050bca5d88c491b8 staging/speakup: Move out of staging
> date: 4 months ago
> config: parisc-randconfig-r023-20201116 (attached as .config)
> compiler: hppa-linux-gcc (GCC) 9.3.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/torvalds/linux.git/commit/?id=2067fd92d75b6d9085a43caf050bca5d88c491b8
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 2067fd92d75b6d9085a43caf050bca5d88c491b8
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>):
>
> drivers/accessibility/speakup/serialio.c: In function 'spk_serial_init':
> >> drivers/accessibility/speakup/serialio.c:48:19: warning: variable 'quot' set but not used [-Wunused-but-set-variable]
> 48 | int baud = 9600, quot = 0;
> | ^~~~
> drivers/accessibility/speakup/serialio.c: In function 'spk_serial_tiocmset':
> drivers/accessibility/speakup/serialio.c:165:6: warning: unused variable 'old' [-Wunused-variable]
> 165 | int old = inb(speakup_info.port_tts + UART_MCR);
> | ^~~
>
> vim +/quot +48 drivers/accessibility/speakup/serialio.c
>
> 1e441594e509c3 drivers/staging/speakup/serialio.c Okash Khawaja 2017-03-14 45
> 3ee0017e03cd79 drivers/staging/speakup/serialio.c Jiri Slaby 2012-03-05 46 const struct old_serial_port *spk_serial_init(int index)
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 47 {
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 @48 int baud = 9600, quot = 0;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 49 unsigned int cval = 0;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 50 int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8;
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 51 const struct old_serial_port *ser;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 52 int err;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 53
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 54 if (index >= ARRAY_SIZE(rs_table)) {
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 55 pr_info("no port info for ttyS%d\n", index);
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 56 return NULL;
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 57 }
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 58 ser = rs_table + index;
> 327b882d3bcc1f drivers/staging/speakup/serialio.c Samuel Thibault 2016-01-15 59
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 60 /* Divisor, bytesize and parity */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 61 quot = ser->baud_base / baud;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 62 cval = cflag & (CSIZE | CSTOPB);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 63 #if defined(__powerpc__) || defined(__alpha__)
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 64 cval >>= 8;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 65 #else /* !__powerpc__ && !__alpha__ */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 66 cval >>= 4;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 67 #endif /* !__powerpc__ && !__alpha__ */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 68 if (cflag & PARENB)
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 69 cval |= UART_LCR_PARITY;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 70 if (!(cflag & PARODD))
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 71 cval |= UART_LCR_EPAR;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 72 if (synth_request_region(ser->port, 8)) {
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 73 /* try to take it back. */
> 3a046c19158e89 drivers/staging/speakup/serialio.c Keerthimai Janarthanan 2014-03-18 74 pr_info("Ports not available, trying to steal them\n");
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 75 __release_region(&ioport_resource, ser->port, 8);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 76 err = synth_request_region(ser->port, 8);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 77 if (err) {
> 3ee0017e03cd79 drivers/staging/speakup/serialio.c Jiri Slaby 2012-03-05 78 pr_warn("Unable to allocate port at %x, errno %i",
> baf9ac9ff8864c drivers/staging/speakup/serialio.c William Hubbs 2010-10-15 79 ser->port, err);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 80 return NULL;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 81 }
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 82 }
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 83
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 84 /* Disable UART interrupts, set DTR and RTS high
> 13d825edd4441d drivers/staging/speakup/serialio.c Aleksei Fedotov 2015-08-14 85 * and set speed.
> 13d825edd4441d drivers/staging/speakup/serialio.c Aleksei Fedotov 2015-08-14 86 */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 87 outb(cval | UART_LCR_DLAB, ser->port + UART_LCR); /* set DLAB */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 88 outb(quot & 0xff, ser->port + UART_DLL); /* LS of divisor */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 89 outb(quot >> 8, ser->port + UART_DLM); /* MS of divisor */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 90 outb(cval, ser->port + UART_LCR); /* reset DLAB */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 91
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 92 /* Turn off Interrupts */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 93 outb(0, ser->port + UART_IER);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 94 outb(UART_MCR_DTR | UART_MCR_RTS, ser->port + UART_MCR);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 95
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 96 /* If we read 0xff from the LSR, there is no UART here. */
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 97 if (inb(ser->port + UART_LSR) == 0xff) {
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 98 synth_release_region(ser->port, 8);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 99 serstate = NULL;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 100 return NULL;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 101 }
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 102
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 103 mdelay(1);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 104 speakup_info.port_tts = ser->port;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 105 serstate = ser;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 106
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 107 start_serial_interrupt(ser->irq);
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 108
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 109 return ser;
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 110 }
> c6e3fd22cd5383 drivers/staging/speakup/serialio.c William Hubbs 2010-10-07 111
>
> :::::: The code at line 48 was first introduced by commit
> :::::: c6e3fd22cd538365bfeb82997d5b89562e077d42 Staging: add speakup to the staging directory
>
> :::::: TO: William Hubbs <w.d.hubbs@xxxxxxxxx>
> :::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxx>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx