Fixed
Created: Apr 13, 2015
Updated: Sep 8, 2018
Resolved Date: Jan 22, 2016
Found In Version: 7.0
Fix Version: 7.0.0.13
Severity: Standard
Applicable for: Wind River Linux 7
Component/s: BSP
Issue observed when exporting via /sys/class/gpio/export.
The Baytrail pinctrl driver (drivers/pinctrl/pinctrl-baytrail.c) appears to have a recursive locking problem.
That is, it causes an IRQ-masked spin-lock to be taken and then, later, another IRQ-masked spin-lock is
requested with causes the might_sleep() debugging aid to trigger because the second lock request as the potential to sleep.
Attached config.log, pkglist.and .config.
Customer board exports these GPIOs:
-bash-3.2# ls /sys/class/gpio/
export gpio111 gpio207 gpio213 gpio83 gpiochip126 unexport
gpio109 gpio112 gpio209 gpio214 gpio84 gpiochip154
gpio110 gpio161 gpio212 gpio226 gpio85 gpiochip82
This problem should reproduce on any Baytrail when GPIOs are exported that have associated interrupts and the kernel config CONFIG_DEBUG_ATOMIC_SLEEP is enabled.