kernel_optimize_test/drivers/spi
Cristian Ciocaltea 0c300e294d spi: amd: Limit max transfer and message size
[ Upstream commit 6ece49c56965544262523dae4a071ace3db63507 ]

Enabling the SPI CS35L41 audio codec driver for Steam Deck [1]
revealed a problem with the current AMD SPI controller driver
implementation, consisting of an unrecoverable system hang.

The issue can be prevented if we ensure the max transfer size
and the max message size do not exceed the FIFO buffer size.

According to the implementation of the downstream driver, the
AMD SPI controller is not able to handle more than 70 bytes per
transfer, which corresponds to the size of the FIFO buffer.

Hence, let's fix this by setting the SPI limits mentioned above.

[1] https://lore.kernel.org/r/20220621213819.262537-1-cristian.ciocaltea@collabora.com

Reported-by: Anastasios Vacharakis <vacharakis@o2mail.de>
Fixes: bbb336f39e ("spi: spi-amd: Add AMD SPI controller driver support")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Link: https://lore.kernel.org/r/20220706100626.1234731-2-cristian.ciocaltea@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-07-21 21:20:03 +02:00
..
atmel-quadspi.c spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller 2022-04-27 13:53:57 +02:00
internals.h
Kconfig spi: dw-bt1: Fix undefined devm_mux_control_get symbol 2021-01-06 14:56:49 +01:00
Makefile ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-altera.c spi: altera: Fix memory leak on error path 2021-02-03 23:28:46 +01:00
spi-amd.c spi: amd: Limit max transfer and message size 2022-07-21 21:20:03 +02:00
spi-ar934x.c spi: ar934x: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-armada-3700.c spi: change clk_disable_unprepare to clk_unprepare 2021-12-29 12:25:54 +01:00
spi-at91-usart.c
spi-ath79.c spi: ath79: remove spi-master setup and cleanup assignment 2021-05-11 14:47:16 +02:00
spi-atmel.c spi: atmel: Put allocated master before return 2021-03-04 11:37:59 +01:00
spi-au1550.c
spi-axi-spi-engine.c
spi-bcm-qspi.c spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op() 2022-04-13 21:01:06 +02:00
spi-bcm-qspi.h
spi-bcm63xx-hsspi.c spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume 2020-12-30 11:53:06 +01:00
spi-bcm63xx.c
spi-bcm2835.c spi: spi-bcm2835: Fix deadlock 2021-07-28 14:35:40 +02:00
spi-bcm2835aux.c spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe 2020-11-13 18:22:24 +00:00
spi-bitbang-txrx.h
spi-bitbang.c spi: Cleanup on failure of initial setup 2021-06-16 12:01:38 +02:00
spi-brcmstb-qspi.c
spi-butterfly.c
spi-cadence-quadspi.c spi: cadence: set cqspi to the driver_data field of struct device 2021-03-25 09:04:04 +01:00
spi-cadence.c spi: cadence: Correct initialisation of runtime PM again 2021-07-28 14:35:39 +02:00
spi-cavium-octeon.c
spi-cavium-thunderx.c
spi-cavium.c
spi-cavium.h
spi-clps711x.c
spi-coldfire-qspi.c spi: coldfire-qspi: Use clk_disable_unprepare in the remove function 2021-09-15 09:50:29 +02:00
spi-davinci.c spi: davinci: invoke chipselect callback 2021-09-15 09:50:30 +02:00
spi-dln2.c spi: dln2: Fix reference leak to master 2021-05-11 14:47:20 +02:00
spi-dw-bt1.c spi: dw: Avoid stack content exposure 2021-03-04 11:38:07 +01:00
spi-dw-core.c spi: dw: Fix spi registration for controllers overriding CS 2020-11-25 12:54:05 +00:00
spi-dw-dma.c spi: dw: Add generic DW SSI status-check method 2020-10-08 23:00:18 +01:00
spi-dw-mmio.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw-pci.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw.h spi: dw: Introduce max mem-ops SPI bus frequency setting 2020-10-08 23:00:20 +01:00
spi-efm32.c
spi-ep93xx.c
spi-falcon.c
spi-fsi.c spi: fsi: Fix transfer returning without finalizing message 2020-11-11 12:34:29 +00:00
spi-fsl-cpm.c
spi-fsl-cpm.h
spi-fsl-dspi.c spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config 2021-09-15 09:50:28 +02:00
spi-fsl-espi.c Merge remote-tracking branch 'spi/for-5.10' into spi-next 2020-10-09 16:01:22 +01:00
spi-fsl-lib.c
spi-fsl-lib.h
spi-fsl-lpspi.c spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware() 2021-05-14 09:50:18 +02:00
spi-fsl-qspi.c spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname() 2022-06-09 10:21:06 +02:00
spi-fsl-spi.c spi: Cleanup on failure of initial setup 2021-06-16 12:01:38 +02:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case 2021-01-17 14:17:00 +01:00
spi-gpio.c spi: gpio: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-hisi-sfc-v3xx.c
spi-img-spfi.c spi: img-spfi: Fix pm_runtime_get_sync() error checking 2022-06-09 10:21:02 +02:00
spi-imx.c spi: imx: mx51-ecspi: Fix low-speed CONFIGREG delay calculation 2021-08-12 13:22:04 +02:00
spi-iproc-qspi.c
spi-jcore.c
spi-lantiq-ssc.c
spi-lm70llp.c
spi-loopback-test.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
spi-lp8841-rtc.c
spi-mem.c spi: spi-mem: fix reference leak in spi_mem_access_start 2020-12-30 11:53:02 +01:00
spi-meson-spicc.c spi: meson-spicc: add IRQ check in meson_spicc_probe 2022-02-08 18:30:37 +01:00
spi-meson-spifc.c spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe 2022-01-27 10:54:03 +01:00
spi-mpc52xx-psc.c
spi-mpc52xx.c
spi-mpc512x-psc.c
spi-mt65xx.c spi: mediatek: Avoid NULL pointer crash in interrupt 2022-02-08 18:30:37 +01:00
spi-mt7621.c spi: mt7621: Don't leak SPI master in probe error path 2020-12-30 11:54:22 +01:00
spi-mtk-nor.c spi: spi-mtk-nor: initialize spi controller after resume 2022-04-27 13:53:48 +02:00
spi-mux.c spi: spi-mux: Add module info needed for autoloading 2021-08-26 08:35:35 -04:00
spi-mxic.c spi: mxic: Fix the transmit path 2022-04-08 14:39:51 +02:00
spi-mxs.c spi: mxs: fix reference leak in mxs_spi_probe 2020-12-30 11:53:15 +01:00
spi-npcm-fiu.c spi: npcm-fiu: Disable clock in probe error path 2020-12-30 11:54:21 +01:00
spi-npcm-pspi.c
spi-nxp-fspi.c spi: spi-nxp-fspi: move the register operation after the clock enable 2021-06-30 08:47:17 -04:00
spi-oc-tiny.c
spi-omap-100k.c spi: omap-100k: Fix the length judgment problem 2021-07-14 16:55:50 +02:00
spi-omap-uwire.c spi: Cleanup on failure of initial setup 2021-06-16 12:01:38 +02:00
spi-omap2-mcspi.c spi: Cleanup on failure of initial setup 2021-06-16 12:01:38 +02:00
spi-orion.c
spi-pic32-sqi.c
spi-pic32.c spi: spi-pic32: Fix issue with uninitialized dma_slave_config 2021-09-15 09:50:28 +02:00
spi-pl022.c amba: Make the remove callback return void 2022-04-08 14:40:02 +02:00
spi-ppc4xx.c
spi-pxa2xx-dma.c
spi-pxa2xx-pci.c spi: pxa2xx-pci: Balance reference count for PCI DMA device 2022-04-08 14:40:00 +02:00
spi-pxa2xx.c spi: Cleanup on failure of initial setup 2021-06-16 12:01:38 +02:00
spi-pxa2xx.h
spi-qcom-qspi.c spi: spi-qcom-qspi: Fix use-after-free on unbind 2020-12-30 11:54:21 +01:00
spi-qup.c spi: qup: fix PM reference leak in spi_qup_remove() 2021-05-11 14:47:20 +02:00
spi-rb4xx.c spi: rb4xx: Don't leak SPI master in probe error path 2020-12-30 11:54:21 +01:00
spi-rockchip.c spi: rockchip: terminate dma transmission when slave abort 2022-03-16 14:16:00 +01:00
spi-rpc-if.c spi: spi-rpc-if: Check return value of rpcif_sw_init() 2021-11-18 14:04:11 +01:00
spi-rspi.c spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction 2022-06-09 10:20:51 +02:00
spi-s3c24xx-regs.h
spi-s3c24xx.c ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-s3c64xx.c spi: spi-s3c64xx: Turn on interrupts upon resume 2020-10-02 21:54:24 +01:00
spi-sc18is602.c spi: sc18is602: Don't leak SPI master in probe error path 2020-12-30 11:54:21 +01:00
spi-sh-hspi.c
spi-sh-msiof.c
spi-sh-sci.c
spi-sh.c spi: spi-sh: Fix use-after-free on unbind 2020-12-30 11:54:20 +01:00
spi-sifive.c
spi-sirf.c
spi-slave-mt27xx.c
spi-slave-system-control.c
spi-slave-time.c
spi-sprd-adi.c spi: sprd: Fix the wrong WDG_LOAD_VAL 2021-09-15 09:50:30 +02:00
spi-sprd.c spi: sprd: Add missing MODULE_DEVICE_TABLE 2021-06-16 12:01:35 +02:00
spi-st-ssc4.c spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path 2020-12-30 11:54:21 +01:00
spi-stm32-qspi.c spi: stm32-qspi: Fix wait_cmd timeout in APM mode 2022-06-09 10:20:54 +02:00
spi-stm32.c spi: stm32h7: fix full duplex irq handler handling 2021-08-08 09:05:22 +02:00
spi-sun4i.c
spi-sun6i.c spi: spi-sun6i: Fix chipselect/clock bug 2021-07-14 16:56:10 +02:00
spi-synquacer.c spi: spi-synquacer: fix set_cs handling 2021-03-04 11:38:43 +01:00
spi-tegra20-sflash.c spi: tegra20-sflash: fix reference leak in tegra_sflash_resume 2020-12-30 11:53:05 +01:00
spi-tegra20-slink.c spi: tegra20: Use of_device_get_match_data() 2022-04-08 14:40:32 +02:00
spi-tegra114.c spi: tegra114: Add missing IRQ check in tegra_spi_probe 2022-04-08 14:39:59 +02:00
spi-test.h
spi-ti-qspi.c spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout 2022-06-09 10:21:01 +02:00
spi-tle62x0.c
spi-topcliff-pch.c spi: spi-topcliff-pch: Fix potential double free in pch_spi_process_messages() 2021-07-14 16:55:50 +02:00
spi-txx9.c
spi-uniphier.c spi: uniphier: fix reference count leak in uniphier_spi_probe() 2022-02-08 18:30:37 +01:00
spi-xcomm.c
spi-xilinx.c
spi-xlp.c
spi-xtensa-xtfpga.c
spi-zynq-qspi.c spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op() 2022-03-02 11:42:52 +01:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: Handle error for dma_set_mask 2022-04-08 14:40:01 +02:00
spi.c spi: Fix erroneous sgs value with min_t() 2022-04-08 14:39:48 +02:00
spidev.c