Move pointer related utilities from i915_utils.h to a separate new
i915_ptr_util.h header. Clean up related includes.

Reviewed-by: Rodrigo Vivi <rodrigo.v...@intel.com>
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_context_types.h |  1 -
 drivers/gpu/drm/i915/gt/intel_timeline.h      |  1 +
 drivers/gpu/drm/i915/i915_ptr_util.h          | 66 +++++++++++++++++++
 drivers/gpu/drm/i915/i915_request.h           |  5 +-
 drivers/gpu/drm/i915/i915_utils.h             | 57 ----------------
 drivers/gpu/drm/i915/i915_vma.h               |  6 +-
 6 files changed, 73 insertions(+), 63 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/i915_ptr_util.h

diff --git a/drivers/gpu/drm/i915/gt/intel_context_types.h 
b/drivers/gpu/drm/i915/gt/intel_context_types.h
index 98c7f6052069..10070ee4d74c 100644
--- a/drivers/gpu/drm/i915/gt/intel_context_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_context_types.h
@@ -14,7 +14,6 @@
 
 #include "i915_active_types.h"
 #include "i915_sw_fence.h"
-#include "i915_utils.h"
 #include "intel_engine_types.h"
 #include "intel_sseu.h"
 #include "intel_wakeref.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_timeline.h 
b/drivers/gpu/drm/i915/gt/intel_timeline.h
index 57308c4d664a..5f8c8f79714e 100644
--- a/drivers/gpu/drm/i915/gt/intel_timeline.h
+++ b/drivers/gpu/drm/i915/gt/intel_timeline.h
@@ -10,6 +10,7 @@
 
 #include "i915_active.h"
 #include "i915_syncmap.h"
+#include "i915_utils.h"
 #include "intel_timeline_types.h"
 
 struct drm_printer;
diff --git a/drivers/gpu/drm/i915/i915_ptr_util.h 
b/drivers/gpu/drm/i915/i915_ptr_util.h
new file mode 100644
index 000000000000..9f8931d7d99b
--- /dev/null
+++ b/drivers/gpu/drm/i915/i915_ptr_util.h
@@ -0,0 +1,66 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2025 Intel Corporation */
+
+#ifndef __I915_PTR_UTIL_H__
+#define __I915_PTR_UTIL_H__
+
+#include <linux/types.h>
+
+#define ptr_mask_bits(ptr, n) ({                                       \
+       unsigned long __v = (unsigned long)(ptr);                       \
+       (typeof(ptr))(__v & -BIT(n));                                   \
+})
+
+#define ptr_unmask_bits(ptr, n) ((unsigned long)(ptr) & (BIT(n) - 1))
+
+#define ptr_unpack_bits(ptr, bits, n) ({                               \
+       unsigned long __v = (unsigned long)(ptr);                       \
+       *(bits) = __v & (BIT(n) - 1);                                   \
+       (typeof(ptr))(__v & -BIT(n));                                   \
+})
+
+#define ptr_pack_bits(ptr, bits, n) ({                                 \
+       unsigned long __bits = (bits);                                  \
+       GEM_BUG_ON(__bits & -BIT(n));                                   \
+       ((typeof(ptr))((unsigned long)(ptr) | __bits));                 \
+})
+
+#define ptr_dec(ptr) ({                                                        
\
+       unsigned long __v = (unsigned long)(ptr);                       \
+       (typeof(ptr))(__v - 1);                                         \
+})
+
+#define ptr_inc(ptr) ({                                                        
\
+       unsigned long __v = (unsigned long)(ptr);                       \
+       (typeof(ptr))(__v + 1);                                         \
+})
+
+#define page_mask_bits(ptr) ptr_mask_bits(ptr, PAGE_SHIFT)
+#define page_unmask_bits(ptr) ptr_unmask_bits(ptr, PAGE_SHIFT)
+#define page_pack_bits(ptr, bits) ptr_pack_bits(ptr, bits, PAGE_SHIFT)
+#define page_unpack_bits(ptr, bits) ptr_unpack_bits(ptr, bits, PAGE_SHIFT)
+
+static __always_inline ptrdiff_t ptrdiff(const void *a, const void *b)
+{
+       return a - b;
+}
+
+#define u64_to_ptr(T, x) ({                                            \
+       typecheck(u64, x);                                              \
+       (T *)(uintptr_t)(x);                                            \
+})
+
+/*
+ * container_of_user: Extract the superclass from a pointer to a member.
+ *
+ * Exactly like container_of() with the exception that it plays nicely
+ * with sparse for __user @ptr.
+ */
+#define container_of_user(ptr, type, member) ({                                
\
+       void __user *__mptr = (void __user *)(ptr);                     \
+       BUILD_BUG_ON_MSG(!__same_type(*(ptr), typeof_member(type, member)) && \
+                        !__same_type(*(ptr), void),                    \
+                        "pointer type mismatch in container_of()");    \
+       ((type __user *)(__mptr - offsetof(type, member))); })
+
+#endif /* __I915_PTR_UTIL_H__ */
diff --git a/drivers/gpu/drm/i915/i915_request.h 
b/drivers/gpu/drm/i915/i915_request.h
index 5f7e8138ec14..b09135301f39 100644
--- a/drivers/gpu/drm/i915/i915_request.h
+++ b/drivers/gpu/drm/i915/i915_request.h
@@ -31,19 +31,20 @@
 #include <linux/llist.h>
 #include <linux/lockdep.h>
 
+#include <uapi/drm/i915_drm.h>
+
 #include "gem/i915_gem_context_types.h"
 #include "gt/intel_context_types.h"
 #include "gt/intel_engine_types.h"
 #include "gt/intel_timeline_types.h"
 
 #include "i915_gem.h"
+#include "i915_ptr_util.h"
 #include "i915_scheduler.h"
 #include "i915_selftest.h"
 #include "i915_sw_fence.h"
 #include "i915_vma_resource.h"
 
-#include <uapi/drm/i915_drm.h>
-
 struct drm_file;
 struct drm_i915_gem_object;
 struct drm_printer;
diff --git a/drivers/gpu/drm/i915/i915_utils.h 
b/drivers/gpu/drm/i915/i915_utils.h
index eb4d43c40009..dff02a944a57 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -67,64 +67,12 @@ bool i915_error_injected(void);
                drm_err(&(i915)->drm, fmt, ##__VA_ARGS__); \
 })
 
-#define ptr_mask_bits(ptr, n) ({                                       \
-       unsigned long __v = (unsigned long)(ptr);                       \
-       (typeof(ptr))(__v & -BIT(n));                                   \
-})
-
-#define ptr_unmask_bits(ptr, n) ((unsigned long)(ptr) & (BIT(n) - 1))
-
-#define ptr_unpack_bits(ptr, bits, n) ({                               \
-       unsigned long __v = (unsigned long)(ptr);                       \
-       *(bits) = __v & (BIT(n) - 1);                                   \
-       (typeof(ptr))(__v & -BIT(n));                                   \
-})
-
-#define ptr_pack_bits(ptr, bits, n) ({                                 \
-       unsigned long __bits = (bits);                                  \
-       GEM_BUG_ON(__bits & -BIT(n));                                   \
-       ((typeof(ptr))((unsigned long)(ptr) | __bits));                 \
-})
-
-#define ptr_dec(ptr) ({                                                        
\
-       unsigned long __v = (unsigned long)(ptr);                       \
-       (typeof(ptr))(__v - 1);                                         \
-})
-
-#define ptr_inc(ptr) ({                                                        
\
-       unsigned long __v = (unsigned long)(ptr);                       \
-       (typeof(ptr))(__v + 1);                                         \
-})
-
-#define page_mask_bits(ptr) ptr_mask_bits(ptr, PAGE_SHIFT)
-#define page_unmask_bits(ptr) ptr_unmask_bits(ptr, PAGE_SHIFT)
-#define page_pack_bits(ptr, bits) ptr_pack_bits(ptr, bits, PAGE_SHIFT)
-#define page_unpack_bits(ptr, bits) ptr_unpack_bits(ptr, bits, PAGE_SHIFT)
-
 #define fetch_and_zero(ptr) ({                                         \
        typeof(*ptr) __T = *(ptr);                                      \
        *(ptr) = (typeof(*ptr))0;                                       \
        __T;                                                            \
 })
 
-static __always_inline ptrdiff_t ptrdiff(const void *a, const void *b)
-{
-       return a - b;
-}
-
-/*
- * container_of_user: Extract the superclass from a pointer to a member.
- *
- * Exactly like container_of() with the exception that it plays nicely
- * with sparse for __user @ptr.
- */
-#define container_of_user(ptr, type, member) ({                                
\
-       void __user *__mptr = (void __user *)(ptr);                     \
-       BUILD_BUG_ON_MSG(!__same_type(*(ptr), typeof_member(type, member)) && \
-                        !__same_type(*(ptr), void),                    \
-                        "pointer type mismatch in container_of()");    \
-       ((type __user *)(__mptr - offsetof(type, member))); })
-
 /*
  * check_user_mbz: Check that a user value exists and is zero
  *
@@ -143,11 +91,6 @@ static __always_inline ptrdiff_t ptrdiff(const void *a, 
const void *b)
        get_user(mbz__, (U)) ? -EFAULT : mbz__ ? -EINVAL : 0;           \
 })
 
-#define u64_to_ptr(T, x) ({                                            \
-       typecheck(u64, x);                                              \
-       (T *)(uintptr_t)(x);                                            \
-})
-
 #define __mask_next_bit(mask) ({                                       \
        int __idx = ffs(mask) - 1;                                      \
        mask &= ~BIT(__idx);                                            \
diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h
index 0f9eee6d18d2..8054047840aa 100644
--- a/drivers/gpu/drm/i915/i915_vma.h
+++ b/drivers/gpu/drm/i915/i915_vma.h
@@ -30,12 +30,12 @@
 
 #include <drm/drm_mm.h>
 
-#include "gt/intel_ggtt_fencing.h"
 #include "gem/i915_gem_object.h"
-
-#include "i915_gem_gtt.h"
+#include "gt/intel_ggtt_fencing.h"
 
 #include "i915_active.h"
+#include "i915_gem_gtt.h"
+#include "i915_ptr_util.h"
 #include "i915_request.h"
 #include "i915_vma_resource.h"
 #include "i915_vma_types.h"
-- 
2.47.3

Reply via email to