9#define DRM_EXEC_INTERRUPTIBLE_WAIT BIT(0)
10#define DRM_EXEC_IGNORE_DUPLICATES BIT(1)
16#define DRM_EXEC_DUMMY ((void *)~0)
75#define __drm_exec_for_each_locked_object(exec, obj, __index) \
76 for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index)
84#define drm_exec_for_each_locked_object(exec, obj) \
85 __drm_exec_for_each_locked_object(exec, obj, __UNIQUE_ID(drm_exec))
88#define __drm_exec_for_each_locked_object_reverse(exec, obj, __index) \
89 for (unsigned long __index = (exec)->num_objects - 1; \
90 ((obj) = drm_exec_obj(exec, __index)); --__index)
101#define drm_exec_for_each_locked_object_reverse(exec, obj) \
102 __drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec))
116#define drm_exec_until_all_locked(exec) \
117 for (bool const __maybe_unused __drm_exec_loop = false; \
118 drm_exec_cleanup(exec);) \
120drm_exec_retry: __maybe_unused; \
133#define drm_exec_retry_on_contention(exec) \
135 if (unlikely(drm_exec_is_contended(exec))) \
136 goto drm_exec_retry; \
137 } while (__drm_exec_loop)
146static inline bool drm_exec_is_contended(
struct drm_exec *exec)
160#define drm_exec_retry(_exec) \
162 WARN_ON((_exec)->contended != DRM_EXEC_DUMMY); \
163 goto drm_exec_retry; \
164 } while (__drm_exec_loop)
172static inline struct ww_acquire_ctx *drm_exec_ticket(
struct drm_exec *exec)
183 unsigned int num_fences);
186 unsigned int num_objects,
187 unsigned int num_fences);
uint8_t flags
Definition virtio.h:0
#define index(str, chr)
Definition string.h:66
#define NULL
Definition actypes.h:561
void drm_exec_init(struct drm_exec *exec, u32 flags, unsigned nr)
int drm_exec_lock_obj(struct drm_exec *exec, struct drm_gem_object *obj)
void drm_exec_unlock_obj(struct drm_exec *exec, struct drm_gem_object *obj)
bool drm_exec_cleanup(struct drm_exec *exec)
int drm_exec_prepare_array(struct drm_exec *exec, struct drm_gem_object **objects, unsigned int num_objects, unsigned int num_fences)
int drm_exec_prepare_obj(struct drm_exec *exec, struct drm_gem_object *obj, unsigned int num_fences)
void drm_exec_fini(struct drm_exec *exec)
uint32_t u32
Definition kernel.h:16
struct drm_gem_object * contended
Definition drm_exec.h:52
unsigned int num_objects
Definition drm_exec.h:37
unsigned int max_objects
Definition drm_exec.h:42
struct ww_acquire_ctx ticket
Definition drm_exec.h:32
u32 flags
Definition drm_exec.h:27
struct drm_gem_object * prelocked
Definition drm_exec.h:57
struct drm_gem_object ** objects
Definition drm_exec.h:47