#ifndef __I915_UTILS_H
#define __I915_UTILS_H
#include <linux/list.h>
#include <linux/overflow.h>
#include <linux/sched.h>
#include <linux/string_helpers.h>
#include <linux/types.h>
#include <linux/workqueue.h>
#include <linux/sched/clock.h>
#ifdef CONFIG_X86
#include <asm/hypervisor.h>
#endif
struct drm_i915_private;
struct timer_list;
#define FDO_BUG_URL …
#define MISSING_CASE(x) …
#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
int __i915_inject_probe_error(struct drm_i915_private *i915, int err,
const char *func, int line);
#define i915_inject_probe_error …
bool i915_error_injected(void);
#else
#define i915_inject_probe_error(i915, e) …
#define i915_error_injected() …
#endif
#define i915_inject_probe_failure(i915) …
#define i915_probe_error(i915, fmt, ...) …
#define range_overflows(start, size, max) …
#define range_overflows_t(type, start, size, max) …
#define range_overflows_end(start, size, max) …
#define range_overflows_end_t(type, start, size, max) …
#define ptr_mask_bits(ptr, n) …
#define ptr_unmask_bits(ptr, n) …
#define ptr_unpack_bits(ptr, bits, n) …
#define ptr_pack_bits(ptr, bits, n) …
#define ptr_dec(ptr) …
#define ptr_inc(ptr) …
#define page_mask_bits(ptr) …
#define page_unmask_bits(ptr) …
#define page_pack_bits(ptr, bits) …
#define page_unpack_bits(ptr, bits) …
#define fetch_and_zero(ptr) …
static __always_inline ptrdiff_t ptrdiff(const void *a, const void *b)
{ … }
#define container_of_user(ptr, type, member) …
#define check_user_mbz(U) …
#define u64_to_ptr(T, x) …
#define __mask_next_bit(mask) …
static inline bool is_power_of_2_u64(u64 n)
{ … }
static inline void __list_del_many(struct list_head *head,
struct list_head *first)
{ … }
static inline int list_is_last_rcu(const struct list_head *list,
const struct list_head *head)
{ … }
static inline unsigned long msecs_to_jiffies_timeout(const unsigned int m)
{ … }
static inline void
wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
{ … }
#define __wait_for(OP, COND, US, Wmin, Wmax) …
#define _wait_for(COND, US, Wmin, Wmax) …
#define wait_for(COND, MS) …
#if defined(CONFIG_DRM_I915_DEBUG) && defined(CONFIG_PREEMPT_COUNT)
#define _WAIT_FOR_ATOMIC_CHECK …
#else
#define _WAIT_FOR_ATOMIC_CHECK(ATOMIC) …
#endif
#define _wait_for_atomic(COND, US, ATOMIC) …
#define wait_for_us(COND, US) …
#define wait_for_atomic_us(COND, US) …
#define wait_for_atomic(COND, MS) …
#define KHz(x) …
#define MHz(x) …
void add_taint_for_CI(struct drm_i915_private *i915, unsigned int taint);
static inline void __add_taint_for_CI(unsigned int taint)
{ … }
void cancel_timer(struct timer_list *t);
void set_timer_ms(struct timer_list *t, unsigned long timeout);
static inline bool timer_active(const struct timer_list *t)
{ … }
static inline bool timer_expired(const struct timer_list *t)
{ … }
static inline bool i915_run_as_guest(void)
{ … }
bool i915_vtd_active(struct drm_i915_private *i915);
bool i915_direct_stolen_access(struct drm_i915_private *i915);
#endif