Hello Arnd, Thierry, Jonathan, Sowjanya, On Tue, Mar 18, 2025 at 09:07:28PM +0100, Arnd Bergmann wrote: > On Tue, Mar 18, 2025, at 20:13, Mark Brown wrote: > > On Tue, Mar 18, 2025 at 08:00:05PM +0100, Arnd Bergmann wrote: > > > >> That does sound like the easiest answer: if the spi controller driver > >> knows that it needs a reset but there is no reset controller, shutting > >> itself down and removing its child devices seems like the least > >> offensive action. > > > > In that case it's probably more just refuse to probe in the first case > > without the reset controller. Given that the device isn't working at > > all it seems like the hardware description is broken anyway... > > Right, I see now that it's doing a rather silly > > if (device_reset(tqspi->dev) < 0) > dev_warn_once(tqspi->dev, "device reset failed\n"); > > after which it just continues instead of propagating returning > the error from the probe function. This would be another option, and I would be happy to update this patch with this suggestion. This patch was attempting to address the issue the other way around, where I was expecting that the reset methods are optional, thus marking the device_reset() function as optional. It appears that on certain UEFI machine types, the ACPI firmware doesn't implement the _RST methods, and device_reset() will *always* fail. It's unclear whether this is due to a broken ACPI table or if it was intentionally designed this way. Tagging the driver maintainer (Thierry, Jonathan, Sowjanya) who might have a better understanding of the design in such cases. > This is also broken when > the reset controller driver has not been loaded yet and it > should do an -EPROBE_DEFER. > > In case of a broken ACPI table, this would simply fail the > probe() with an error, which seems like a sensible behavior. Do we agree that the device reset methods MUST always exist (on both DT and UEFI hosts)? Anyway, from my naive view, we should: 1) Mark as required, and fail the probe, if this device_reset() must have available methods. (Arnd's suggestion) 2) Mark device_reset as optional if device reset is optional (as the current situation suggest). a) If the requirements are different for DT and UEFI, then should we create a "device_reset_optional_on_acpi_but_not_DT()" helper to handle such cases(!?) Thanks for the discussion, --breno