On Wed, 31 Jan 2024 10:16:47 +0100 Nuno Sa <nuno.sa@xxxxxxxxxx> wrote: > Aligning the buffer to the L1 cache is not sufficient in some platforms > as they might have larger cacheline sizes for caches after L1 and thus, > we can't guarantee DMA safety. > > That was the whole reason to introduce IIO_DMA_MINALIGN in [1]. Do the same > for st_sensors common buffer. > > While at it, moved the odr_lock before buffer_data as we definitely > don't want any other data to share a cacheline with the buffer. > > [1]: https://lore.kernel.org/linux-iio/20220508175712.647246-2-jic23@xxxxxxxxxx/ > > Fixes: e031d5f558f1 ("iio:st_sensors: remove buffer allocation at each buffer enable") > Signed-off-by: Nuno Sa <nuno.sa@xxxxxxxxxx> Applied to the fixes-togreg branch of iio.git and marked for stable. Thanks! Jonathan > --- > Changes in v2: > * moved struct odr_lock before buffer_data. > --- > include/linux/iio/common/st_sensors.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h > index 607c3a89a647..f9ae5cdd884f 100644 > --- a/include/linux/iio/common/st_sensors.h > +++ b/include/linux/iio/common/st_sensors.h > @@ -258,9 +258,9 @@ struct st_sensor_data { > bool hw_irq_trigger; > s64 hw_timestamp; > > - char buffer_data[ST_SENSORS_MAX_BUFFER_SIZE] ____cacheline_aligned; > - > struct mutex odr_lock; > + > + char buffer_data[ST_SENSORS_MAX_BUFFER_SIZE] __aligned(IIO_DMA_MINALIGN); > }; > > #ifdef CONFIG_IIO_BUFFER > > --- > base-commit: 1380d453434e276355458e712c743dd071ca1fa7 > change-id: 20240131-dev_dma_safety_stm-7c09782d87ed > -- > > Thanks! > - Nuno Sá >