linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing
@ 2019-09-05 10:22 Lee Jones
  2019-09-05 13:49 ` Wolfram Sang
  0 siblings, 1 reply; 4+ messages in thread
From: Lee Jones @ 2019-09-05 10:22 UTC (permalink / raw)
  To: alokc, agross, robh+dt, mark.rutland, bjorn.andersson, vkoul, wsa
  Cc: devicetree, linux-arm-msm, linux-kernel, linux-i2c, Lee Jones,
	linux-arm-kernel

We have a production-level laptop (Lenovo Yoga C630) which is exhibiting
a rather horrific bug.  When I2C HID devices are being scanned for at
boot-time the QCom Geni based I2C (Serial Engine) attempts to use DMA.
When it does, the laptop reboots and the user never sees the OS.

The beautiful thing about this approach is that, *if* the Geni SE DMA
ever starts working, we can remove the C code and any old properties
left in older DTs just become NOOP.  Older kernels with newer DTs (less
of a priority) *still* will not work - but they do not work now anyway.

Fixes: 8bc529b25354 ("soc: qcom: geni: Add support for ACPI")
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
---
 drivers/i2c/busses/i2c-qcom-geni.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
index a89bfce5388e..17abf60c94ae 100644
--- a/drivers/i2c/busses/i2c-qcom-geni.c
+++ b/drivers/i2c/busses/i2c-qcom-geni.c
@@ -355,11 +355,13 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 {
 	dma_addr_t rx_dma;
 	unsigned long time_left;
-	void *dma_buf;
+	void *dma_buf = NULL;
 	struct geni_se *se = &gi2c->se;
 	size_t len = msg->len;
 
-	dma_buf = i2c_get_dma_safe_msg_buf(msg, 32);
+	if (!of_machine_is_compatible("lenovo,yoga-c630"))
+		dma_buf = i2c_get_dma_safe_msg_buf(msg, 32);
+
 	if (dma_buf)
 		geni_se_select_mode(se, GENI_SE_DMA);
 	else
@@ -394,11 +396,13 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 {
 	dma_addr_t tx_dma;
 	unsigned long time_left;
-	void *dma_buf;
+	void *dma_buf = NULL;
 	struct geni_se *se = &gi2c->se;
 	size_t len = msg->len;
 
-	dma_buf = i2c_get_dma_safe_msg_buf(msg, 32);
+	if (!of_machine_is_compatible("lenovo,yoga-c630"))
+		dma_buf = i2c_get_dma_safe_msg_buf(msg, 32);
+
 	if (dma_buf)
 		geni_se_select_mode(se, GENI_SE_DMA);
 	else
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing
  2019-09-05 10:22 [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing Lee Jones
@ 2019-09-05 13:49 ` Wolfram Sang
  2019-09-05 13:58   ` Peter Rosin
  0 siblings, 1 reply; 4+ messages in thread
From: Wolfram Sang @ 2019-09-05 13:49 UTC (permalink / raw)
  To: Lee Jones
  Cc: mark.rutland, devicetree, linux-kernel, agross, robh+dt,
	bjorn.andersson, vkoul, alokc, linux-i2c, linux-arm-msm,
	linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1273 bytes --]

Hi Lee,

I understand you are in a hurry, but please double check before
sending...

On Thu, Sep 05, 2019 at 11:22:47AM +0100, Lee Jones wrote:
> We have a production-level laptop (Lenovo Yoga C630) which is exhibiting
> a rather horrific bug.  When I2C HID devices are being scanned for at
> boot-time the QCom Geni based I2C (Serial Engine) attempts to use DMA.
> When it does, the laptop reboots and the user never sees the OS.
> 
> The beautiful thing about this approach is that, *if* the Geni SE DMA
> ever starts working, we can remove the C code and any old properties
> left in older DTs just become NOOP.  Older kernels with newer DTs (less
> of a priority) *still* will not work - but they do not work now anyway.

... becasue this paragraph doesn't fit anymore. Needs to be reworded.

> 
> Fixes: 8bc529b25354 ("soc: qcom: geni: Add support for ACPI")

As said in the other thread, I don't get it, but this is not a show
stopper for me.

> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> Reviewed-by: Vinod Koul <vkoul@kernel.org>

I'd like Vinod to resend his review. Because IMO the change since v2 was
not trivial, so the old rev-by has to be dropped.

Other than that, the code looks good to me!

Regards,

   Wolfram


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing
  2019-09-05 13:49 ` Wolfram Sang
@ 2019-09-05 13:58   ` Peter Rosin
  2019-09-05 14:33     ` Lee Jones
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Rosin @ 2019-09-05 13:58 UTC (permalink / raw)
  To: Wolfram Sang, Lee Jones
  Cc: mark.rutland, devicetree, linux-kernel, agross, robh+dt,
	bjorn.andersson, vkoul, alokc, linux-i2c, linux-arm-msm,
	linux-arm-kernel

On 2019-09-05 15:49, Wolfram Sang wrote:
> Hi Lee,
> 
> I understand you are in a hurry, but please double check before
> sending...

Linus indicated that an rc8 is coming up, which should provide an extra week.
https://lwn.net/Articles/798152/

> On Thu, Sep 05, 2019 at 11:22:47AM +0100, Lee Jones wrote:
>> We have a production-level laptop (Lenovo Yoga C630) which is exhibiting
>> a rather horrific bug.  When I2C HID devices are being scanned for at
>> boot-time the QCom Geni based I2C (Serial Engine) attempts to use DMA.
>> When it does, the laptop reboots and the user never sees the OS.
>>
>> The beautiful thing about this approach is that, *if* the Geni SE DMA
>> ever starts working, we can remove the C code and any old properties
>> left in older DTs just become NOOP.  Older kernels with newer DTs (less
>> of a priority) *still* will not work - but they do not work now anyway.
> 
> ... becasue this paragraph doesn't fit anymore. Needs to be reworded.
> 
>>
>> Fixes: 8bc529b25354 ("soc: qcom: geni: Add support for ACPI")
> 
> As said in the other thread, I don't get it, but this is not a show
> stopper for me.

WAG: because ACPI made some driver load at all, and when it
did it something started happening which crashed some machines.

Cheers,
Peter

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing
  2019-09-05 13:58   ` Peter Rosin
@ 2019-09-05 14:33     ` Lee Jones
  0 siblings, 0 replies; 4+ messages in thread
From: Lee Jones @ 2019-09-05 14:33 UTC (permalink / raw)
  To: Peter Rosin
  Cc: mark.rutland, devicetree, Wolfram Sang, linux-kernel, agross,
	robh+dt, bjorn.andersson, vkoul, alokc, linux-i2c, linux-arm-msm,
	linux-arm-kernel

On Thu, 05 Sep 2019, Peter Rosin wrote:

> On 2019-09-05 15:49, Wolfram Sang wrote:
> > Hi Lee,
> > 
> > I understand you are in a hurry, but please double check before
> > sending...
> 
> Linus indicated that an rc8 is coming up, which should provide an extra week.
> https://lwn.net/Articles/798152/

That is good news.

> > On Thu, Sep 05, 2019 at 11:22:47AM +0100, Lee Jones wrote:
> >> We have a production-level laptop (Lenovo Yoga C630) which is exhibiting
> >> a rather horrific bug.  When I2C HID devices are being scanned for at
> >> boot-time the QCom Geni based I2C (Serial Engine) attempts to use DMA.
> >> When it does, the laptop reboots and the user never sees the OS.
> >>
> >> The beautiful thing about this approach is that, *if* the Geni SE DMA
> >> ever starts working, we can remove the C code and any old properties
> >> left in older DTs just become NOOP.  Older kernels with newer DTs (less
> >> of a priority) *still* will not work - but they do not work now anyway.
> > 
> > ... becasue this paragraph doesn't fit anymore. Needs to be reworded.

Yes, you're right.  I noticed almost the moment I pressed send. :(

> >> Fixes: 8bc529b25354 ("soc: qcom: geni: Add support for ACPI")
> > 
> > As said in the other thread, I don't get it, but this is not a show
> > stopper for me.

Ah wait.  Yes, this is applied against the wrong patch.

Please ignore.

> WAG: because ACPI made some driver load at all, and when it
> did it something started happening which crashed some machines.

I'm not sure I understand this sentence.

... resending now.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-09-05 14:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-05 10:22 [PATCH v3 1/1] i2c: qcom-geni: Provide an option to disable DMA processing Lee Jones
2019-09-05 13:49 ` Wolfram Sang
2019-09-05 13:58   ` Peter Rosin
2019-09-05 14:33     ` Lee Jones

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).