diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2017-04-27 14:28:27 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-15 14:53:10 -0400 |
commit | 741e5c45179db066ddf5bed0be6f36e4d0d4010e (patch) | |
tree | 815f83070ae0fcf37a7b234caf8a2f86997f99bb /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | 77e2cbab237637f71367df25384164b8c936a31a (diff) |
gpu: nvgpu: hal for timestamps correlation
In order to perform timestamps correlation for FECS
traces, we need to collect GPU / GPU timestamps
samples. In virtualization case, it is possible for
a guest to get GPU timestamps by using read_ptimer.
However, if the CPU timestamp is read on guest side,
and the GPU timestamp is read on vm-server side,
then it introduces some latency that will create an
artificial offset for GPU timestamps (~2 us in
average). For better CPU / GPU timestamps correlation,
Added a command to collect all timestamps on vm-server
side.
Bug 1900475
Change-Id: Idfdc6ae4c16c501dc5e00053a5b75932c55148d6
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: http://git-master/r/1472447
(cherry picked from commit 56f56b5cd9d2e75cf7d2613b5e115bfebdbee0ce)
Reviewed-on: http://git-master/r/1489183
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 34f89fc8..d1a55104 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -63,6 +63,7 @@ struct nvgpu_nvhost_dev; | |||
63 | #include "priv_ring_gk20a.h" | 63 | #include "priv_ring_gk20a.h" |
64 | #include "therm_gk20a.h" | 64 | #include "therm_gk20a.h" |
65 | #include "gm20b/acr_gm20b.h" | 65 | #include "gm20b/acr_gm20b.h" |
66 | #include "gk20a/bus_gk20a.h" | ||
66 | #include "cde_gk20a.h" | 67 | #include "cde_gk20a.h" |
67 | #include "sched_gk20a.h" | 68 | #include "sched_gk20a.h" |
68 | #ifdef CONFIG_ARCH_TEGRA_18x_SOC | 69 | #ifdef CONFIG_ARCH_TEGRA_18x_SOC |
@@ -905,6 +906,9 @@ struct gpu_ops { | |||
905 | void (*init_hw)(struct gk20a *g); | 906 | void (*init_hw)(struct gk20a *g); |
906 | void (*isr)(struct gk20a *g); | 907 | void (*isr)(struct gk20a *g); |
907 | int (*read_ptimer)(struct gk20a *g, u64 *value); | 908 | int (*read_ptimer)(struct gk20a *g, u64 *value); |
909 | int (*get_timestamps_zipper)(struct gk20a *g, | ||
910 | u32 source_id, u32 count, | ||
911 | struct nvgpu_cpu_time_correlation_sample *); | ||
908 | int (*bar1_bind)(struct gk20a *g, struct nvgpu_mem *bar1_inst); | 912 | int (*bar1_bind)(struct gk20a *g, struct nvgpu_mem *bar1_inst); |
909 | } bus; | 913 | } bus; |
910 | 914 | ||