lkml.org 
[lkml]   [2021]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] video: fbdev: fix use of 'dma_map_single'
    Date
    DMA_TO_DEVICE synchronisation must be done after the last modification
    of the memory region by the software and before it is handed off to
    the device.

    Signed-off-by: Hui Tang <tanghui20@huawei.com>
    ---
    drivers/video/fbdev/grvga.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/video/fbdev/grvga.c b/drivers/video/fbdev/grvga.c
    index 24818b2..25ae9ef 100644
    --- a/drivers/video/fbdev/grvga.c
    +++ b/drivers/video/fbdev/grvga.c
    @@ -435,6 +435,8 @@ static int grvga_probe(struct platform_device *dev)
    retval = -ENOMEM;
    goto dealloc_cmap;
    }
    +
    + memset((unsigned long *) virtual_start, 0, grvga_mem_size);
    } else { /* Allocate frambuffer memory */

    unsigned long page;
    @@ -449,6 +451,7 @@ static int grvga_probe(struct platform_device *dev)
    goto dealloc_cmap;
    }

    + memset((unsigned long *) virtual_start, 0, grvga_mem_size);
    physical_start = dma_map_single(&dev->dev, (void *)virtual_start, grvga_mem_size, DMA_TO_DEVICE);

    /* Set page reserved so that mmap will work. This is necessary
    @@ -463,8 +466,6 @@ static int grvga_probe(struct platform_device *dev)
    par->fb_alloced = 1;
    }

    - memset((unsigned long *) virtual_start, 0, grvga_mem_size);
    -
    info->screen_base = (char __iomem *) virtual_start;
    info->fix.smem_start = physical_start;
    info->fix.smem_len = grvga_mem_size;
    --
    2.8.1
    \
     
     \ /
      Last update: 2021-03-01 05:11    [W:3.768 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site