[Intel-gfx] [PATCH 15/16] drm/i915: Mechanism to forward clock monotonic time in perf samples

Chris Wilson chris at chris-wilson.co.uk
Fri Apr 22 19:49:33 UTC 2016


On Fri, Apr 22, 2016 at 05:04:04PM +0530, sourab.gupta at intel.com wrote:
> +static u64 get_current_gpu_ts(struct drm_i915_private *dev_priv)
> +{
> +	return	((u64)I915_READ(GT_TIMESTAMP_COUNT_UDW) << 32) |
> +		I915_READ(GT_TIMESTAMP_COUNT);

return I915_READ64_2x32(GT_TIMESTAMP_COUNT, GT_TIMESTAMP_COUNT_UDW);

> +static void i915_perf_get_clock(struct drm_i915_private *dev_priv,
> +			u64 *clk_mono, u64 *gpu_time, u64 *gpu_ts)
> +{
> +	u64 remainder, ts_interval = NSEC_PER_SEC;
> +	u32 gpu_freq = dev_priv->perf.timestamp_frequency;
> +	unsigned long flags;
> +
> +	local_irq_save(flags);
> +	*clk_mono = ktime_get_mono_fast_ns();
> +	*gpu_ts = get_current_gpu_ts(dev_priv);
> +	local_irq_restore(flags);
> +
> +	remainder = do_div(ts_interval, gpu_freq);
> +	remainder *= *gpu_ts;
> +	do_div(remainder, gpu_freq);
> +
> +	*gpu_time = ((*gpu_ts) * ts_interval) + remainder;
> +}
> +
> +static void i915_perf_clock_sync_work(struct work_struct *work)
> +{

Have you looked at cross-timestamps?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list