summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/nvmap
diff options
context:
space:
mode:
authorvdumpa <vdumpa@nvidia.com>2011-01-31 16:54:49 -0800
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:44:54 -0800
commitd84d45e375acecae9eedb2a57a30e7af797ff161 (patch)
tree1cf0dd2c9bf492f86e419a28b7f4d74a4f4acec6 /drivers/video/tegra/nvmap
parent3871ba6c5b33545cbea4c456e1d796dce4d97f42 (diff)
video:tegra:nvmap: Allow mapping uc/wc memory as wb.
Bug 786016 Original-Change-Id: Ic72c57b710a305851dfea3dda3eb217156683b39 Reviewed-on: http://git-master/r/17795 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R9839c206d5606463e124c59f733282561ff8a48d
Diffstat (limited to 'drivers/video/tegra/nvmap')
-rw-r--r--drivers/video/tegra/nvmap/nvmap_ioctl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/video/tegra/nvmap/nvmap_ioctl.c b/drivers/video/tegra/nvmap/nvmap_ioctl.c
index 91d0a148202b..b63ddd1893c4 100644
--- a/drivers/video/tegra/nvmap/nvmap_ioctl.c
+++ b/drivers/video/tegra/nvmap/nvmap_ioctl.c
@@ -282,6 +282,18 @@ int nvmap_map_into_caller_ptr(struct file *filp, void __user *arg)
vpriv->handle = h;
vpriv->offs = op.offset;
+ if (op.flags == NVMAP_HANDLE_INNER_CACHEABLE) {
+ if (h->orig_size & ~PAGE_MASK) {
+ pr_err("\n%s:attempt to convert a buffer from uc/wc to"
+ " wb, whose size is not a multiple of page size."
+ " request ignored.\n", __func__);
+ } else {
+ wmb();
+ /* override allocation time cache coherency attributes. */
+ h->flags &= (~NVMAP_HANDLE_CACHEABLE);
+ h->flags |= NVMAP_HANDLE_INNER_CACHEABLE;
+ }
+ }
vma->vm_page_prot = nvmap_pgprot(h, vma->vm_page_prot);
out: