lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 17 Dec 2020 18:54:23 -0800 From: Stephen Boyd <swboyd@...omium.org> To: Douglas Anderson <dianders@...omium.org>, Mark Brown <broonie@...nel.org> Cc: msavaliy@....qualcomm.com, akashast@...eaurora.org, Roja Rani Yarubandi <rojay@...eaurora.org>, Douglas Anderson <dianders@...omium.org>, Andy Gross <agross@...nel.org>, Bjorn Andersson <bjorn.andersson@...aro.org>, linux-arm-msm@...r.kernel.org, linux-kernel@...r.kernel.org, linux-spi@...r.kernel.org Subject: Re: [PATCH v3 3/4] spi: spi-geni-qcom: Don't try to set CS if an xfer is pending Quoting Douglas Anderson (2020-12-17 14:29:13) > If we get a timeout sending then this happens: > > spi_transfer_one_message() > ->transfer_one() AKA spi_geni_transfer_one() > setup_fifo_xfer() > mas->cur_xfer = non-NULL > spi_transfer_wait() => TIMES OUT > if (msg->status != -EINPROGRESS) > goto out > if (ret != 0 ...) > spi_set_cs() > ->set_cs AKA spi_geni_set_cs() > # mas->cur_xfer is non-NULL > > The above happens _before_ the SPI core calls ->handle_err() AKA > handle_fifo_timeout(). > > Unfortunately that won't work so well on geni. If we got a timeout > transferring then it's likely that our interrupt handler is blocked, > but we need that same interrupt handler to run and the command channel > to be unblocked in order to adjust the chip select. Trying to set the > chip select doesn't crash us but ends up confusing our state machine > and leads to messages like: Premature done. rx_rem = 32 bpw8 > > Let's just drop the chip select request in this case. We can detect > the case because cur_xfer is non-NULL--it would have been set to NULL > in the interrupt handler if the previous transfer had finished. Sure, > we might leave the chip select in the wrong state but it's likely it > was going to fail anyway and this avoids getting the driver even more > confused about what it's doing. > > The SPI core in general assumes that setting chip select is a simple > operation that doesn't fail. Yet another reason to just reconfigure > the chip select line as GPIOs. > > Signed-off-by: Douglas Anderson <dianders@...omium.org> > --- Reviewed-by: Stephen Boyd <swboyd@...omium.org>
Powered by blists - more mailing lists