| 123456789101112131415161718192021222324252627282930313233343536 |
- // SPDX-License-Identifier: MIT
- /* Copyright © 2025 Intel Corporation */
- #include <linux/jiffies.h>
- #include "i915_timer_util.h"
- void cancel_timer(struct timer_list *t)
- {
- if (!timer_active(t))
- return;
- timer_delete(t);
- WRITE_ONCE(t->expires, 0);
- }
- void set_timer_ms(struct timer_list *t, unsigned long timeout)
- {
- if (!timeout) {
- cancel_timer(t);
- return;
- }
- timeout = msecs_to_jiffies(timeout);
- /*
- * Paranoia to make sure the compiler computes the timeout before
- * loading 'jiffies' as jiffies is volatile and may be updated in
- * the background by a timer tick. All to reduce the complexity
- * of the addition and reduce the risk of losing a jiffy.
- */
- barrier();
- /* Keep t->expires = 0 reserved to indicate a canceled timer. */
- mod_timer(t, jiffies + timeout ?: 1);
- }
|