Hi, >> sg_set_buf expects that the buf parameter passed in should be from >> lowmem and a valid pageframe. This is not true for pages from >> dma_alloc_coherent which can be carveouts, hence the check fails. > >OK, given you mean dma_pool_alloc here, the check fails for the >pageframe because of the pool? Is my understanding correct? > Yes right. Since those are carveouts, there is no valid pageframe, so the check fails. >> Change allocation of sg buffers from dma_coherent memory to kzalloc >> to fix the issue. > >But why can you drop the coherency? > The coherency is not dropped here. dma_map/unmap used makes the buffer coherent before passing it to dmaengine. Previously it was not required. I can add this in description if its not clear. >> @@ -1268,6 +1260,8 @@ static int qup_i2c_xfer_v2(struct i2c_adapter *adap, >> } >> } >> >> + idx = 0; >> + > >This looks like an unrelated change. Ha, wrong. This should have been in a separate patch. This was to fix a initialization issue in dma mode. Sorry, should not have been here, will move it to out. Regards, Sricharan -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html