linux/drivers/spi
Mark Brown 96c8395e21
spi: Revert modalias changes
During the v5.13 cycle we updated the SPI subsystem to generate OF style
modaliases for SPI devices, replacing the old Linux style modalises we
used to generate based on spi_device_id which are the DT style name with
the vendor removed.  Unfortunately this means that we start only
reporting OF style modalises and not the old ones and there is nothing
that ensures that drivers list every possible OF compatible string in
their OF ID table.  The result is that there are systems which have been
relying on loading modules based on the old style that are now broken,
as found by Russell King with spi-nor on Macchiatobin.

spi-nor is a particularly problematic case for this, it only lists a
single generic DT compatible jedec,spi-nor in the driver but supports a
huge raft of device specific compatibles, with a large set of part
numbers many of which are offered by multiple vendors.  Russell's
searches of upstream device trees has turned up examples with vendor
names written in non-standard ways too.  To make matters worse up until
8ff16cf77c ("Documentation: devicetree: m25p80: add "nor-jedec"
binding") the generic compatible was not part of the binding so there
are device trees out there written to that binding version which don't
list it all.  The sheer number of parts supported together with our
previous approach of ignoring the vendor ID makes robustly fixing this
by adding compatibles to the spi-nor driver seem problematic, the
current DT binding document does not list all the parts supported by the
driver at the minute (further patches will fix this).

I've also investigated supporting both formats of modalias
simultaneously but that doesn't seem possible, especially without
breaking our userspace ABI which is obviously not viable.

Instead revert the relevant changes for now:

e09f2ab8ee ("spi: update modalias_show after of_device_uevent_modalias support")
3ce6c9e261 ("spi: add of_device_uevent_modalias support")

This will unfortunately mean that any system which had started having
modules autoload based on the OF compatibles for drivers that list
things there but not in the spi_device_ids will now not have those
modules load which is itself a regression.  Since it affects a narrower
time window and the particularly problematic spi-nor driver may be
critical to system boot on smaller systems this seems the best of a
series of bad options.  I will start an audit of SPI drivers to identify
and fix cases where things won't autoload using spi_device_id, this is
not great but seems to be the best way forward that anyone has been able
to identify.

Thanks to Russell for both his report and the additional diagnostic and
analysis work he has done here, the detailed research above was his
work.

Fixes: e09f2ab8ee ("spi: update modalias_show after of_device_uevent_modalias support")
Fixes: 3ce6c9e261 ("spi: add of_device_uevent_modalias support")
Reported-by: Russell King (Oracle) <linux@armlinux.org.uk>
Suggested-by: Russell King (Oracle) <linux@armlinux.org.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
Tested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Cc: Andreas Schwab <schwab@suse.de>
Cc: Marco Felsch <m.felsch@pengutronix.de>
2021-09-21 20:22:48 +01:00
..
atmel-quadspi.c spi: atmel-quadspi: Disable the QSPI IP at suspend() 2021-02-11 13:15:12 +00:00
internals.h
Kconfig spi: rockchip-sfc: add rockchip serial flash controller 2021-08-17 13:36:04 +01:00
Makefile spi: rockchip-sfc: add rockchip serial flash controller 2021-08-17 13:36:04 +01:00
spi-altera-core.c spi: altera: separate core code from platform code 2021-04-20 17:26:40 +01:00
spi-altera-dfl.c spi: spi-altera-dfl: support n5010 feature revision 2021-07-29 13:02:28 -07:00
spi-altera-platform.c spi: altera: separate core code from platform code 2021-04-20 17:26:40 +01:00
spi-amd.c spi: amd: Use devm_platform_ioremap_resource() in amd_spi_probe 2020-11-23 20:42:05 +00:00
spi-ar934x.c spi: ar934x: Don't leak SPI master in probe error path 2020-12-07 14:18:59 +00:00
spi-armada-3700.c spi: a3700: Remove a useless memset 2020-08-18 17:52:37 +01:00
spi-at91-usart.c
spi-ath79.c spi: ath79: set number of chipselect lines 2021-05-24 09:51:38 +01:00
spi-atmel.c spi: atmel: Fix CS and initialization bug 2021-07-11 23:44:39 +01:00
spi-au1550.c spi: spi-au1550: Fix various whitespace warnings 2021-01-22 16:26:21 +00:00
spi-axi-spi-engine.c spi: spi-axi-spi-engine: remove usage of delay_usecs 2021-03-12 14:30:42 +00:00
spi-bcm63xx-hsspi.c spi: bcm63xx-hsspi: fix pm_runtime 2021-03-10 12:25:12 +00:00
spi-bcm63xx.c spi: bcm63xx-spi: don't check 'delay_usecs' field 2021-03-12 14:30:43 +00:00
spi-bcm2835.c spi: spi-bcm2835: Fix deadlock 2021-07-20 13:34:05 +01:00
spi-bcm2835aux.c spi: bcm2835aux: use 'unsigned int' instead of 'unsigned' 2021-08-03 18:27:25 +01:00
spi-bcm-qspi.c spi: spi-bcm-qspi: replace 'delay_usecs' with 'delay.value' check 2021-03-12 14:30:44 +00:00
spi-bcm-qspi.h
spi-bitbang-txrx.h
spi-bitbang.c spi: Cleanup on failure of initial setup 2021-06-01 14:03:12 +01:00
spi-brcmstb-qspi.c
spi-butterfly.c spi: butterfly: Switch to use module_parport_driver() 2021-03-10 12:46:05 +00:00
spi-cadence-quadspi.c spi: cadence-quadspi: Fix check condition for DTR ops 2021-08-05 20:18:10 +01:00
spi-cadence.c spi: cadence: Correct initialisation of runtime PM again 2021-07-19 12:58:44 +01:00
spi-cavium-octeon.c
spi-cavium-thunderx.c
spi-cavium.c
spi-cavium.h
spi-clps711x.c spi: clps711xx: remove redundant white-space 2021-02-04 18:45:59 +00:00
spi-coldfire-qspi.c spi: coldfire-qspi: Use clk_disable_unprepare in the remove function 2021-08-19 18:20:10 +01:00
spi-davinci.c spi: davinci: invoke chipselect callback 2021-08-24 20:53:24 +01:00
spi-dln2.c spi: dln2: Fix reference leak to master 2021-04-09 13:43:57 +01:00
spi-dw-bt1.c spi: dw: Avoid stack content exposure 2021-02-12 12:41:49 +00:00
spi-dw-core.c spi: dw: Add support for 32-bits max xfer size 2020-12-09 12:14:22 +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: delete repeated words in comments 2021-05-10 13:07:52 +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: Add support for 32-bits max xfer size 2020-12-09 12:14:22 +00:00
spi-ep93xx.c spi: spi-ep93xx: Prepare clock before using it 2021-08-03 18:27:24 +01:00
spi-falcon.c spi: spi-falcon: remove check for 'delay_usecs' 2021-03-12 14:30:48 +00:00
spi-fsi.c spi: fsi: Reduce max transfer size to 8 bytes 2021-07-19 16:56:14 +01:00
spi-fsl-cpm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
spi-fsl-cpm.h
spi-fsl-dspi.c spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config 2021-08-10 13:22:19 +01:00
spi-fsl-espi.c spi: fsl-espi: remove usage of 'delay_usecs' field 2021-03-12 14:30:49 +00: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-04-09 13:43:59 +01:00
spi-fsl-qspi.c
spi-fsl-spi.c spi: Cleanup on failure of initial setup 2021-06-01 14:03:12 +01:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Remove confusing comment about setting the watermark 2021-07-14 16:37:58 +01:00
spi-gpio.c spi: gpio: Don't leak SPI master in probe error path 2020-12-07 14:18:54 +00:00
spi-hisi-kunpeng.c spi: hisi-kunpeng: Add debugfs support 2021-06-07 16:24:12 +01:00
spi-hisi-sfc-v3xx.c spi: hisi-sfc-v3xx: drop unnecessary ACPI_PTR and related ifendif protection 2021-04-12 17:07:38 +01:00
spi-img-spfi.c spi: img-spfi: fix reference leak in img_spfi_resume 2020-11-02 15:53:25 +00:00
spi-imx.c ARM: SoC drivers for 5.15 2021-09-01 15:25:28 -07:00
spi-iproc-qspi.c
spi-jcore.c spi: jcore: Fix trailing statements should be on next line 2021-03-24 19:51:09 +00:00
spi-lantiq-ssc.c spi: lantiq: remove redundant irqsave and irqrestore in hardIRQ 2020-09-17 19:56:02 +01:00
spi-lm70llp.c spi: lm70llp: add parenthesis for sizeof 2021-05-20 18:00:34 +01:00
spi-loopback-test.c spi: spi-loopback-test: Fix 'tx_buf' might be 'rx_buf' 2021-05-10 13:07:53 +01:00
spi-lp8841-rtc.c
spi-mem.c spi: spi-mem: fix doc warning in spi-mem.c 2021-06-14 15:05:00 +01:00
spi-meson-spicc.c spi: meson-spicc: fix memory leak in meson_spicc_remove 2021-07-22 16:02:22 +01:00
spi-meson-spifc.c
spi-mpc52xx-psc.c spi: mpc52xx-psc: add parenthesis for sizeof 2021-05-20 18:00:37 +01:00
spi-mpc52xx.c spi: mpc52xx: add parenthesis for sizeof 2021-05-20 18:00:36 +01:00
spi-mpc512x-psc.c spi: mpc512x-psc: add parenthesis for sizeof 2021-05-20 18:00:35 +01:00
spi-mt65xx.c Merge remote-tracking branch 'spi/for-5.15' into spi-next 2021-08-26 15:09:52 +01:00
spi-mt7621.c spi: mt7621: Don't leak SPI master in probe error path 2020-12-07 14:18:59 +00:00
spi-mtk-nor.c spi: spi-mtk-nor: Fix checkpatch spacing error 2021-03-24 19:51:07 +00:00
spi-mux.c spi: spi-mux: Add module info needed for autoloading 2021-07-22 12:40:06 +01:00
spi-mxic.c spi: mxic: add missing braces 2021-08-12 12:19:19 +01:00
spi-mxs.c spi: mxs: fix reference leak in mxs_spi_probe 2020-11-18 18:00:26 +00:00
spi-npcm-fiu.c spi: npcm-fiu: Disable clock in probe error path 2020-12-07 14:19:00 +00:00
spi-npcm-pspi.c spi: npcm-pspi: Use SPI_MODE_X_MASK 2021-05-11 15:42:48 +01:00
spi-nxp-fspi.c spi: spi-nxp-fspi: move the register operation after the clock enable 2021-06-14 15:02:01 +01:00
spi-oc-tiny.c spi: oc-tiny: Use SPI_MODE_X_MASK 2021-05-11 15:42:49 +01:00
spi-omap2-mcspi.c Merge branch 'for-5.13' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-5.14 2021-06-01 18:33:33 +01:00
spi-omap-100k.c spi: fix some invalid char occurrences 2021-05-20 17:58:33 +01:00
spi-omap-uwire.c Merge branch 'for-5.13' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-5.14 2021-06-01 18:33:33 +01:00
spi-orion.c spi: orion: Prevent incorrect chip select behaviour 2021-08-16 13:28:14 +01:00
spi-pic32-sqi.c
spi-pic32.c spi: spi-pic32: Fix issue with uninitialized dma_slave_config 2021-08-10 13:22:20 +01:00
spi-pl022.c spi: delete repeated words in comments 2021-05-10 13:07:52 +01:00
spi-ppc4xx.c spi: ppc4xx: add parenthesis for sizeof 2021-05-20 18:00:40 +01:00
spi-pxa2xx-dma.c spi: pxa2xx: Fix style of and typos in the comments and messages 2021-05-18 14:05:35 +01:00
spi-pxa2xx-pci.c spi: pxa2xx: Fix inconsistent indenting 2021-05-21 13:13:42 +01:00
spi-pxa2xx.c spi: pxa2xx: Adapt reset_sccr1() to the case when no message available 2021-07-22 12:41:19 +01:00
spi-pxa2xx.h spi: pxa2xx: Fix style of and typos in the comments and messages 2021-05-18 14:05:35 +01:00
spi-qcom-qspi.c spi: spi-qcom-qspi: Convert to use resource-managed OPP API 2021-03-16 10:14:11 +05:30
spi-qup.c spi: qup: fix PM reference leak in spi_qup_remove() 2021-04-09 13:44:03 +01:00
spi-rb4xx.c spi: rb4xx: Don't leak SPI master in probe error path 2020-12-07 14:18:55 +00:00
spi-realtek-rtl.c spi: realtek-rtl: Add support for Realtek RTL838x/RTL839x SPI controllers 2021-02-04 18:45:57 +00:00
spi-rockchip-sfc.c spi: rockchip-sfc: Fix assigned but never used return error codes 2021-08-23 16:41:08 +01:00
spi-rockchip.c spi: rockchip: Support SPI_CS_HIGH 2021-06-23 12:35:43 +01:00
spi-rpc-if.c spi: rpc-if: Gaurd .pm assignment with CONFIG_PM_SLEEP #ifdef check 2021-01-11 16:39:09 +00:00
spi-rspi.c spi: spi-rspi: : use proper DMAENGINE API for termination 2021-06-23 16:33:52 +01:00
spi-s3c24xx-regs.h ARM: s3c24xx: move regs-spi.h into spi driver 2020-08-19 21:40:14 +02:00
spi-s3c24xx.c ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-s3c64xx.c spi: s3c64xx: constify driver/match data 2021-04-15 16:07:58 +01:00
spi-sc18is602.c spi: sc18is602: implement .max_{transfer,message}_size() for the controller 2021-05-21 13:13:33 +01:00
spi-sh-hspi.c
spi-sh-msiof.c spi: spi-sh-msiof: : use proper DMAENGINE API for termination 2021-06-23 16:33:53 +01:00
spi-sh-sci.c
spi-sh.c spi: spi-sh: replace 'delay_usecs' with 'delay.value' in pr_debug 2021-03-12 14:30:45 +00:00
spi-sifive.c
spi-slave-mt27xx.c spi: mediatek: add mt8195 spi slave support 2021-03-23 17:19:45 +00:00
spi-slave-system-control.c
spi-slave-time.c
spi-sprd-adi.c spi: sprd: Add ADI r3 support 2021-08-26 12:09:38 +01:00
spi-sprd.c spi: sprd: Add missing MODULE_DEVICE_TABLE 2021-05-12 13:01:43 +01:00
spi-st-ssc4.c spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path 2020-11-12 15:16:35 +00:00
spi-stm32-qspi.c Merge remote-tracking branch 'spi/for-5.14' into spi-next 2021-06-25 14:08:26 +01:00
spi-stm32.c spi: stm32: fix excluded_middle.cocci warnings 2021-08-20 13:07:27 +01:00
spi-sun4i.c spi: sun4i: update max transfer size reported 2020-07-27 14:55:21 +01:00
spi-sun6i.c spi: spi-sun6i: Fix chipselect/clock bug 2021-06-23 11:48:36 +01:00
spi-synquacer.c spi: spi-synquacer: fix set_cs handling 2021-02-03 16:23:07 +00:00
spi-tegra20-sflash.c spi: spi-tegra20-flash: don't check 'delay_usecs' field for spi transfer 2021-03-12 14:30:46 +00:00
spi-tegra20-slink.c spi: tegra20-slink: remove spi_master_put() in tegra_slink_remove() 2021-08-18 13:57:04 +01:00
spi-tegra114.c spi: modify set_cs_timing parameter 2021-08-05 16:42:54 +01:00
spi-tegra210-quad.c spi: tegra210-quad: Fix an error message 2021-05-10 13:17:19 +01:00
spi-test.h
spi-ti-qspi.c spi: spi-ti-qspi: Free DMA resources 2021-03-10 12:25:09 +00:00
spi-tle62x0.c
spi-topcliff-pch.c spi: spi-topcliff-pch: Fix potential double free in pch_spi_process_messages() 2021-05-10 13:17:16 +01:00
spi-uniphier.c spi: uniphier: Use SPI_MODE_X_MASK 2021-05-11 15:42:52 +01:00
spi-xcomm.c
spi-xilinx.c spi: xilinx: Fix info message during probe 2020-09-17 19:56:01 +01:00
spi-xlp.c
spi-xtensa-xtfpga.c
spi-zynq-qspi.c spi: spi-zynq-qspi: use wait_for_completion_timeout to make zynq_qspi_exec_mem_op not interruptible 2021-08-26 13:42:44 +01:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: return -ENOMEM if dma_map_single fails 2021-04-16 13:44:15 +01:00
spi.c spi: Revert modalias changes 2021-09-21 20:22:48 +01:00
spidev.c misc: gehc-achc: new driver 2021-08-05 14:29:27 +02:00