Re: [PATCH v2] iio: commom: st_sensors: ensure proper DMA alignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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á
> 






[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux