lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 321/452] i2c: at91: use dma safe buffers
    Date
    From: Michael Walle <michael@walle.cc>

    [ Upstream commit 03fbb903c8bf7e53e101e8d9a7b261264317c411 ]

    The supplied buffer might be on the stack and we get the following error
    message:
    [ 3.312058] at91_i2c e0070600.i2c: rejecting DMA map of vmalloc memory

    Use i2c_{get,put}_dma_safe_msg_buf() to get a DMA-able memory region if
    necessary.

    Fixes: 60937b2cdbf9 ("i2c: at91: add dma support")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Reviewed-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/i2c/busses/i2c-at91-master.c | 11 +++++++++++
    1 file changed, 11 insertions(+)

    diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-at91-master.c
    index 66864f9cf7ac..974225faaf96 100644
    --- a/drivers/i2c/busses/i2c-at91-master.c
    +++ b/drivers/i2c/busses/i2c-at91-master.c
    @@ -657,6 +657,7 @@ static int at91_twi_xfer(struct i2c_adapter *adap, struct i2c_msg *msg, int num)
    unsigned int_addr_flag = 0;
    struct i2c_msg *m_start = msg;
    bool is_read;
    + u8 *dma_buf;

    dev_dbg(&adap->dev, "at91_xfer: processing %d messages:\n", num);

    @@ -704,7 +705,17 @@ static int at91_twi_xfer(struct i2c_adapter *adap, struct i2c_msg *msg, int num)
    dev->msg = m_start;
    dev->recv_len_abort = false;

    + if (dev->use_dma) {
    + dma_buf = i2c_get_dma_safe_msg_buf(m_start, 1);
    + if (!dma_buf) {
    + ret = -ENOMEM;
    + goto out;
    + }
    + dev->buf = dma_buf;
    + }
    +
    ret = at91_do_twi_transfer(dev);
    + i2c_put_dma_safe_msg_buf(dma_buf, m_start, !ret);

    ret = (ret < 0) ? ret : num;
    out:
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 19:58    [W:4.061 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site