mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00
![]() [ Upstream commit 1bd2aad57da95f7f2d2bb52f7ad15c0f4993a685 ] The following splat has been observed on a SAMA5D27 platform using atmel_serial: BUG: sleeping function called from invalid context at kernel/irq/manage.c:738 in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 27, name: kworker/u5:0 preempt_count: 1, expected: 0 INFO: lockdep is turned off. irq event stamp: 0 hardirqs last enabled at (0): [<00000000>] 0x0 hardirqs last disabled at (0): [<c01588f0>] copy_process+0x1c4c/0x7bec softirqs last enabled at (0): [<c0158944>] copy_process+0x1ca0/0x7bec softirqs last disabled at (0): [<00000000>] 0x0 CPU: 0 UID: 0 PID: 27 Comm: kworker/u5:0 Not tainted 6.13.0-rc7+ #74 Hardware name: Atmel SAMA5 Workqueue: hci0 hci_power_on [bluetooth] Call trace: unwind_backtrace from show_stack+0x18/0x1c show_stack from dump_stack_lvl+0x44/0x70 dump_stack_lvl from __might_resched+0x38c/0x598 __might_resched from disable_irq+0x1c/0x48 disable_irq from mctrl_gpio_disable_ms+0x74/0xc0 mctrl_gpio_disable_ms from atmel_disable_ms.part.0+0x80/0x1f4 atmel_disable_ms.part.0 from atmel_set_termios+0x764/0x11e8 atmel_set_termios from uart_change_line_settings+0x15c/0x994 uart_change_line_settings from uart_set_termios+0x2b0/0x668 uart_set_termios from tty_set_termios+0x600/0x8ec tty_set_termios from ttyport_set_flow_control+0x188/0x1e0 ttyport_set_flow_control from wilc_setup+0xd0/0x524 [hci_wilc] wilc_setup [hci_wilc] from hci_dev_open_sync+0x330/0x203c [bluetooth] hci_dev_open_sync [bluetooth] from hci_dev_do_open+0x40/0xb0 [bluetooth] hci_dev_do_open [bluetooth] from hci_power_on+0x12c/0x664 [bluetooth] hci_power_on [bluetooth] from process_one_work+0x998/0x1a38 process_one_work from worker_thread+0x6e0/0xfb4 worker_thread from kthread+0x3d4/0x484 kthread from ret_from_fork+0x14/0x28 This warning is emitted when trying to toggle, at the highest level, some flow control (with serdev_device_set_flow_control) in a device driver. At the lowest level, the atmel_serial driver is using serial_mctrl_gpio lib to enable/disable the corresponding IRQs accordingly. The warning emitted by CONFIG_DEBUG_ATOMIC_SLEEP is due to disable_irq (called in mctrl_gpio_disable_ms) being possibly called in some atomic context (some tty drivers perform modem lines configuration in regions protected by port lock). Split mctrl_gpio_disable_ms into two differents APIs, a non-blocking one and a blocking one. Replace mctrl_gpio_disable_ms calls with the relevant version depending on whether the call is protected by some port lock. Suggested-by: Jiri Slaby <jirislaby@kernel.org> Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Acked-by: Richard Genoud <richard.genoud@bootlin.com> Link: https://lore.kernel.org/r/20250217-atomic_sleep_mctrl_serial_gpio-v3-1-59324b313eef@bootlin.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org> |
||
---|---|---|
.. | ||
80211 | ||
acpi | ||
backlight | ||
cxl | ||
dmaengine | ||
driver-model | ||
early-userspace | ||
firmware | ||
fpga | ||
gpio | ||
hte | ||
i3c | ||
iio | ||
md | ||
media | ||
mei | ||
memory-devices | ||
mmc | ||
mtd | ||
nfc | ||
nvdimm | ||
pci | ||
phy | ||
pldmfw | ||
pm | ||
rapidio | ||
serial | ||
soundwire | ||
surface_aggregator | ||
thermal | ||
tty | ||
usb | ||
virtio | ||
xilinx | ||
aperture.rst | ||
auxiliary_bus.rst | ||
basics.rst | ||
clk.rst | ||
component.rst | ||
connector.rst | ||
console.rst | ||
dcdbas.rst | ||
devfreq.rst | ||
device_link.rst | ||
device-io.rst | ||
dma-buf.rst | ||
edac.rst | ||
eisa.rst | ||
firewire.rst | ||
frame-buffer.rst | ||
generic-counter.rst | ||
hsi.rst | ||
i2c.rst | ||
index.rst | ||
infiniband.rst | ||
infrastructure.rst | ||
input.rst | ||
interconnect.rst | ||
io_ordering.rst | ||
io-mapping.rst | ||
ioctl.rst | ||
ipmb.rst | ||
ipmi.rst | ||
isa.rst | ||
isapnp.rst | ||
libata.rst | ||
mailbox.rst | ||
men-chameleon-bus.rst | ||
message-based.rst | ||
misc_devices.rst | ||
miscellaneous.rst | ||
mtdnand.rst | ||
ntb.rst | ||
nvmem.rst | ||
parport-lowlevel.rst | ||
pin-control.rst | ||
pps.rst | ||
ptp.rst | ||
pwm.rst | ||
regulator.rst | ||
reset.rst | ||
rfkill.rst | ||
s390-drivers.rst | ||
scsi.rst | ||
slimbus.rst | ||
sm501.rst | ||
spi.rst | ||
switchtec.rst | ||
sync_file.rst | ||
target.rst | ||
uio-howto.rst | ||
vfio-mediated-device.rst | ||
vfio-pci-device-specific-driver-acceptance.rst | ||
vfio.rst | ||
vme.rst | ||
w1.rst | ||
wmi.rst | ||
xillybus.rst | ||
zorro.rst |