diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2020-02-16 16:17:46 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-02-16 17:17:28 +0000 |
commit | d194314da04eb965c651dcef6d692dc83821a414 (patch) | |
tree | 8b47f5bc57b7ea0f5881bbeea37f3cbff487f32a /drivers/gpu/drm/i915/intel_device_info.c | |
parent | 1883a0a4658eaba354db2179b4d3395247d27582 (diff) | |
download | linux-d194314da04eb965c651dcef6d692dc83821a414.tar.bz2 |
drm/i915: Avoid potential division-by-zero in computing CS timestamp period
Since we use a HW readback or estimation of the CS timestamp frequency,
sometimes it may result in 0. Avoid the division-by-zero in computing
its reciprocal, the timestamp period.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200216161746.500258-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/intel_device_info.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_device_info.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c index a97437fac884..18d9de488593 100644 --- a/drivers/gpu/drm/i915/intel_device_info.c +++ b/drivers/gpu/drm/i915/intel_device_info.c @@ -1044,13 +1044,17 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv) } /* Initialize command stream timestamp frequency */ - runtime->cs_timestamp_frequency_khz = read_timestamp_frequency(dev_priv); - runtime->cs_timestamp_period_ns = - div_u64(1e6, runtime->cs_timestamp_frequency_khz); - drm_dbg(&dev_priv->drm, - "CS timestamp wraparound in %lldms\n", - div_u64(mul_u32_u32(runtime->cs_timestamp_period_ns, S32_MAX), - USEC_PER_SEC)); + runtime->cs_timestamp_frequency_khz = + read_timestamp_frequency(dev_priv); + if (runtime->cs_timestamp_frequency_khz) { + runtime->cs_timestamp_period_ns = + div_u64(1e6, runtime->cs_timestamp_frequency_khz); + drm_dbg(&dev_priv->drm, + "CS timestamp wraparound in %lldms\n", + div_u64(mul_u32_u32(runtime->cs_timestamp_period_ns, + S32_MAX), + USEC_PER_SEC)); + } } void intel_driver_caps_print(const struct intel_driver_caps *caps, |