summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKrishna Reddy <vdumpa@nvidia.com>2011-12-28 15:20:58 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-28 22:15:48 -0800
commita23faeea394e35796333d3e9596cabed354aeed3 (patch)
tree9c6266e62b949172c918eed7a2fcb30dba997b33 /drivers
parenta8717590e3d7fb0e1de6f482c2b6577a8f48d068 (diff)
video: tegra: host: Use nvmap handle conversion macro.
Use nvmap user space to kernel handle conversion macro. Change-Id: I65ce6cee77e46ab2d3a7ac49a1b210fae7a85810 Signed-off-by: Krishna Reddy <vdumpa@nvidia.com> Reviewed-on: http://git-master/r/71029 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Scott Williams <scwilliams@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/host/dev.c29
-rw-r--r--drivers/video/tegra/host/nvhost_job.c2
2 files changed, 17 insertions, 14 deletions
diff --git a/drivers/video/tegra/host/dev.c b/drivers/video/tegra/host/dev.c
index fe5fb22add92..b0a4c20ba32b 100644
--- a/drivers/video/tegra/host/dev.c
+++ b/drivers/video/tegra/host/dev.c
@@ -252,35 +252,38 @@ static ssize_t nvhost_channelwrite(struct file *filp, const char __user *buf,
cmdbuf.mem, cmdbuf.words, cmdbuf.offset);
hdr->num_cmdbufs--;
} else if (hdr->num_relocs) {
+ struct nvmap_pinarray_elem *elem =
+ &job->pinarray[job->num_pins];
consumed = sizeof(struct nvhost_reloc);
if (remaining < consumed)
break;
- if (copy_from_user(&job->pinarray[job->num_pins],
- buf, consumed)) {
+ if (copy_from_user(elem, buf, consumed)) {
err = -EFAULT;
break;
}
+ elem->patch_mem =
+ nvmap_convert_handle_u2k(elem->patch_mem);
+ elem->pin_mem =
+ nvmap_convert_handle_u2k(elem->pin_mem);
trace_nvhost_channel_write_reloc(chname);
job->num_pins++;
hdr->num_relocs--;
} else if (hdr->num_waitchks) {
- int numwaitchks =
- (remaining / sizeof(struct nvhost_waitchk));
- if (!numwaitchks)
+ struct nvhost_waitchk *waitchk =
+ &job->waitchk[job->num_waitchk];
+ consumed = sizeof(struct nvhost_waitchk);
+ if (remaining < consumed)
break;
- numwaitchks = min_t(int,
- numwaitchks, hdr->num_waitchks);
- consumed = numwaitchks * sizeof(struct nvhost_waitchk);
- if (copy_from_user(&job->waitchk[job->num_waitchk],
- buf, consumed)) {
+ if (copy_from_user(waitchk, buf, consumed)) {
err = -EFAULT;
break;
}
+ waitchk->mem = nvmap_convert_handle_u2k(waitchk->mem);
trace_nvhost_channel_write_waitchks(
- chname, numwaitchks,
+ chname, 1,
hdr->waitchk_mask);
- job->num_waitchk += numwaitchks;
- hdr->num_waitchks -= numwaitchks;
+ job->num_waitchk++;
+ hdr->num_waitchks--;
} else if (priv->num_relocshifts) {
int next_shift =
job->num_pins - priv->num_relocshifts;
diff --git a/drivers/video/tegra/host/nvhost_job.c b/drivers/video/tegra/host/nvhost_job.c
index d0c5d731f615..c7e700fce264 100644
--- a/drivers/video/tegra/host/nvhost_job.c
+++ b/drivers/video/tegra/host/nvhost_job.c
@@ -268,7 +268,7 @@ void nvhost_job_add_gather(struct nvhost_job *job,
pin = &job->pinarray[job->num_pins++];
pin->patch_mem = (u32)nvmap_ref_to_handle(job->gather_mem);
pin->patch_offset = (void *)&(cur_gather->mem) - (void *)job->gathers;
- pin->pin_mem = mem_id;
+ pin->pin_mem = nvmap_convert_handle_u2k(mem_id);
pin->pin_offset = offset;
cur_gather->words = words;
cur_gather->mem_id = mem_id;