6098475d4c
Currently we have a global spi_add_lock which we take when adding new devices so that we can check that we're not trying to reuse a chip select that's already controlled. This means that if the SPI device is itself a SPI controller and triggers the instantiation of further SPI devices we trigger a deadlock as we try to register and instantiate those devices while in the process of doing so for the parent controller and hence already holding the global spi_add_lock. Since we only care about concurrency within a single SPI bus move the lock to be per controller, avoiding the deadlock. This can be easily triggered in the case of spi-mux. Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Mark Brown <broonie@kernel.org> |
||
---|---|---|
.. | ||
ad7877.h | ||
ads7846.h | ||
altera.h | ||
at73c213.h | ||
at86rf230.h | ||
cc2520.h | ||
corgi_lcd.h | ||
ds1305.h | ||
eeprom.h | ||
flash.h | ||
libertas_spi.h | ||
max7301.h | ||
mc33880.h | ||
mmc_spi.h | ||
mxs-spi.h | ||
pxa2xx_spi.h | ||
rspi.h | ||
s3c24xx-fiq.h | ||
s3c24xx.h | ||
sh_hspi.h | ||
sh_msiof.h | ||
spi-fsl-dspi.h | ||
spi-mem.h | ||
spi.h | ||
spi_bitbang.h | ||
spi_gpio.h | ||
spi_oc_tiny.h | ||
tdo24m.h | ||
tle62x0.h | ||
xilinx_spi.h |