* [PATCH v3] spi: fix the divide by 0 error when calculating xfer waiting time
@ 2021-01-04 1:29 Xu Yilun
2021-01-04 17:41 ` Mark Brown
0 siblings, 1 reply; 2+ messages in thread
From: Xu Yilun @ 2021-01-04 1:29 UTC (permalink / raw)
To: broonie, linux-spi
Cc: trix, lgoncalv, yilun.xu, hao.wu, matthew.gerlach,
russell.h.weight, linux-kernel
The xfer waiting time is the result of xfer->len / xfer->speed_hz. This
patch makes the assumption of 100khz xfer speed if the xfer->speed_hz is
not assigned and stays 0. This avoids the divide by 0 issue and ensures
a reasonable tolerant waiting time.
Signed-off-by: Xu Yilun <yilun.xu@intel.com>
---
v2: use the normal conditional statement instead of the ternery operator
change the default xfer speed from 1khz to 100khz
v3: fix the commit message
---
drivers/spi/spi.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 51d7c00..aacae88 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1108,6 +1108,7 @@ static int spi_transfer_wait(struct spi_controller *ctlr,
{
struct spi_statistics *statm = &ctlr->statistics;
struct spi_statistics *stats = &msg->spi->statistics;
+ u32 speed_hz = xfer->speed_hz;
unsigned long long ms;
if (spi_controller_is_slave(ctlr)) {
@@ -1116,8 +1117,11 @@ static int spi_transfer_wait(struct spi_controller *ctlr,
return -EINTR;
}
} else {
+ if (!speed_hz)
+ speed_hz = 100000;
+
ms = 8LL * 1000LL * xfer->len;
- do_div(ms, xfer->speed_hz);
+ do_div(ms, speed_hz);
ms += ms + 200; /* some tolerance */
if (ms > UINT_MAX)
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3] spi: fix the divide by 0 error when calculating xfer waiting time
2021-01-04 1:29 [PATCH v3] spi: fix the divide by 0 error when calculating xfer waiting time Xu Yilun
@ 2021-01-04 17:41 ` Mark Brown
0 siblings, 0 replies; 2+ messages in thread
From: Mark Brown @ 2021-01-04 17:41 UTC (permalink / raw)
To: Xu Yilun, linux-spi
Cc: matthew.gerlach, lgoncalv, russell.h.weight, hao.wu, trix,
linux-kernel
On Mon, 4 Jan 2021 09:29:09 +0800, Xu Yilun wrote:
> The xfer waiting time is the result of xfer->len / xfer->speed_hz. This
> patch makes the assumption of 100khz xfer speed if the xfer->speed_hz is
> not assigned and stays 0. This avoids the divide by 0 issue and ensures
> a reasonable tolerant waiting time.
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
Thanks!
[1/1] spi: fix the divide by 0 error when calculating xfer waiting time
commit: 6170d077bf92c5b3dfbe1021688d3c0404f7c9e9
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-01-04 17:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-04 1:29 [PATCH v3] spi: fix the divide by 0 error when calculating xfer waiting time Xu Yilun
2021-01-04 17:41 ` Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).