mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:44:45 +01:00
drm/i915: split out separate files for jiffies timeout and wait helpers
Add i915_jiffies.h and intel_display_jiffies.h for jiffies timeout and wait helpers, and use them separately from i915 and display. This helps reduce the display dependency on i915_utils.h. Long term, both msecs_to_jiffies_timeout() and wait_remaining_ms_from_jiffies() really belong in core kernel headers, but for now unblock display refactoring. Reviewed-by: Luca Coelho <luciano.coelho@intel.com> Link: https://patch.msgid.link/d8bc62b3a81afa05c849dde9b0f633572eaf5611.1761146196.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
427c69c7d4
commit
00423c4a7d
15 changed files with 73 additions and 37 deletions
43
drivers/gpu/drm/i915/display/intel_display_jiffies.h
Normal file
43
drivers/gpu/drm/i915/display/intel_display_jiffies.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
/* Copyright © 2025 Intel Corporation */
|
||||
|
||||
#ifndef __INTEL_DISPLAY_JIFFIES_H__
|
||||
#define __INTEL_DISPLAY_JIFFIES_H__
|
||||
|
||||
#include <linux/jiffies.h>
|
||||
|
||||
static inline unsigned long msecs_to_jiffies_timeout(const unsigned int m)
|
||||
{
|
||||
unsigned long j = msecs_to_jiffies(m);
|
||||
|
||||
return min_t(unsigned long, MAX_JIFFY_OFFSET, j + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* If you need to wait X milliseconds between events A and B, but event B
|
||||
* doesn't happen exactly after event A, you record the timestamp (jiffies) of
|
||||
* when event A happened, then just before event B you call this function and
|
||||
* pass the timestamp as the first argument, and X as the second argument.
|
||||
*/
|
||||
static inline void
|
||||
wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
|
||||
{
|
||||
unsigned long target_jiffies, tmp_jiffies, remaining_jiffies;
|
||||
|
||||
/*
|
||||
* Don't re-read the value of "jiffies" every time since it may change
|
||||
* behind our back and break the math.
|
||||
*/
|
||||
tmp_jiffies = jiffies;
|
||||
target_jiffies = timestamp_jiffies +
|
||||
msecs_to_jiffies_timeout(to_wait_ms);
|
||||
|
||||
if (time_after(target_jiffies, tmp_jiffies)) {
|
||||
remaining_jiffies = target_jiffies - tmp_jiffies;
|
||||
while (remaining_jiffies)
|
||||
remaining_jiffies =
|
||||
schedule_timeout_uninterruptible(remaining_jiffies);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __INTEL_DISPLAY_JIFFIES_H__ */
|
||||
|
|
@ -64,6 +64,7 @@
|
|||
#include "intel_ddi.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_driver.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_regs.h"
|
||||
#include "intel_display_rpm.h"
|
||||
#include "intel_display_types.h"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "i915_utils.h"
|
||||
#include "intel_display_core.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_dp.h"
|
||||
#include "intel_dp_link_training.h"
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "i915_utils.h"
|
||||
#include "intel_connector.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_power.h"
|
||||
#include "intel_display_power_well.h"
|
||||
#include "intel_display_regs.h"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "intel_bw.h"
|
||||
#include "intel_cdclk.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_regs.h"
|
||||
#include "intel_display_trace.h"
|
||||
#include "intel_pmdemand.h"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "i915_reg.h"
|
||||
#include "i915_utils.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_power_well.h"
|
||||
#include "intel_display_regs.h"
|
||||
#include "intel_display_types.h"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "intel_color.h"
|
||||
#include "intel_crtc.h"
|
||||
#include "intel_de.h"
|
||||
#include "intel_display_jiffies.h"
|
||||
#include "intel_display_regs.h"
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_vblank.h"
|
||||
|
|
|
|||
|
|
@ -16,12 +16,13 @@
|
|||
#include "i915_gem_evict.h"
|
||||
#include "i915_gem_gtt.h"
|
||||
#include "i915_gem_ioctls.h"
|
||||
#include "i915_gem_object.h"
|
||||
#include "i915_gem_mman.h"
|
||||
#include "i915_gem_object.h"
|
||||
#include "i915_gem_ttm.h"
|
||||
#include "i915_jiffies.h"
|
||||
#include "i915_mm.h"
|
||||
#include "i915_trace.h"
|
||||
#include "i915_user_extensions.h"
|
||||
#include "i915_gem_ttm.h"
|
||||
#include "i915_vma.h"
|
||||
|
||||
static inline bool
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <drm/drm_buddy.h>
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_jiffies.h"
|
||||
#include "i915_ttm_buddy_manager.h"
|
||||
#include "intel_memory_region.h"
|
||||
#include "intel_region_ttm.h"
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "i915_jiffies.h"
|
||||
#include "i915_request.h"
|
||||
|
||||
#include "intel_context.h"
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#include "gt/intel_reset.h"
|
||||
#include "gt/selftest_engine_heartbeat.h"
|
||||
|
||||
#include "i915_jiffies.h"
|
||||
#include "i915_selftest.h"
|
||||
#include "selftests/i915_random.h"
|
||||
#include "selftests/igt_flush_test.h"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include <linux/kernel.h>
|
||||
|
||||
#include "i915_config.h"
|
||||
#include "i915_utils.h"
|
||||
#include "i915_jiffies.h"
|
||||
|
||||
unsigned long
|
||||
i915_fence_context_timeout(const struct drm_i915_private *i915, u64 context)
|
||||
|
|
|
|||
16
drivers/gpu/drm/i915/i915_jiffies.h
Normal file
16
drivers/gpu/drm/i915/i915_jiffies.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
/* Copyright © 2025 Intel Corporation */
|
||||
|
||||
#ifndef __I915_JIFFIES_H__
|
||||
#define __I915_JIFFIES_H__
|
||||
|
||||
#include <linux/jiffies.h>
|
||||
|
||||
static inline unsigned long msecs_to_jiffies_timeout(const unsigned int m)
|
||||
{
|
||||
unsigned long j = msecs_to_jiffies(m);
|
||||
|
||||
return min_t(unsigned long, MAX_JIFFY_OFFSET, j + 1);
|
||||
}
|
||||
|
||||
#endif /* __I915_JIFFIES_H__ */
|
||||
|
|
@ -100,40 +100,6 @@ static inline bool is_power_of_2_u64(u64 n)
|
|||
return (n != 0 && ((n & (n - 1)) == 0));
|
||||
}
|
||||
|
||||
static inline unsigned long msecs_to_jiffies_timeout(const unsigned int m)
|
||||
{
|
||||
unsigned long j = msecs_to_jiffies(m);
|
||||
|
||||
return min_t(unsigned long, MAX_JIFFY_OFFSET, j + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* If you need to wait X milliseconds between events A and B, but event B
|
||||
* doesn't happen exactly after event A, you record the timestamp (jiffies) of
|
||||
* when event A happened, then just before event B you call this function and
|
||||
* pass the timestamp as the first argument, and X as the second argument.
|
||||
*/
|
||||
static inline void
|
||||
wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
|
||||
{
|
||||
unsigned long target_jiffies, tmp_jiffies, remaining_jiffies;
|
||||
|
||||
/*
|
||||
* Don't re-read the value of "jiffies" every time since it may change
|
||||
* behind our back and break the math.
|
||||
*/
|
||||
tmp_jiffies = jiffies;
|
||||
target_jiffies = timestamp_jiffies +
|
||||
msecs_to_jiffies_timeout(to_wait_ms);
|
||||
|
||||
if (time_after(target_jiffies, tmp_jiffies)) {
|
||||
remaining_jiffies = target_jiffies - tmp_jiffies;
|
||||
while (remaining_jiffies)
|
||||
remaining_jiffies =
|
||||
schedule_timeout_uninterruptible(remaining_jiffies);
|
||||
}
|
||||
}
|
||||
|
||||
#define KHz(x) (1000 * (x))
|
||||
#define MHz(x) KHz(1000 * (x))
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include "i915_driver.h"
|
||||
#include "i915_drv.h"
|
||||
#include "i915_jiffies.h"
|
||||
#include "i915_selftest.h"
|
||||
#include "i915_wait_util.h"
|
||||
#include "igt_flush_test.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue