From: kernel test robot <lkp@intel.com>
To: Leonardo Bras <leobras@redhat.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [RESEND RFC PATCH v1 2/2] serial/8250: Avoid getting lock in RT atomic context
Date: Fri, 19 Jan 2024 14:15:51 +0800 [thread overview]
Message-ID: <202401191330.lRpnBCKD-lkp@intel.com> (raw)
In-Reply-To: <20240116073701.2356171-3-leobras@redhat.com>
Hi Leonardo,
[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:
[auto build test ERROR on 052d534373b7ed33712a63d5e17b2b6cdbce84fd]
url: https://github.com/intel-lab-lkp/linux/commits/Leonardo-Bras/irq-spurious-Reset-irqs_unhandled-if-an-irq_thread-handles-one-IRQ-request/20240116-153933
base: 052d534373b7ed33712a63d5e17b2b6cdbce84fd
patch link: https://lore.kernel.org/r/20240116073701.2356171-3-leobras%40redhat.com
patch subject: [RESEND RFC PATCH v1 2/2] serial/8250: Avoid getting lock in RT atomic context
config: i386-randconfig-011-20240119 (https://download.01.org/0day-ci/archive/20240119/202401191330.lRpnBCKD-lkp@intel.com/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240119/202401191330.lRpnBCKD-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401191330.lRpnBCKD-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/tty/serial/8250/8250_port.c:3401:3: error: expected ')'
3401 | locked = uart_port_trylock_irqsave(port, &flags);
| ^
drivers/tty/serial/8250/8250_port.c:3400:5: note: to match this '('
3400 | if (oops_in_progress || (IS_ENABLED(CONFIG_PREEMPT_RT) && in_atomic())
| ^
1 error generated.
vim +3401 drivers/tty/serial/8250/8250_port.c
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3379
b6830f6df8914f Peter Hurley 2015-06-27 3380 /*
b6830f6df8914f Peter Hurley 2015-06-27 3381 * Print a string to the serial port trying not to disturb
b6830f6df8914f Peter Hurley 2015-06-27 3382 * any possible real use of the port...
b6830f6df8914f Peter Hurley 2015-06-27 3383 *
b6830f6df8914f Peter Hurley 2015-06-27 3384 * The console_lock must be held when we get here.
bedb404e91bb29 Andy Shevchenko 2020-02-17 3385 *
bedb404e91bb29 Andy Shevchenko 2020-02-17 3386 * Doing runtime PM is really a bad idea for the kernel console.
bedb404e91bb29 Andy Shevchenko 2020-02-17 3387 * Thus, we assume the function is called when device is powered up.
b6830f6df8914f Peter Hurley 2015-06-27 3388 */
b6830f6df8914f Peter Hurley 2015-06-27 3389 void serial8250_console_write(struct uart_8250_port *up, const char *s,
b6830f6df8914f Peter Hurley 2015-06-27 3390 unsigned int count)
b6830f6df8914f Peter Hurley 2015-06-27 3391 {
7f9803072ff636 Lukas Wunner 2020-02-28 3392 struct uart_8250_em485 *em485 = up->em485;
b6830f6df8914f Peter Hurley 2015-06-27 3393 struct uart_port *port = &up->port;
b6830f6df8914f Peter Hurley 2015-06-27 3394 unsigned long flags;
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3395 unsigned int ier, use_fifo;
b6830f6df8914f Peter Hurley 2015-06-27 3396 int locked = 1;
b6830f6df8914f Peter Hurley 2015-06-27 3397
b6830f6df8914f Peter Hurley 2015-06-27 3398 touch_nmi_watchdog();
b6830f6df8914f Peter Hurley 2015-06-27 3399
5194c99b116191 Leonardo Bras 2024-01-16 3400 if (oops_in_progress || (IS_ENABLED(CONFIG_PREEMPT_RT) && in_atomic())
e8f87d3c335702 Thomas Gleixner 2023-09-14 @3401 locked = uart_port_trylock_irqsave(port, &flags);
b6830f6df8914f Peter Hurley 2015-06-27 3402 else
e8f87d3c335702 Thomas Gleixner 2023-09-14 3403 uart_port_lock_irqsave(port, &flags);
b6830f6df8914f Peter Hurley 2015-06-27 3404
b6830f6df8914f Peter Hurley 2015-06-27 3405 /*
b6830f6df8914f Peter Hurley 2015-06-27 3406 * First save the IER then disable the interrupts
b6830f6df8914f Peter Hurley 2015-06-27 3407 */
b6830f6df8914f Peter Hurley 2015-06-27 3408 ier = serial_port_in(port, UART_IER);
a3911f6ea5542d Ilpo Järvinen 2022-08-16 3409 serial8250_clear_IER(up);
b6830f6df8914f Peter Hurley 2015-06-27 3410
b6830f6df8914f Peter Hurley 2015-06-27 3411 /* check scratch reg to see if port powered off during system sleep */
b6830f6df8914f Peter Hurley 2015-06-27 3412 if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
10791233e98fbd Peter Hurley 2015-09-25 3413 serial8250_console_restore(up);
b6830f6df8914f Peter Hurley 2015-06-27 3414 up->canary = 0;
b6830f6df8914f Peter Hurley 2015-06-27 3415 }
b6830f6df8914f Peter Hurley 2015-06-27 3416
7f9803072ff636 Lukas Wunner 2020-02-28 3417 if (em485) {
7f9803072ff636 Lukas Wunner 2020-02-28 3418 if (em485->tx_stopped)
7f9803072ff636 Lukas Wunner 2020-02-28 3419 up->rs485_start_tx(up);
7f9803072ff636 Lukas Wunner 2020-02-28 3420 mdelay(port->rs485.delay_rts_before_send);
7f9803072ff636 Lukas Wunner 2020-02-28 3421 }
7f9803072ff636 Lukas Wunner 2020-02-28 3422
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3423 use_fifo = (up->capabilities & UART_CAP_FIFO) &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3424 /*
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3425 * BCM283x requires to check the fifo
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3426 * after each byte.
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3427 */
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3428 !(up->capabilities & UART_CAP_MINI) &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3429 /*
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3430 * tx_loadsz contains the transmit fifo size
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3431 */
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3432 up->tx_loadsz > 1 &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3433 (up->fcr & UART_FCR_ENABLE_FIFO) &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3434 port->state &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3435 test_bit(TTY_PORT_INITIALIZED, &port->state->port.iflags) &&
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3436 /*
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3437 * After we put a data in the fifo, the controller will send
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3438 * it regardless of the CTS state. Therefore, only use fifo
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3439 * if we don't use control flow.
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3440 */
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3441 !(up->port.flags & UPF_CONS_FLOW);
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3442
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3443 if (likely(use_fifo))
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3444 serial8250_console_fifo_write(up, s, count);
8f3631f0f6eb42 Wander Lairson Costa 2022-04-11 3445 else
b6830f6df8914f Peter Hurley 2015-06-27 3446 uart_console_write(port, s, count, serial8250_console_putchar);
b6830f6df8914f Peter Hurley 2015-06-27 3447
b6830f6df8914f Peter Hurley 2015-06-27 3448 /*
b6830f6df8914f Peter Hurley 2015-06-27 3449 * Finally, wait for transmitter to become empty
b6830f6df8914f Peter Hurley 2015-06-27 3450 * and restore the IER
b6830f6df8914f Peter Hurley 2015-06-27 3451 */
34619de1b8cb52 Ilpo Järvinen 2022-06-24 3452 wait_for_xmitr(up, UART_LSR_BOTH_EMPTY);
b6830f6df8914f Peter Hurley 2015-06-27 3453
7f9803072ff636 Lukas Wunner 2020-02-28 3454 if (em485) {
4e36f94e996ebe Lukas Wunner 2020-03-27 3455 mdelay(port->rs485.delay_rts_after_send);
7f9803072ff636 Lukas Wunner 2020-02-28 3456 if (em485->tx_stopped)
7f9803072ff636 Lukas Wunner 2020-02-28 3457 up->rs485_stop_tx(up);
7f9803072ff636 Lukas Wunner 2020-02-28 3458 }
7f9803072ff636 Lukas Wunner 2020-02-28 3459
8d5b305484e8a3 Lukas Wunner 2020-03-27 3460 serial_port_out(port, UART_IER, ier);
8d5b305484e8a3 Lukas Wunner 2020-03-27 3461
b6830f6df8914f Peter Hurley 2015-06-27 3462 /*
b6830f6df8914f Peter Hurley 2015-06-27 3463 * The receive handling will happen properly because the
b6830f6df8914f Peter Hurley 2015-06-27 3464 * receive ready bit will still be set; it is not cleared
b6830f6df8914f Peter Hurley 2015-06-27 3465 * on read. However, modem control will not, we must
b6830f6df8914f Peter Hurley 2015-06-27 3466 * call it if we have saved something in the saved flags
b6830f6df8914f Peter Hurley 2015-06-27 3467 * while processing with interrupts off.
b6830f6df8914f Peter Hurley 2015-06-27 3468 */
b6830f6df8914f Peter Hurley 2015-06-27 3469 if (up->msr_saved_flags)
b6830f6df8914f Peter Hurley 2015-06-27 3470 serial8250_modem_status(up);
b6830f6df8914f Peter Hurley 2015-06-27 3471
b6830f6df8914f Peter Hurley 2015-06-27 3472 if (locked)
e8f87d3c335702 Thomas Gleixner 2023-09-14 3473 uart_port_unlock_irqrestore(port, flags);
b6830f6df8914f Peter Hurley 2015-06-27 3474 }
b6830f6df8914f Peter Hurley 2015-06-27 3475
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
parent reply other threads:[~2024-01-19 6:16 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <20240116073701.2356171-3-leobras@redhat.com>]
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=202401191330.lRpnBCKD-lkp@intel.com \
--to=lkp@intel.com \
--cc=leobras@redhat.com \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox