On Wed, 19 Jun 2019 at 13:58, Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx> wrote: > > On 6/19/19 1:16 PM, Mika Westerberg wrote: > > On Wed, Jun 19, 2019 at 11:52:54AM +0200, Ard Biesheuvel wrote: > >> The ACPI device object parsing code for SPI slaves enumerates the > >> entire ACPI namespace to look for devices that refer to the master > >> in question via the 'resource_source' field in the 'SPISerialBus' > >> resource. If that field does not refer to a valid ACPI device or > >> if it refers to the wrong SPI master, we should disregard the > >> device. > >> > >> Current, the valid device check is wrong, since it gets the > >> polarity of 'status' wrong. This could cause issues if the > >> 'resource_source' field is bogus but parent_handle happens to > >> refer to the correct master (which is not entirely imaginary > >> since this code runs in a loop) > >> > >> So test for ACPI_FAILURE() instead, to make the code more > >> self explanatory. > >> > >> Fixes: 4c3c59544f33 ("spi/acpi: enumerate all SPI slaves in the namespace") > >> Reported-by: kbuild test robot <lkp@xxxxxxxxx> > >> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > >> Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> > > > > Acked-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> > > > I hit yesterday a regression caused by 4c3c59544f33. I've a custom ACPI > tables defining I2C gpio expanders (gpio-pca953x.c as INT3491) and a > spidev test device (SPT0001). > > Both stopped enumerating after 4c3c59544f33. With this fix spidev device > enumerates but still get confused with I2C GPIO expanders (INT3491): > Could you share the decomplied D/SSDT please? > [ 5.629874][ T1] pxa2xx-spi pxa2xx-spi.3: registered master spi3 > [ 5.644447][ T1] pxa2xx-spi pxa2xx-spi.5: registered master spi5 > [ 5.653930][ T1] spi spi-SPT0001:00: in setup: DMA burst size set to 8 > [ 5.661300][ T1] spi spi-SPT0001:00: setup mode 0, 8 bits/w, > 1000000 Hz max --> 0 > [ 5.671360][ T1] spidev spi-SPT0001:00: do not use this driver in > production systems! > [ 5.682325][ T1] pxa2xx-spi pxa2xx-spi.5: registered child > spi-SPT0001:00 > [ 5.690240][ T1] spi spi-PRP0001:00: in setup: DMA burst size set to 8 > [ 5.697492][ T1] spi spi-PRP0001:00: setup mode 0, 8 bits/w, > 20000000 Hz max --> 0 > [ 5.706928][ T1] pxa2xx-spi pxa2xx-spi.5: registered child > spi-PRP0001:00 > [ 5.715754][ T1] pxa2xx-spi pxa2xx-spi.5: cs104 >= max 4 > [ 5.721688][ T1] spi_master spi5: failed to add SPI device > INT3491:00 from ACPI > [ 5.730648][ T1] pxa2xx-spi pxa2xx-spi.5: cs104 >= max 4 > [ 5.736657][ T1] spi_master spi5: failed to add SPI device > INT3491:01 from ACPI > [ 5.745617][ T1] pxa2xx-spi pxa2xx-spi.5: cs104 >= max 4 > [ 5.751546][ T1] spi_master spi5: failed to add SPI device > INT3491:02 from ACPI > [ 5.760628][ T1] pxa2xx-spi pxa2xx-spi.5: cs104 >= max 4 > [ 5.766549][ T1] spi_master spi5: failed to add SPI device > INT3491:03 from ACPI > [ 5.777160][ T1] pxa2xx-spi pxa2xx-spi.5: cs104 >= max 4 > [ 5.783087][ T1] spi_master spi5: failed to add SPI device > BCM2E95:00 from ACPI > [ 5.797008][ T1] pxa2xx-spi pxa2xx-spi.6: registered master spi6 > > Ok log with commit 4c3c59544f33 reverted: > > [ 5.633116][ T1] pxa2xx-spi pxa2xx-spi.3: registered master spi3 > [ 5.647701][ T1] pxa2xx-spi pxa2xx-spi.5: registered master spi5 > [ 5.655668][ T1] spi spi-SPT0001:00: in setup: DMA burst size set to 8 > [ 5.663066][ T1] spi spi-SPT0001:00: setup mode 0, 8 bits/w, > 1000000 Hz max --> 0 > [ 5.672758][ T1] pxa2xx-spi pxa2xx-spi.5: registered child > spi-SPT0001:00 > [ 5.680602][ T1] spi spi-PRP0001:00: in setup: DMA burst size set to 8 > [ 5.687820][ T1] spi spi-PRP0001:00: setup mode 0, 8 bits/w, > 20000000 Hz max --> 0 > [ 5.697366][ T1] pxa2xx-spi pxa2xx-spi.5: registered child > spi-PRP0001:00 > [ 5.709064][ T1] pxa2xx-spi pxa2xx-spi.6: registered master spi6 > [ 11.021760][ T84] spidev spi-SPT0001:00: do not use this driver in > production systems! > > -- > Jarkko