From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <5d71ef95.1c69fb81.6d090.085d@mx.google.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable In-Reply-To: <20190905192412.23116-1-lee.jones@linaro.org> References: <20190905192412.23116-1-lee.jones@linaro.org> From: Stephen Boyd Subject: Re: [RESEND v3 1/1] i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 Date: Thu, 05 Sep 2019 22:33:08 -0700 To: Lee Jones , agross@kernel.org, alokc@codeaurora.org, bjorn.andersson@linaro.org, mark.rutland@arm.com, robh+dt@kernel.org, vkoul@kernel.org, wsa@the-dreams.de Cc: linux-i2c@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org List-ID: Quoting Lee Jones (2019-09-05 12:24:12) > 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. >=20 > Attempts are being made to debug the reason for the spontaneous reboot. > No luck so far, hence the requirement for this hot-fix. This workaround > will be removed once we have a viable fix. >=20 > Signed-off-by: Lee Jones > --- > drivers/i2c/busses/i2c-qcom-geni.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) >=20 > 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 =3D NULL; > struct geni_se *se =3D &gi2c->se; > size_t len =3D msg->len; > =20 > - dma_buf =3D i2c_get_dma_safe_msg_buf(msg, 32); > + if (!of_machine_is_compatible("lenovo,yoga-c630")) This compatible isn't in the 5.3 rc series nor is it in linux-next yet. Is this "hot-fix" for the next merge window? Or is this compatible string being generated by firmware somewhere and thus isn't part of the kernel? > + dma_buf =3D i2c_get_dma_safe_msg_buf(msg, 32); > + > if (dma_buf) > geni_se_select_mode(se, GENI_SE_DMA); > else