Re: [RESEND v3 1/1] i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 05 Sep 2019, Stephen Boyd wrote:

> 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.
> > 
> > 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.
> > 
> > Signed-off-by: Lee Jones <lee.jones@xxxxxxxxxx>
> > ---
> >  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"))
> 
> 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?

It's on the list and will be in all of the distro v5.3 release kernels.

https://lkml.org/lkml/2019/9/5/695

> > +               dma_buf = i2c_get_dma_safe_msg_buf(msg, 32);
> > +
> >         if (dma_buf)
> >                 geni_se_select_mode(se, GENI_SE_DMA);
> >         else

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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux