msm: kgsl: Perform cache flush on the pages obtained using get_user_pages()
Consider a scenario where user allocates anonymous memory but does not write to it. Here the physical pages are not yet allocated. Now when this memory is requested to be imported, a list of newly allocated zero pages is obtained using get_user_pages(). Currently cache flush is not done for these pages and hence GPU sees stale data. Fix this by performing cache flush on these pages. Change-Id: Id1e8aa20e8a9de112761732ed92f30c01088840b Signed-off-by: Puranam V G Tejaswi <quic_pvgtejas@quicinc.com> Signed-off-by: Sebanti Das <quic_sebadas@quicinc.com> Signed-off-by: Kamal Agrawal <quic_kamaagra@quicinc.com>
This commit is contained in:
parent
ca935e323f
commit
63b454fefb
1 changed files with 10 additions and 0 deletions
|
|
@ -1,4 +1,5 @@
|
|||
/* Copyright (c) 2008-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
|
@ -2179,6 +2180,15 @@ static int memdesc_sg_virt(struct kgsl_memdesc *memdesc, unsigned long useraddr)
|
|||
|
||||
ret = sg_alloc_table_from_pages(memdesc->sgt, pages, npages,
|
||||
0, memdesc->size, GFP_KERNEL);
|
||||
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = kgsl_cache_range_op(memdesc, 0, memdesc->size,
|
||||
KGSL_CACHE_OP_FLUSH);
|
||||
|
||||
if (ret)
|
||||
sg_free_table(memdesc->sgt);
|
||||
out:
|
||||
if (ret) {
|
||||
for (i = 0; i < npages; i++)
|
||||
|
|
|
|||
Loading…
Reference in a new issue