summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorChris Johnson <cwj@cjohnson-dt2.nvidia.com>2011-02-05 01:37:38 -0800
committerVarun Colbert <vcolbert@nvidia.com>2011-03-16 19:43:31 -0800
commit87a9efe751716ca741caac72b9061fdfdcec540a (patch)
tree0e47e57faba89b2c089abe99bf8378b6fbec173a /arch
parentde005987c3eb20820d373caf4b13c09c8aa2bfc1 (diff)
nvrm: move stale wait checking into the kernel
The kernel now receives wait tracking data (similar to gathers and relocs) and compares the current syncpt with the threshold value. If it's old, it gets a kernel mapping and rewrites the method data to use a kernel reserved syncpt that is always 0 (so trivially pops when seen by the HW). Bug 519650 Bug 785525 Bug 803452 (cherry picked from commit 4069d8e67665624ad3dceb628e572980dd57acd0) (cherry picked from commit 6e4336408588e348804a62e53386acc9abc06823) Change-Id: I60374cb81318f9166e49aa2afca52c9d44d4a20e Reviewed-on: http://git-master/r/23159 Tested-by: Nitin Kumbhar <nkumbhar@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/include/mach/nvhost.h9
-rw-r--r--arch/arm/mach-tegra/include/mach/nvmap.h4
2 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/include/mach/nvhost.h b/arch/arm/mach-tegra/include/mach/nvhost.h
index fc0336a42b50..1a113711aa47 100644
--- a/arch/arm/mach-tegra/include/mach/nvhost.h
+++ b/arch/arm/mach-tegra/include/mach/nvhost.h
@@ -81,6 +81,8 @@ struct nvhost_submit_hdr {
__u32 syncpt_incrs;
__u32 num_cmdbufs;
__u32 num_relocs;
+ __u32 num_waitchks;
+ __u32 waitchk_mask;
};
struct nvhost_cmdbuf {
@@ -96,6 +98,13 @@ struct nvhost_reloc {
__u32 target_offset;
};
+struct nvhost_waitchk {
+ __u32 mem;
+ __u32 offset;
+ __u32 syncpt_id;
+ __u32 thresh;
+};
+
struct nvhost_get_param_args {
__u32 value;
};
diff --git a/arch/arm/mach-tegra/include/mach/nvmap.h b/arch/arm/mach-tegra/include/mach/nvmap.h
index 7422d1a44d8a..7a79748e5433 100644
--- a/arch/arm/mach-tegra/include/mach/nvmap.h
+++ b/arch/arm/mach-tegra/include/mach/nvmap.h
@@ -97,6 +97,10 @@ int nvmap_pin_array(struct nvmap_client *client, struct nvmap_handle *gather,
void nvmap_unpin_handles(struct nvmap_client *client,
struct nvmap_handle **h, int nr);
+int nvmap_patch_wait(struct nvmap_client *client,
+ struct nvmap_handle *patch,
+ u32 patch_offset, u32 patch_value);
+
struct nvmap_platform_carveout {
const char *name;
unsigned int usage_mask;