On Thu 12 Nov 10:22 CST 2020, Caleb Connolly wrote: > The OnePlus 6/T has the same issue as the Yoga c630 causing a crash when DMA > is used for i2c, so disable it. > > https://patchwork.kernel.org/patch/11133827/ > > Signed-off-by: Caleb Connolly <caleb@xxxxxxxxxxxxx> > --- > drivers/i2c/busses/i2c-qcom-geni.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c > index 8b4c35f47a70..9acdcfe73be2 100644 > --- a/drivers/i2c/busses/i2c-qcom-geni.c > +++ b/drivers/i2c/busses/i2c-qcom-geni.c > @@ -357,7 +357,8 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, > struct geni_se *se = &gi2c->se; > size_t len = msg->len; > > - if (!of_machine_is_compatible("lenovo,yoga-c630")) > + if (!of_machine_is_compatible("lenovo,yoga-c630") && > + !of_machine_is_compatible("oneplus,oneplus6")) This hack seems to have been working around two separate issues. First with iommu active the GENI wrappers needs to have their stream mapping configured. Secondly there was a bug in the transaction setup that was recently fixed by Doug Anderson. So can you please give the following patch a go? I've yet to test it on the Lenovo machine, but I think it allows us to remove the quirk. https://lore.kernel.org/lkml/20201122034149.626045-1-bjorn.andersson@xxxxxxxxxx/T/#u Regards, Bjorn > dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); > > if (dma_buf) > @@ -399,7 +400,8 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, > struct geni_se *se = &gi2c->se; > size_t len = msg->len; > > - if (!of_machine_is_compatible("lenovo,yoga-c630")) > + if (!of_machine_is_compatible("lenovo,yoga-c630") && > + !of_machine_is_compatible("oneplus,oneplus6")) > dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); > > if (dma_buf) > -- > 2.29.2 > >