mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-22 09:21:56 +00:00
The driver have a race, experienced only with PREEMPT_RT patchset:
CPU0 | CPU1
==================================================================
qcom_geni_serial_probe |
uart_add_one_port |
| serdev_drv_probe
| qca_serdev_probe
| serdev_device_open
| uart_open
| uart_startup
| qcom_geni_serial_startup
| enable_irq
| __irq_startup
| WARN_ON()
| IRQ not activated
request_threaded_irq |
irq_domain_activate_irq |
The warning:
894000.serial: ttyHS1 at MMIO 0x894000 (irq = 144, base_baud = 0) is a MSM
serial serial0: tty port ttyHS1 registered
WARNING: CPU: 7 PID: 107 at kernel/irq/chip.c:241 __irq_startup+0x78/0xd8
...
qcom_geni_serial 894000.serial: serial engine reports 0 RX bytes in!
Adding UART port triggers probe of child serial devices - serdev and
eventually Qualcomm Bluetooth hci_qca driver. This opens UART port
which enables the interrupt before it got activated in
request_threaded_irq(). The issue originates in commit
|
||
|---|---|---|
| .. | ||
| 8250 | ||
| cpm_uart | ||
| jsm | ||
| 21285.c | ||
| altera_jtaguart.c | ||
| altera_uart.c | ||
| amba-pl010.c | ||
| amba-pl011.c | ||
| apbuart.c | ||
| apbuart.h | ||
| ar933x_uart.c | ||
| arc_uart.c | ||
| atmel_serial.c | ||
| atmel_serial.h | ||
| bcm63xx_uart.c | ||
| clps711x.c | ||
| digicolor-usart.c | ||
| dz.c | ||
| dz.h | ||
| earlycon-riscv-sbi.c | ||
| earlycon-semihost.c | ||
| earlycon.c | ||
| fsl_linflexuart.c | ||
| fsl_lpuart.c | ||
| icom.c | ||
| imx_earlycon.c | ||
| imx.c | ||
| ip22zilog.c | ||
| ip22zilog.h | ||
| Kconfig | ||
| kgdb_nmi.c | ||
| kgdboc.c | ||
| lantiq.c | ||
| liteuart.c | ||
| lpc32xx_hs.c | ||
| Makefile | ||
| max310x.c | ||
| max3100.c | ||
| mcf.c | ||
| men_z135_uart.c | ||
| meson_uart.c | ||
| milbeaut_usio.c | ||
| mpc52xx_uart.c | ||
| mps2-uart.c | ||
| msm_serial.c | ||
| mux.c | ||
| mvebu-uart.c | ||
| mxs-auart.c | ||
| omap-serial.c | ||
| owl-uart.c | ||
| pch_uart.c | ||
| pic32_uart.c | ||
| pmac_zilog.c | ||
| pmac_zilog.h | ||
| pxa.c | ||
| qcom_geni_serial.c | ||
| rda-uart.c | ||
| rp2.c | ||
| sa1100.c | ||
| samsung_tty.c | ||
| sb1250-duart.c | ||
| sc16is7xx.c | ||
| sccnxp.c | ||
| serial_core.c | ||
| serial_mctrl_gpio.c | ||
| serial_mctrl_gpio.h | ||
| serial_txx9.c | ||
| serial-tegra.c | ||
| sh-sci.c | ||
| sh-sci.h | ||
| sifive.c | ||
| sprd_serial.c | ||
| st-asc.c | ||
| stm32-usart.c | ||
| stm32-usart.h | ||
| suncore.c | ||
| sunhv.c | ||
| sunplus-uart.c | ||
| sunsab.c | ||
| sunsab.h | ||
| sunsu.c | ||
| sunzilog.c | ||
| sunzilog.h | ||
| tegra-tcu.c | ||
| timbuart.c | ||
| timbuart.h | ||
| uartlite.c | ||
| ucc_uart.c | ||
| vt8500_serial.c | ||
| xilinx_uartps.c | ||
| zs.c | ||
| zs.h | ||