All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: dillon.minfei@gmail.com, gregkh@linuxfoundation.org,
	jirislaby@kernel.org, mcoquelin.stm32@gmail.com,
	alexandre.torgue@foss.st.com
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	linux-serial@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	dillon min <dillon.minfei@gmail.com>
Subject: Re: [PATCH] serial: stm32: optimize spin lock usage
Date: Mon, 12 Apr 2021 15:23:56 +0800	[thread overview]
Message-ID: <202104121526.gm7LWDAv-lkp@intel.com> (raw)
In-Reply-To: <1618202061-8243-1-git-send-email-dillon.minfei@gmail.com>

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

Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on stm32/stm32-next]
[also build test WARNING on usb/usb-testing v5.12-rc7]
[cannot apply to tty/tty-testing next-20210409]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
base:   https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git stm32-next
config: riscv-randconfig-r034-20210412 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9829f5e6b1bca9b61efc629770d28bb9014dec45)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
        git checkout a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 

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/tty/serial/stm32-usart.c:280:39: warning: variable 'flags' is uninitialized when used here [-Wuninitialized]
                   spin_unlock_irqrestore(&port->lock, flags);
                                                       ^~~~~
   drivers/tty/serial/stm32-usart.c:217:24: note: initialize the variable 'flags' to silence this warning
           unsigned long c, flags;
                                 ^
                                  = 0
   1 warning generated.


vim +/flags +280 drivers/tty/serial/stm32-usart.c

   211	
   212	static void stm32_usart_receive_chars(struct uart_port *port, bool threaded)
   213	{
   214		struct tty_port *tport = &port->state->port;
   215		struct stm32_port *stm32_port = to_stm32_port(port);
   216		const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
   217		unsigned long c, flags;
   218		u32 sr;
   219		char flag;
   220	
   221		if (irqd_is_wakeup_set(irq_get_irq_data(port->irq)))
   222			pm_wakeup_event(tport->tty->dev, 0);
   223	
   224		while (stm32_usart_pending_rx(port, &sr, &stm32_port->last_res,
   225					      threaded)) {
   226			sr |= USART_SR_DUMMY_RX;
   227			flag = TTY_NORMAL;
   228	
   229			/*
   230			 * Status bits has to be cleared before reading the RDR:
   231			 * In FIFO mode, reading the RDR will pop the next data
   232			 * (if any) along with its status bits into the SR.
   233			 * Not doing so leads to misalignement between RDR and SR,
   234			 * and clear status bits of the next rx data.
   235			 *
   236			 * Clear errors flags for stm32f7 and stm32h7 compatible
   237			 * devices. On stm32f4 compatible devices, the error bit is
   238			 * cleared by the sequence [read SR - read DR].
   239			 */
   240			if ((sr & USART_SR_ERR_MASK) && ofs->icr != UNDEF_REG)
   241				writel_relaxed(sr & USART_SR_ERR_MASK,
   242					       port->membase + ofs->icr);
   243	
   244			c = stm32_usart_get_char(port, &sr, &stm32_port->last_res);
   245			port->icount.rx++;
   246			if (sr & USART_SR_ERR_MASK) {
   247				if (sr & USART_SR_ORE) {
   248					port->icount.overrun++;
   249				} else if (sr & USART_SR_PE) {
   250					port->icount.parity++;
   251				} else if (sr & USART_SR_FE) {
   252					/* Break detection if character is null */
   253					if (!c) {
   254						port->icount.brk++;
   255						if (uart_handle_break(port))
   256							continue;
   257					} else {
   258						port->icount.frame++;
   259					}
   260				}
   261	
   262				sr &= port->read_status_mask;
   263	
   264				if (sr & USART_SR_PE) {
   265					flag = TTY_PARITY;
   266				} else if (sr & USART_SR_FE) {
   267					if (!c)
   268						flag = TTY_BREAK;
   269					else
   270						flag = TTY_FRAME;
   271				}
   272			}
   273	
   274			if (uart_handle_sysrq_char(port, c))
   275				continue;
   276			uart_insert_char(port, sr, USART_SR_ORE, c, flag);
   277		}
   278	
   279		if (threaded)
 > 280			spin_unlock_irqrestore(&port->lock, flags);
   281		else
   282			spin_unlock(&port->lock);
   283	
   284		tty_flip_buffer_push(tport);
   285	
   286		if (threaded)
   287			spin_lock_irqsave(&port->lock, flags);
   288		else
   289			spin_lock(&port->lock);
   290	}
   291	

---
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: 36623 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: dillon.minfei@gmail.com, gregkh@linuxfoundation.org,
	jirislaby@kernel.org, mcoquelin.stm32@gmail.com,
	alexandre.torgue@foss.st.com
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	linux-serial@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	dillon min <dillon.minfei@gmail.com>
Subject: Re: [PATCH] serial: stm32: optimize spin lock usage
Date: Mon, 12 Apr 2021 15:23:56 +0800	[thread overview]
Message-ID: <202104121526.gm7LWDAv-lkp@intel.com> (raw)
In-Reply-To: <1618202061-8243-1-git-send-email-dillon.minfei@gmail.com>

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

Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on stm32/stm32-next]
[also build test WARNING on usb/usb-testing v5.12-rc7]
[cannot apply to tty/tty-testing next-20210409]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
base:   https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git stm32-next
config: riscv-randconfig-r034-20210412 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9829f5e6b1bca9b61efc629770d28bb9014dec45)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
        git checkout a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 

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/tty/serial/stm32-usart.c:280:39: warning: variable 'flags' is uninitialized when used here [-Wuninitialized]
                   spin_unlock_irqrestore(&port->lock, flags);
                                                       ^~~~~
   drivers/tty/serial/stm32-usart.c:217:24: note: initialize the variable 'flags' to silence this warning
           unsigned long c, flags;
                                 ^
                                  = 0
   1 warning generated.


vim +/flags +280 drivers/tty/serial/stm32-usart.c

   211	
   212	static void stm32_usart_receive_chars(struct uart_port *port, bool threaded)
   213	{
   214		struct tty_port *tport = &port->state->port;
   215		struct stm32_port *stm32_port = to_stm32_port(port);
   216		const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
   217		unsigned long c, flags;
   218		u32 sr;
   219		char flag;
   220	
   221		if (irqd_is_wakeup_set(irq_get_irq_data(port->irq)))
   222			pm_wakeup_event(tport->tty->dev, 0);
   223	
   224		while (stm32_usart_pending_rx(port, &sr, &stm32_port->last_res,
   225					      threaded)) {
   226			sr |= USART_SR_DUMMY_RX;
   227			flag = TTY_NORMAL;
   228	
   229			/*
   230			 * Status bits has to be cleared before reading the RDR:
   231			 * In FIFO mode, reading the RDR will pop the next data
   232			 * (if any) along with its status bits into the SR.
   233			 * Not doing so leads to misalignement between RDR and SR,
   234			 * and clear status bits of the next rx data.
   235			 *
   236			 * Clear errors flags for stm32f7 and stm32h7 compatible
   237			 * devices. On stm32f4 compatible devices, the error bit is
   238			 * cleared by the sequence [read SR - read DR].
   239			 */
   240			if ((sr & USART_SR_ERR_MASK) && ofs->icr != UNDEF_REG)
   241				writel_relaxed(sr & USART_SR_ERR_MASK,
   242					       port->membase + ofs->icr);
   243	
   244			c = stm32_usart_get_char(port, &sr, &stm32_port->last_res);
   245			port->icount.rx++;
   246			if (sr & USART_SR_ERR_MASK) {
   247				if (sr & USART_SR_ORE) {
   248					port->icount.overrun++;
   249				} else if (sr & USART_SR_PE) {
   250					port->icount.parity++;
   251				} else if (sr & USART_SR_FE) {
   252					/* Break detection if character is null */
   253					if (!c) {
   254						port->icount.brk++;
   255						if (uart_handle_break(port))
   256							continue;
   257					} else {
   258						port->icount.frame++;
   259					}
   260				}
   261	
   262				sr &= port->read_status_mask;
   263	
   264				if (sr & USART_SR_PE) {
   265					flag = TTY_PARITY;
   266				} else if (sr & USART_SR_FE) {
   267					if (!c)
   268						flag = TTY_BREAK;
   269					else
   270						flag = TTY_FRAME;
   271				}
   272			}
   273	
   274			if (uart_handle_sysrq_char(port, c))
   275				continue;
   276			uart_insert_char(port, sr, USART_SR_ORE, c, flag);
   277		}
   278	
   279		if (threaded)
 > 280			spin_unlock_irqrestore(&port->lock, flags);
   281		else
   282			spin_unlock(&port->lock);
   283	
   284		tty_flip_buffer_push(tport);
   285	
   286		if (threaded)
   287			spin_lock_irqsave(&port->lock, flags);
   288		else
   289			spin_lock(&port->lock);
   290	}
   291	

---
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: 36623 bytes --]

[-- Attachment #3: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] serial: stm32: optimize spin lock usage
Date: Mon, 12 Apr 2021 15:23:56 +0800	[thread overview]
Message-ID: <202104121526.gm7LWDAv-lkp@intel.com> (raw)
In-Reply-To: <1618202061-8243-1-git-send-email-dillon.minfei@gmail.com>

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

Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on stm32/stm32-next]
[also build test WARNING on usb/usb-testing v5.12-rc7]
[cannot apply to tty/tty-testing next-20210409]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
base:   https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git stm32-next
config: riscv-randconfig-r034-20210412 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9829f5e6b1bca9b61efc629770d28bb9014dec45)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review dillon-minfei-gmail-com/serial-stm32-optimize-spin-lock-usage/20210412-123607
        git checkout a0e81ae10c46f768437d61cd3a3dfd4d1250b375
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 

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/tty/serial/stm32-usart.c:280:39: warning: variable 'flags' is uninitialized when used here [-Wuninitialized]
                   spin_unlock_irqrestore(&port->lock, flags);
                                                       ^~~~~
   drivers/tty/serial/stm32-usart.c:217:24: note: initialize the variable 'flags' to silence this warning
           unsigned long c, flags;
                                 ^
                                  = 0
   1 warning generated.


vim +/flags +280 drivers/tty/serial/stm32-usart.c

   211	
   212	static void stm32_usart_receive_chars(struct uart_port *port, bool threaded)
   213	{
   214		struct tty_port *tport = &port->state->port;
   215		struct stm32_port *stm32_port = to_stm32_port(port);
   216		const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;
   217		unsigned long c, flags;
   218		u32 sr;
   219		char flag;
   220	
   221		if (irqd_is_wakeup_set(irq_get_irq_data(port->irq)))
   222			pm_wakeup_event(tport->tty->dev, 0);
   223	
   224		while (stm32_usart_pending_rx(port, &sr, &stm32_port->last_res,
   225					      threaded)) {
   226			sr |= USART_SR_DUMMY_RX;
   227			flag = TTY_NORMAL;
   228	
   229			/*
   230			 * Status bits has to be cleared before reading the RDR:
   231			 * In FIFO mode, reading the RDR will pop the next data
   232			 * (if any) along with its status bits into the SR.
   233			 * Not doing so leads to misalignement between RDR and SR,
   234			 * and clear status bits of the next rx data.
   235			 *
   236			 * Clear errors flags for stm32f7 and stm32h7 compatible
   237			 * devices. On stm32f4 compatible devices, the error bit is
   238			 * cleared by the sequence [read SR - read DR].
   239			 */
   240			if ((sr & USART_SR_ERR_MASK) && ofs->icr != UNDEF_REG)
   241				writel_relaxed(sr & USART_SR_ERR_MASK,
   242					       port->membase + ofs->icr);
   243	
   244			c = stm32_usart_get_char(port, &sr, &stm32_port->last_res);
   245			port->icount.rx++;
   246			if (sr & USART_SR_ERR_MASK) {
   247				if (sr & USART_SR_ORE) {
   248					port->icount.overrun++;
   249				} else if (sr & USART_SR_PE) {
   250					port->icount.parity++;
   251				} else if (sr & USART_SR_FE) {
   252					/* Break detection if character is null */
   253					if (!c) {
   254						port->icount.brk++;
   255						if (uart_handle_break(port))
   256							continue;
   257					} else {
   258						port->icount.frame++;
   259					}
   260				}
   261	
   262				sr &= port->read_status_mask;
   263	
   264				if (sr & USART_SR_PE) {
   265					flag = TTY_PARITY;
   266				} else if (sr & USART_SR_FE) {
   267					if (!c)
   268						flag = TTY_BREAK;
   269					else
   270						flag = TTY_FRAME;
   271				}
   272			}
   273	
   274			if (uart_handle_sysrq_char(port, c))
   275				continue;
   276			uart_insert_char(port, sr, USART_SR_ORE, c, flag);
   277		}
   278	
   279		if (threaded)
 > 280			spin_unlock_irqrestore(&port->lock, flags);
   281		else
   282			spin_unlock(&port->lock);
   283	
   284		tty_flip_buffer_push(tport);
   285	
   286		if (threaded)
   287			spin_lock_irqsave(&port->lock, flags);
   288		else
   289			spin_lock(&port->lock);
   290	}
   291	

---
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: 36623 bytes --]

  parent reply	other threads:[~2021-04-12  7:25 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12  4:34 [PATCH] serial: stm32: optimize spin lock usage dillon.minfei
2021-04-12  4:34 ` dillon.minfei
2021-04-12  5:52 ` Greg KH
2021-04-12  5:52   ` Greg KH
2021-04-12  6:50   ` dillon min
2021-04-12  6:50     ` dillon min
2021-04-12  8:25     ` Greg KH
2021-04-12  8:25       ` Greg KH
2021-04-12  8:54       ` dillon min
2021-04-12  8:54         ` dillon min
2021-04-12 13:19         ` [Linux-stm32] " Erwan LE RAY
2021-04-12 13:19           ` Erwan LE RAY
2021-04-12 13:41           ` dillon min
2021-04-12 13:41             ` dillon min
2021-04-12  7:23 ` kernel test robot [this message]
2021-04-12  7:23   ` kernel test robot
2021-04-12  7:23   ` kernel test robot
2021-04-12  7:29   ` dillon min
2021-04-12  7:29     ` dillon min
2021-04-12  7:29     ` dillon min
2021-04-12 10:50 kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202104121526.gm7LWDAv-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=dillon.minfei@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.