From: Nam Cao <namcao@linutronix.de> To: linus.walleij@linaro.org, broonie@kernel.org, linux-arm-kernel@lists.infradead.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Nam Cao <namcao@linutronix.de> Subject: [PATCH v2 0/2] spi: spl022: fix sleeping in interrupt context Date: Wed, 29 Nov 2023 17:31:54 +0100 [thread overview] Message-ID: <cover.1701274975.git.namcao@linutronix.de> (raw) Hi, While running the spl022, I got the following warning: BUG: sleeping function called from invalid context at drivers/spi/spi.c:1428 This is because between spi transfers, spi_transfer_delay_exec() (who may sleep if the delay is >10us) is called in interrupt context. This is a problem for anyone who runs this driver and need more than 10us delay. Patch 1 adds an error reporting mechanism, needed by patch 2 who switch to use the default spi_transfer_one_message(), which fix the problem. The series is tested with polling transfer mode and interrupt transfer mode. I can't test the DMA mode, so some help testing here is very appreciated. One question: This series is quite big for stable trees, so how can we backport this fix? We can: - Let it be released, and get tested for some time. After a while without any reported problem, backport it. - Have a small patch which fixes this problem. One idea I have is to switch the current interrupt handler to threaded interrupt handler, and switch from existing use of tasklet to workqueue. So that the driver can safely sleep if needed. And then add this series on top of that. - other options that I miss? Best regards, Nam v2: add some documents for the new flag. No functional change. Nam Cao (2): spi: introduce SPI_TRANS_FAIL_IO for error reporting spi: spl022: switch to use default spi_transfer_one_message() drivers/spi/spi-pl022.c | 372 +++++++--------------------------------- drivers/spi/spi.c | 3 + include/linux/spi/spi.h | 12 +- 3 files changed, 77 insertions(+), 310 deletions(-) -- 2.39.2
WARNING: multiple messages have this Message-ID (diff)
From: Nam Cao <namcao@linutronix.de> To: linus.walleij@linaro.org, broonie@kernel.org, linux-arm-kernel@lists.infradead.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Nam Cao <namcao@linutronix.de> Subject: [PATCH v2 0/2] spi: spl022: fix sleeping in interrupt context Date: Wed, 29 Nov 2023 17:31:54 +0100 [thread overview] Message-ID: <cover.1701274975.git.namcao@linutronix.de> (raw) Hi, While running the spl022, I got the following warning: BUG: sleeping function called from invalid context at drivers/spi/spi.c:1428 This is because between spi transfers, spi_transfer_delay_exec() (who may sleep if the delay is >10us) is called in interrupt context. This is a problem for anyone who runs this driver and need more than 10us delay. Patch 1 adds an error reporting mechanism, needed by patch 2 who switch to use the default spi_transfer_one_message(), which fix the problem. The series is tested with polling transfer mode and interrupt transfer mode. I can't test the DMA mode, so some help testing here is very appreciated. One question: This series is quite big for stable trees, so how can we backport this fix? We can: - Let it be released, and get tested for some time. After a while without any reported problem, backport it. - Have a small patch which fixes this problem. One idea I have is to switch the current interrupt handler to threaded interrupt handler, and switch from existing use of tasklet to workqueue. So that the driver can safely sleep if needed. And then add this series on top of that. - other options that I miss? Best regards, Nam v2: add some documents for the new flag. No functional change. Nam Cao (2): spi: introduce SPI_TRANS_FAIL_IO for error reporting spi: spl022: switch to use default spi_transfer_one_message() drivers/spi/spi-pl022.c | 372 +++++++--------------------------------- drivers/spi/spi.c | 3 + include/linux/spi/spi.h | 12 +- 3 files changed, 77 insertions(+), 310 deletions(-) -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2023-11-29 16:32 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-29 16:31 Nam Cao [this message] 2023-11-29 16:31 ` [PATCH v2 0/2] spi: spl022: fix sleeping in interrupt context Nam Cao 2023-11-29 16:31 ` [PATCH v2 1/2] spi: introduce SPI_TRANS_FAIL_IO for error reporting Nam Cao 2023-11-29 16:31 ` Nam Cao 2023-11-29 16:31 ` [PATCH v2 2/2] spi: spl022: switch to use default spi_transfer_one_message() Nam Cao 2023-11-29 16:31 ` Nam Cao 2023-12-14 0:19 ` Linus Walleij 2023-12-14 0:19 ` Linus Walleij 2023-12-14 7:49 ` Nam Cao 2023-12-14 7:49 ` Nam Cao 2023-12-04 15:47 ` [PATCH v2 0/2] spi: spl022: fix sleeping in interrupt context Mark Brown 2023-12-04 15:47 ` Mark Brown
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=cover.1701274975.git.namcao@linutronix.de \ --to=namcao@linutronix.de \ --cc=broonie@kernel.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.