Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: Use IRQF_NO_THREAD

The interrupt handler iio_trigger_generic_data_rdy_poll() will invoke
other interrupt handler and this supposed to happen from within the
hardirq.

Use IRQF_NO_THREAD to forbid forced-threading.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Sebastian Andrzej Siewior and committed by
Jonathan Cameron
04d390af f52690c5

+8 -9
+3 -2
drivers/iio/accel/bma180.c
··· 986 986 } 987 987 988 988 ret = devm_request_irq(dev, client->irq, 989 - iio_trigger_generic_data_rdy_poll, IRQF_TRIGGER_RISING, 990 - "bma180_event", data->trig); 989 + iio_trigger_generic_data_rdy_poll, 990 + IRQF_TRIGGER_RISING | IRQF_NO_THREAD, 991 + "bma180_event", data->trig); 991 992 if (ret) { 992 993 dev_err(dev, "unable to request IRQ\n"); 993 994 goto err_trigger_free;
+1 -1
drivers/iio/adc/ad7766.c
··· 261 261 * don't enable the interrupt to avoid extra load on the system 262 262 */ 263 263 ret = devm_request_irq(&spi->dev, spi->irq, ad7766_irq, 264 - IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN, 264 + IRQF_TRIGGER_FALLING | IRQF_NO_AUTOEN | IRQF_NO_THREAD, 265 265 dev_name(&spi->dev), 266 266 ad7766->trig); 267 267 if (ret < 0)
+3 -5
drivers/iio/gyro/itg3200_buffer.c
··· 118 118 if (!st->trig) 119 119 return -ENOMEM; 120 120 121 - ret = request_irq(st->i2c->irq, 122 - &iio_trigger_generic_data_rdy_poll, 123 - IRQF_TRIGGER_RISING, 124 - "itg3200_data_rdy", 125 - st->trig); 121 + ret = request_irq(st->i2c->irq, &iio_trigger_generic_data_rdy_poll, 122 + IRQF_TRIGGER_RISING | IRQF_NO_THREAD, 123 + "itg3200_data_rdy", st->trig); 126 124 if (ret) 127 125 goto error_free_trig; 128 126
+1 -1
drivers/iio/light/si1145.c
··· 1248 1248 1249 1249 ret = devm_request_irq(&client->dev, client->irq, 1250 1250 iio_trigger_generic_data_rdy_poll, 1251 - IRQF_TRIGGER_FALLING, 1251 + IRQF_TRIGGER_FALLING | IRQF_NO_THREAD, 1252 1252 "si1145_irq", 1253 1253 trig); 1254 1254 if (ret < 0) {