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