diff options
author | Minwuk Lee <mlee@nvidia.com> | 2011-01-27 12:09:19 -0800 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-01-28 19:56:14 -0800 |
commit | c356539f56daf35a0d82a3363a632f2d23f39337 (patch) | |
tree | 12b6cea274d994b7f49ce2275d073109479c5743 | |
parent | 9c689e66aaf955a838c7477b5671021c154ab037 (diff) |
[video: tegra: nvmap] perform cache maintenance for rw_handle
Need cache maintenance on rw_handle to remove
display garbage issue which happens randomly.
Bug 778138
Change-Id: I227913d1e49d7c28a1a776e2b946cfa0cc7e9803
Reviewed-on: http://git-master/r/17236
Reviewed-by: Niket Sirsi <nsirsi@nvidia.com>
Tested-by: Niket Sirsi <nsirsi@nvidia.com>
-rwxr-xr-x[-rw-r--r--] | drivers/video/tegra/nvmap/nvmap_ioctl.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/video/tegra/nvmap/nvmap_ioctl.c b/drivers/video/tegra/nvmap/nvmap_ioctl.c index 0c772f81ffa8..5e1392e56567 100644..100755 --- a/drivers/video/tegra/nvmap/nvmap_ioctl.c +++ b/drivers/video/tegra/nvmap/nvmap_ioctl.c @@ -623,6 +623,9 @@ static ssize_t rw_handle(struct nvmap_client *client, struct nvmap_handle *h, ret = -EFAULT; break; } + if(is_read) + cache_maint(client, h, h_offs, + h_offs + elem_size, NVMAP_CACHE_OP_INV); ret = rw_handle_page(h, is_read, h_offs, sys_addr, elem_size, (unsigned long)addr, *pte); @@ -630,6 +633,10 @@ static ssize_t rw_handle(struct nvmap_client *client, struct nvmap_handle *h, if (ret) break; + if(!is_read) + cache_maint(client, h, h_offs, + h_offs + elem_size, NVMAP_CACHE_OP_WB); + copied += elem_size; sys_addr += sys_stride; h_offs += h_stride; |