Hi, When I enable all 8 channels from an AD7927 chip using the AD7923 driver I get the following kernel error: [ 98.429633] imx-sdma 30bd0000.dma-controller: swiotlb buffer is full (sz: 32768 bytes), total 32768 (slots), used 32736 (slots) [ 98.431413] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008 [ 98.431425] Mem abort info: [ 98.431427] ESR = 0x96000004 [ 98.431430] EC = 0x25: DABT (current EL), IL = 32 bits [ 98.431434] SET = 0, FnV = 0 [ 98.431437] EA = 0, S1PTW = 0 [ 98.431439] FSC = 0x04: level 0 translation fault [ 98.431442] Data abort info: [ 98.431444] ISV = 0, ISS = 0x00000004 [ 98.431446] CM = 0, WnR = 0 [ 98.431448] user pgtable: 4k pages, 48-bit VAs, pgdp=00000001073a1000 [ 98.431453] [0000000000000008] pgd=0000000000000000, p4d=0000000000000000 [ 98.431461] Internal error: Oops: 96000004 [#1] PREEMPT SMP [ 98.437036] Modules linked in: cfg80211 fsl_jr_uio caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine rng_core authenc libdes crct10dif_ce snd_soc_fsl_sai rtc_ds1307 imx_sdma extcon_ptn5150 snd_soc_wm8904 caam secvio error fuse overlay [ 98.459228] CPU: 2 PID: 517 Comm: irq/233-ad7928_ Not tainted 5.15.60+ge9858f40abc9 #1 [ 98.467145] Hardware name: Variscite DART-MX8M-PLUS [ 98.474799] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 98.481761] pc : _raw_write_lock_irqsave+0x254/0x318 [ 98.486732] lr : complete+0x24/0x64 [ 98.490220] sp : ffff80000b43bbe0 [ 98.493534] x29: ffff80000b43bbe0 x28: 0000000000000000 x27: 0000000000000000 [ 98.500674] x26: ffff0000c0f179b8 x25: ffff0000c6154338 x24: ffff0000c198c370 [ 98.507813] x23: ffff8000089f8b20 x22: ffff0000c6154410 x21: ffff0000c0f17978 [ 98.514949] x20: 0000000000000008 x19: 0000000000000000 x18: ffffffffffffffff [ 98.522090] x17: 3233203a7a732820 x16: 6c6c756620736920 x15: 0000000000000000 [ 98.529228] x14: 0009201c149cb862 x13: 0000000000000000 x12: 0000000000000003 [ 98.536365] x11: 0000000000000000 x10: 000000000000021f x9 : 0000000000000000 [ 98.543502] x8 : 0000000000000001 x7 : 0000000000000003 x6 : 0000000000000000 [ 98.550642] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000008 [ 98.557781] x2 : 0000000000000001 x1 : 0000000000000000 x0 : 0000000000000001 [ 98.564923] Call trace: [ 98.567368] _raw_write_lock_irqsave+0x254/0x318 [ 98.571990] complete+0x24/0x64 [ 98.575130] spi_complete+0x10/0x20 [ 98.578622] spi_finalize_current_message+0x168/0x1f0 [ 98.583672] __spi_pump_messages+0x48c/0x5b0 [ 98.587945] __spi_sync+0x234/0x26c [ 98.591434] spi_sync+0x30/0x54 [ 98.594578] ad7923_trigger_handler+0x24/0x8c [ 98.598934] irq_thread_fn+0x2c/0x9c [ 98.602512] irq_thread+0x178/0x2c0 [ 98.605998] kthread+0x150/0x160 [ 98.609227] ret_from_fork+0x10/0x20 [ 98.612808] Code: 17fffeba d5384613 521b0a60 f9800071 (885ffc60) [ 98.618901] ---[ end trace 9fd562a23b7ff000 ]--- [ 98.623517] note: irq/233-ad7928_[517] exited with preempt_count 1 [ 98.629757] genirq: exiting task "irq/233-ad7928_" (517) is an active IRQ thread (irq 233) Six channels work fine. Increasing the swiotlb buffer to 262144 does not help. All slots are still used. To reproduce, I run the following commands: TRIGGER_NAME=trigger IIO_DEVICE=/sys/bus/iio/devices/iio\:device0 TRIGGER_DEVICE=/sys/bus/iio/devices/trigger0 SAMPLING_FREQUENCY=1 mkdir -p /sys/kernel/config/iio/triggers/hrtimer/$TRIGGER_NAME echo $TRIGGER_NAME > $IIO_DEVICE/trigger/current_trigger echo $SAMPLING_FREQUENCY > $TRIGGER_DEVICE/sampling_frequency echo 1 > $IIO_DEVICE/scan_elements/in_voltage0_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage1_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage2_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage3_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage4_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage5_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage6_en echo 1 > $IIO_DEVICE/scan_elements/in_voltage7_en echo 1 > $IIO_DEVICE/buffer/enable The error message appears immediately after the last command. Kernel version is 5.15.60 (https://github.com/varigit/linux-imx/tree/5.15-2.0.x-imx_var01) Best regards, Hein Gustavsen