[PATCH] hrtimer test
Tvrtko Ursulin
tursulin at ursulin.net
Fri Jun 1 13:06:13 UTC 2018
From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
drivers/gpu/drm/i915/i915_drv.c | 37 +++++++++++++++++++++++++++++++++
drivers/gpu/drm/i915/i915_drv.h | 3 +++
2 files changed, 40 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 0d9b8cc0436d..39f019d8ff4f 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1330,6 +1330,29 @@ static void i915_welcome_messages(struct drm_i915_private *dev_priv)
DRM_INFO("DRM_I915_DEBUG_GEM enabled\n");
}
+static enum hrtimer_restart test_timer(struct hrtimer *hrtimer)
+{
+ unsigned int orun =
+ hrtimer_forward_now(hrtimer, ns_to_ktime(NSEC_PER_SEC / 200));
+
+ if (orun > 1)
+ DRM_ERROR_RATELIMITED("%u test_timer overrun(s)\n", orun - 1);
+
+ return HRTIMER_RESTART;
+}
+
+static enum hrtimer_restart test_timer2(struct hrtimer *hrtimer)
+{
+ unsigned int orun =
+ hrtimer_forward_now(hrtimer, ns_to_ktime(NSEC_PER_SEC / 200));
+
+ if (orun > 1)
+ DRM_ERROR_RATELIMITED("%u pinned_test_timer overrun(s)\n",
+ orun - 1);
+
+ return HRTIMER_RESTART;
+}
+
/**
* i915_driver_load - setup chip and create an initial config
* @pdev: PCI device
@@ -1419,6 +1442,17 @@ int i915_driver_load(struct pci_dev *pdev, const struct pci_device_id *ent)
i915_welcome_messages(dev_priv);
+ hrtimer_init(&dev_priv->test_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ dev_priv->test_timer.function = test_timer;
+ hrtimer_start_range_ns(&dev_priv->test_timer,
+ ns_to_ktime(NSEC_PER_SEC / 200), 0,
+ HRTIMER_MODE_REL);
+
+ hrtimer_init(&dev_priv->test_timer2, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ dev_priv->test_timer2.function = test_timer2;
+ hrtimer_start_range_ns(&dev_priv->test_timer2,
+ ns_to_ktime(NSEC_PER_SEC / 200), 0,
+ HRTIMER_MODE_REL_PINNED);
return 0;
out_cleanup_hw:
@@ -1443,6 +1477,9 @@ void i915_driver_unload(struct drm_device *dev)
struct drm_i915_private *dev_priv = to_i915(dev);
struct pci_dev *pdev = dev_priv->drm.pdev;
+ hrtimer_cancel(&dev_priv->test_timer);
+ hrtimer_cancel(&dev_priv->test_timer2);
+
i915_driver_unregister(dev_priv);
if (i915_gem_suspend(dev_priv))
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 38157df6ff5c..a41e6cec3d94 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1561,6 +1561,9 @@ struct drm_i915_private {
struct kmem_cache *dependencies;
struct kmem_cache *priorities;
+ struct hrtimer test_timer;
+ struct hrtimer test_timer2;
+
const struct intel_device_info info;
struct intel_driver_caps caps;
--
2.17.0
More information about the Intel-gfx-trybot
mailing list