Re: [PATCH 0/2] firmware: cs_dsp: Remove usage of GFP_DMA

From: Richard Fitzgerald
Date: Thu Feb 13 2025 - 09:31:24 EST


On 11/02/2025 5:21 pm, Richard Fitzgerald wrote:
On 11/02/2025 5:03 pm, Thomas Weißschuh wrote:
Also drop the bounce buffer in cs_dsp_coeff_write_ctrl_raw().

The bounce buffer in cs_dsp_coeff_write_ctrl_raw() could theoretically
also be removed. That would be a functional change as the output may be
modified in error cases.
As I don't know the driver very well I left that part out.

Not tested on real hardware.
This came up while porting kunit to mips64.
Apparently GFP_DMA does not work there, but IMO the usage of GFP_DMA by

I would say that is a bug in mips64 that should be fixed in mips64.
It is not reasonable to expect generic drivers to have special cases for
platforms that don't handle GFP_DMA.


cs_dsp is unnecessary in the first place.


You're sure that all I2C and SPI bus controllers now handle non-DMA-safe
buffers correctly?

I just tested this.

The spi kernel doc says this:

* struct spi_transfer - a read/write buffer pair
* @tx_buf: data to be written (DMA-safe memory), or NULL
* @rx_buf: data to be read (DMA-safe memory), or NULL

On x86_64() a spi_write() fails with -EINVAL if I pass it a non-dma-safe
buffer of data. But it works if I pass it a buffer allocated with
GFP_DMA.

So I think it is a bad idea to remove GFP_DMA to workaround mips64.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
---
Thomas Weißschuh (2):
       firmware: cs_dsp: Remove usage of GFP_DMA
       firmware: cs_dsp: Remove bounce buffer in cs_dsp_coeff_write_ctrl_raw()

  drivers/firmware/cirrus/cs_dsp.c | 15 +++------------
  1 file changed, 3 insertions(+), 12 deletions(-)
---
base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b
change-id: 20250211-cs_dsp-gfp_dma-0581bdd09dd5

Best regards,