* [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque
@ 2024-06-17 14:18 Jani Nikula
2024-06-17 14:18 ` [PATCH 1/5] drm/i915/frontbuffer: un-inline frontbuffer bits checks Jani Nikula
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Hide the struct intel_frontbuffer implementation to add more clarity in
the interface boundaries.
Jani Nikula (5):
drm/i915/frontbuffer: un-inline frontbuffer bits checks
drm/i915/frontbuffer: hide ->bits more
drm/i915/frontbuffer: add low-level kref accessors
drm/i915/frontbuffer: hide ->write
drm/i915/frontbuffer: make struct intel_frontbuffer opaque
drivers/gpu/drm/i915/display/intel_fb.c | 2 +-
.../gpu/drm/i915/display/intel_frontbuffer.c | 57 +++++++++++++++++--
.../gpu/drm/i915/display/intel_frontbuffer.h | 53 ++++++-----------
.../drm/i915/display/intel_plane_initial.c | 2 +-
.../i915/gem/i915_gem_object_frontbuffer.h | 4 +-
drivers/gpu/drm/i915/i915_vma.c | 2 +-
drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +-
7 files changed, 75 insertions(+), 47 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/5] drm/i915/frontbuffer: un-inline frontbuffer bits checks
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
@ 2024-06-17 14:18 ` Jani Nikula
2024-06-17 14:18 ` [PATCH 2/5] drm/i915/frontbuffer: hide ->bits more Jani Nikula
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Move frontbuffer bits read and check from intel_frontbuffer.h inline
functions to intel_frontbuffer.c, in preparation for making struct
intel_frontbuffer opaque.
Rename __intel_fb_* to __intel_frontbuffer_* while at it, because fb
sounds like framebuffer more than frontbuffer.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
.../gpu/drm/i915/display/intel_frontbuffer.c | 22 ++++++++++-----
.../gpu/drm/i915/display/intel_frontbuffer.h | 27 +++++--------------
2 files changed, 22 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index 4923c340a0b6..7964eaa6a60a 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -167,11 +167,15 @@ void intel_frontbuffer_flip(struct drm_i915_private *i915,
frontbuffer_flush(i915, frontbuffer_bits, ORIGIN_FLIP);
}
-void __intel_fb_invalidate(struct intel_frontbuffer *front,
- enum fb_op_origin origin,
- unsigned int frontbuffer_bits)
+bool __intel_frontbuffer_invalidate(struct intel_frontbuffer *front,
+ enum fb_op_origin origin)
{
struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
+ unsigned int frontbuffer_bits;
+
+ frontbuffer_bits = atomic_read(&front->bits);
+ if (!frontbuffer_bits)
+ return false;
if (origin == ORIGIN_CS) {
spin_lock(&i915->display.fb_tracking.lock);
@@ -186,13 +190,19 @@ void __intel_fb_invalidate(struct intel_frontbuffer *front,
intel_psr_invalidate(i915, frontbuffer_bits, origin);
intel_drrs_invalidate(i915, frontbuffer_bits);
intel_fbc_invalidate(i915, frontbuffer_bits, origin);
+
+ return true;
}
-void __intel_fb_flush(struct intel_frontbuffer *front,
- enum fb_op_origin origin,
- unsigned int frontbuffer_bits)
+void __intel_frontbuffer_flush(struct intel_frontbuffer *front,
+ enum fb_op_origin origin)
{
struct drm_i915_private *i915 = intel_bo_to_i915(front->obj);
+ unsigned int frontbuffer_bits;
+
+ frontbuffer_bits = atomic_read(&front->bits);
+ if (!frontbuffer_bits)
+ return;
if (origin == ORIGIN_CS) {
spin_lock(&i915->display.fb_tracking.lock);
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index abb51e8bb920..f4a3495300de 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -79,9 +79,8 @@ void intel_frontbuffer_put(struct intel_frontbuffer *front);
struct intel_frontbuffer *
intel_frontbuffer_get(struct drm_i915_gem_object *obj);
-void __intel_fb_invalidate(struct intel_frontbuffer *front,
- enum fb_op_origin origin,
- unsigned int frontbuffer_bits);
+bool __intel_frontbuffer_invalidate(struct intel_frontbuffer *front,
+ enum fb_op_origin origin);
/**
* intel_frontbuffer_invalidate - invalidate frontbuffer object
@@ -97,22 +96,14 @@ void __intel_fb_invalidate(struct intel_frontbuffer *front,
static inline bool intel_frontbuffer_invalidate(struct intel_frontbuffer *front,
enum fb_op_origin origin)
{
- unsigned int frontbuffer_bits;
-
if (!front)
return false;
- frontbuffer_bits = atomic_read(&front->bits);
- if (!frontbuffer_bits)
- return false;
-
- __intel_fb_invalidate(front, origin, frontbuffer_bits);
- return true;
+ return __intel_frontbuffer_invalidate(front, origin);
}
-void __intel_fb_flush(struct intel_frontbuffer *front,
- enum fb_op_origin origin,
- unsigned int frontbuffer_bits);
+void __intel_frontbuffer_flush(struct intel_frontbuffer *front,
+ enum fb_op_origin origin);
/**
* intel_frontbuffer_flush - flush frontbuffer object
@@ -125,16 +116,10 @@ void __intel_fb_flush(struct intel_frontbuffer *front,
static inline void intel_frontbuffer_flush(struct intel_frontbuffer *front,
enum fb_op_origin origin)
{
- unsigned int frontbuffer_bits;
-
if (!front)
return;
- frontbuffer_bits = atomic_read(&front->bits);
- if (!frontbuffer_bits)
- return;
-
- __intel_fb_flush(front, origin, frontbuffer_bits);
+ __intel_frontbuffer_flush(front, origin);
}
void intel_frontbuffer_queue_flush(struct intel_frontbuffer *front);
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/5] drm/i915/frontbuffer: hide ->bits more
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
2024-06-17 14:18 ` [PATCH 1/5] drm/i915/frontbuffer: un-inline frontbuffer bits checks Jani Nikula
@ 2024-06-17 14:18 ` Jani Nikula
2024-06-17 14:19 ` [PATCH 3/5] drm/i915/frontbuffer: add low-level kref accessors Jani Nikula
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:18 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Add helpers for ->bits in preparation for making struct
intel_frontbuffer opaque.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_fb.c | 2 +-
drivers/gpu/drm/i915/display/intel_frontbuffer.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_frontbuffer.h | 3 +++
drivers/gpu/drm/i915/display/intel_plane_initial.c | 2 +-
drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +-
5 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index 8069abf91c5e..a49b5a1589a6 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -1965,7 +1965,7 @@ static int intel_user_framebuffer_dirty(struct drm_framebuffer *fb,
struct frontbuffer_fence_cb *cb;
int ret = 0;
- if (!atomic_read(&front->bits))
+ if (!intel_frontbuffer_bits(front))
return 0;
if (dma_resv_test_signaled(intel_bo_to_drm_bo(obj)->resv, dma_resv_usage_rw(false)))
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index 7964eaa6a60a..effb13e8a6bb 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -67,6 +67,16 @@
#include "intel_psr.h"
#include "intel_tdf.h"
+unsigned int intel_frontbuffer_bits(struct intel_frontbuffer *front)
+{
+ return atomic_read(&front->bits);
+}
+
+void intel_frontbuffer_bits_or(struct intel_frontbuffer *front, unsigned int bits)
+{
+ atomic_or(bits, &front->bits);
+}
+
/**
* frontbuffer_flush - flush frontbuffer
* @i915: i915 device
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index f4a3495300de..827b0129da71 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -67,6 +67,9 @@ struct intel_frontbuffer {
GENMASK(INTEL_FRONTBUFFER_BITS_PER_PIPE * ((pipe) + 1) - 1, \
INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
+unsigned int intel_frontbuffer_bits(struct intel_frontbuffer *front);
+void intel_frontbuffer_bits_or(struct intel_frontbuffer *front, unsigned int bits);
+
void intel_frontbuffer_flip_prepare(struct drm_i915_private *i915,
unsigned frontbuffer_bits);
void intel_frontbuffer_flip_complete(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index ada1792df5b3..7cc9863ffce8 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -391,7 +391,7 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
plane_state->uapi.crtc = &crtc->base;
intel_plane_copy_uapi_to_hw_state(plane_state, plane_state, crtc);
- atomic_or(plane->frontbuffer_bit, &to_intel_frontbuffer(fb)->bits);
+ intel_frontbuffer_bits_or(to_intel_frontbuffer(fb), plane->frontbuffer_bit);
}
static void plane_config_fini(struct intel_initial_plane_config *plane_config)
diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
index e135b20962d9..a838459c49ae 100644
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -232,7 +232,7 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
plane_state->uapi.crtc = &crtc->base;
intel_plane_copy_uapi_to_hw_state(plane_state, plane_state, crtc);
- atomic_or(plane->frontbuffer_bit, &to_intel_frontbuffer(fb)->bits);
+ intel_frontbuffer_bits_or(to_intel_frontbuffer(fb), plane->frontbuffer_bit);
plane_config->vma = vma;
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/5] drm/i915/frontbuffer: add low-level kref accessors
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
2024-06-17 14:18 ` [PATCH 1/5] drm/i915/frontbuffer: un-inline frontbuffer bits checks Jani Nikula
2024-06-17 14:18 ` [PATCH 2/5] drm/i915/frontbuffer: hide ->bits more Jani Nikula
@ 2024-06-17 14:19 ` Jani Nikula
2024-06-17 14:19 ` [PATCH 4/5] drm/i915/frontbuffer: hide ->write Jani Nikula
` (2 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:19 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Add _raw accessors for front->ref to avoid direct access from outside of
intel_frontbuffer.c, in preparation for making struct intel_frontbuffer
opaque.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_frontbuffer.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_frontbuffer.h | 3 +++
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h | 4 ++--
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index effb13e8a6bb..42defe2b7661 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -77,6 +77,16 @@ void intel_frontbuffer_bits_or(struct intel_frontbuffer *front, unsigned int bit
atomic_or(bits, &front->bits);
}
+bool intel_frontbuffer_get_unless_zero_raw(struct intel_frontbuffer *front)
+{
+ return kref_get_unless_zero(&front->ref);
+}
+
+void intel_frontbuffer_get_raw(struct intel_frontbuffer *front)
+{
+ kref_get(&front->ref);
+}
+
/**
* frontbuffer_flush - flush frontbuffer
* @i915: i915 device
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 827b0129da71..221f41096416 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -79,6 +79,9 @@ void intel_frontbuffer_flip(struct drm_i915_private *i915,
void intel_frontbuffer_put(struct intel_frontbuffer *front);
+bool intel_frontbuffer_get_unless_zero_raw(struct intel_frontbuffer *front);
+void intel_frontbuffer_get_raw(struct intel_frontbuffer *front);
+
struct intel_frontbuffer *
intel_frontbuffer_get(struct drm_i915_gem_object *obj);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
index 9fbf14867a2a..22df3c70c8a6 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
@@ -56,7 +56,7 @@ i915_gem_object_get_frontbuffer(const struct drm_i915_gem_object *obj)
if (!front)
break;
- if (unlikely(!kref_get_unless_zero(&front->ref)))
+ if (unlikely(!intel_frontbuffer_get_unless_zero_raw(front)))
continue;
if (likely(front == rcu_access_pointer(obj->frontbuffer)))
@@ -92,7 +92,7 @@ i915_gem_object_set_frontbuffer(struct drm_i915_gem_object *obj,
drm_gem_object_put(intel_bo_to_drm_bo(obj));
} else if (rcu_access_pointer(obj->frontbuffer)) {
cur = rcu_dereference_protected(obj->frontbuffer, true);
- kref_get(&cur->ref);
+ intel_frontbuffer_get_raw(cur);
} else {
drm_gem_object_get(intel_bo_to_drm_bo(obj));
rcu_assign_pointer(obj->frontbuffer, front);
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/5] drm/i915/frontbuffer: hide ->write
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
` (2 preceding siblings ...)
2024-06-17 14:19 ` [PATCH 3/5] drm/i915/frontbuffer: add low-level kref accessors Jani Nikula
@ 2024-06-17 14:19 ` Jani Nikula
2024-06-17 14:19 ` [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque Jani Nikula
2024-06-17 14:27 ` ✗ Fi.CI.BUILD: failure for drm/i915: " Patchwork
5 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:19 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Add accessor to frontbuffer ->write to avoid direct access from outside
of intel_frontbuffer.c in preparation for making struct
intel_frontbuffer opaque.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_frontbuffer.c | 5 +++++
drivers/gpu/drm/i915/display/intel_frontbuffer.h | 2 ++
drivers/gpu/drm/i915/i915_vma.c | 2 +-
3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index 42defe2b7661..dd5fd1e2859e 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -87,6 +87,11 @@ void intel_frontbuffer_get_raw(struct intel_frontbuffer *front)
kref_get(&front->ref);
}
+struct i915_active *intel_frontbuffer_active(struct intel_frontbuffer *front)
+{
+ return &front->write;
+}
+
/**
* frontbuffer_flush - flush frontbuffer
* @i915: i915 device
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 221f41096416..62d6e3cedea4 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -134,4 +134,6 @@ void intel_frontbuffer_track(struct intel_frontbuffer *old,
struct intel_frontbuffer *new,
unsigned int frontbuffer_bits);
+struct i915_active *intel_frontbuffer_active(struct intel_frontbuffer *front);
+
#endif /* __INTEL_FRONTBUFFER_H__ */
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index d2f064d2525c..2b5cc7af19c5 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -1975,7 +1975,7 @@ int _i915_vma_move_to_active(struct i915_vma *vma,
front = i915_gem_object_get_frontbuffer(obj);
if (unlikely(front)) {
if (intel_frontbuffer_invalidate(front, ORIGIN_CS))
- i915_active_add_request(&front->write, rq);
+ i915_active_add_request(intel_frontbuffer_active(front), rq);
intel_frontbuffer_put(front);
}
}
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
` (3 preceding siblings ...)
2024-06-17 14:19 ` [PATCH 4/5] drm/i915/frontbuffer: hide ->write Jani Nikula
@ 2024-06-17 14:19 ` Jani Nikula
2024-06-18 23:54 ` kernel test robot
2024-06-17 14:27 ` ✗ Fi.CI.BUILD: failure for drm/i915: " Patchwork
5 siblings, 1 reply; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:19 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Hide struct intel_frontbuffer implementation details within
intel_frontbuffer.c.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
.../gpu/drm/i915/display/intel_frontbuffer.c | 10 ++++++++++
.../gpu/drm/i915/display/intel_frontbuffer.h | 18 ++++--------------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index dd5fd1e2859e..53a4cbc43ae3 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -67,6 +67,16 @@
#include "intel_psr.h"
#include "intel_tdf.h"
+struct intel_frontbuffer {
+ struct kref ref;
+ atomic_t bits;
+ struct i915_active write;
+ struct drm_i915_gem_object *obj;
+ struct rcu_head rcu;
+
+ struct work_struct flush_work;
+};
+
unsigned int intel_frontbuffer_bits(struct intel_frontbuffer *front)
{
return atomic_read(&front->bits);
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
index 62d6e3cedea4..a6212ee4ed12 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
@@ -24,13 +24,13 @@
#ifndef __INTEL_FRONTBUFFER_H__
#define __INTEL_FRONTBUFFER_H__
-#include <linux/atomic.h>
#include <linux/bits.h>
-#include <linux/kref.h>
-
-#include "i915_active_types.h"
+#include <linux/types.h>
+struct drm_i915_gem_object;
struct drm_i915_private;
+struct i915_active;
+struct intel_frontbuffer;
enum fb_op_origin {
ORIGIN_CPU = 0,
@@ -40,16 +40,6 @@ enum fb_op_origin {
ORIGIN_CURSOR_UPDATE,
};
-struct intel_frontbuffer {
- struct kref ref;
- atomic_t bits;
- struct i915_active write;
- struct drm_i915_gem_object *obj;
- struct rcu_head rcu;
-
- struct work_struct flush_work;
-};
-
/*
* Frontbuffer tracking bits. Set in obj->frontbuffer_bits while a gem bo is
* considered to be the frontbuffer for the given plane interface-wise. This
--
2.39.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* ✗ Fi.CI.BUILD: failure for drm/i915: make struct intel_frontbuffer opaque
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
` (4 preceding siblings ...)
2024-06-17 14:19 ` [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque Jani Nikula
@ 2024-06-17 14:27 ` Patchwork
2024-06-17 14:31 ` Jani Nikula
5 siblings, 1 reply; 9+ messages in thread
From: Patchwork @ 2024-06-17 14:27 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: make struct intel_frontbuffer opaque
URL : https://patchwork.freedesktop.org/series/134957/
State : failure
== Summary ==
Error: make failed
CALL scripts/checksyscalls.sh
DESCEND objtool
INSTALL libsubcmd_headers
CC [M] drivers/gpu/drm/i915/gem/i915_gem_clflush.o
In file included from ./include/linux/array_size.h:5,
from ./include/linux/string.h:6,
from ./include/linux/scatterlist.h:5,
from ./include/drm/drm_cache.h:36,
from drivers/gpu/drm/i915/gem/i915_gem_clflush.c:7:
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function ‘i915_gem_object_flush_frontbuffer’:
./include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type ‘struct intel_frontbuffer’
463 | typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
| ^
./include/linux/compiler.h:77:42: note: in definition of macro ‘unlikely’
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
./include/linux/rcupdate.h:582:31: note: in expansion of macro ‘__rcu_access_pointer’
582 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
| ^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:24:15: note: in expansion of macro ‘rcu_access_pointer’
24 | if (unlikely(rcu_access_pointer(obj->frontbuffer)))
| ^~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function ‘i915_gem_object_get_frontbuffer’:
./include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type ‘struct intel_frontbuffer’
463 | typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
| ^
./include/linux/compiler.h:76:40: note: in definition of macro ‘likely’
76 | # define likely(x) __builtin_expect(!!(x), 1)
| ^
./include/linux/rcupdate.h:582:31: note: in expansion of macro ‘__rcu_access_pointer’
582 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
| ^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:50:14: note: in expansion of macro ‘rcu_access_pointer’
50 | if (likely(!rcu_access_pointer(obj->frontbuffer)))
| ^~~~~~~~~~~~~~~~~~
make[6]: *** [scripts/Makefile.build:244: drivers/gpu/drm/i915/gem/i915_gem_clflush.o] Error 1
make[5]: *** [scripts/Makefile.build:485: drivers/gpu/drm/i915] Error 2
make[4]: *** [scripts/Makefile.build:485: drivers/gpu/drm] Error 2
make[3]: *** [scripts/Makefile.build:485: drivers/gpu] Error 2
make[2]: *** [scripts/Makefile.build:485: drivers] Error 2
make[1]: *** [/home/kbuild/kernel/Makefile:1934: .] Error 2
make: *** [Makefile:240: __sub-make] Error 2
Build failed, no error log produced
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: ✗ Fi.CI.BUILD: failure for drm/i915: make struct intel_frontbuffer opaque
2024-06-17 14:27 ` ✗ Fi.CI.BUILD: failure for drm/i915: " Patchwork
@ 2024-06-17 14:31 ` Jani Nikula
0 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2024-06-17 14:31 UTC (permalink / raw)
To: Patchwork; +Cc: intel-gfx
On Mon, 17 Jun 2024, Patchwork <patchwork@emeril.freedesktop.org> wrote:
> == Series Details ==
>
> Series: drm/i915: make struct intel_frontbuffer opaque
> URL : https://patchwork.freedesktop.org/series/134957/
> State : failure
>
> == Summary ==
>
> Error: make failed
> CALL scripts/checksyscalls.sh
> DESCEND objtool
> INSTALL libsubcmd_headers
> CC [M] drivers/gpu/drm/i915/gem/i915_gem_clflush.o
> In file included from ./include/linux/array_size.h:5,
> from ./include/linux/string.h:6,
> from ./include/linux/scatterlist.h:5,
> from ./include/drm/drm_cache.h:36,
> from drivers/gpu/drm/i915/gem/i915_gem_clflush.c:7:
> drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function ‘i915_gem_object_flush_frontbuffer’:
> ./include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type ‘struct intel_frontbuffer’
> 463 | typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
Ugh, so rcu requires the complete type even if it's about a pointer?
*sigh*
> | ^
> ./include/linux/compiler.h:77:42: note: in definition of macro ‘unlikely’
> 77 | # define unlikely(x) __builtin_expect(!!(x), 0)
> | ^
> ./include/linux/rcupdate.h:582:31: note: in expansion of macro ‘__rcu_access_pointer’
> 582 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
> | ^~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:24:15: note: in expansion of macro ‘rcu_access_pointer’
> 24 | if (unlikely(rcu_access_pointer(obj->frontbuffer)))
> | ^~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function ‘i915_gem_object_get_frontbuffer’:
> ./include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type ‘struct intel_frontbuffer’
> 463 | typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
> | ^
> ./include/linux/compiler.h:76:40: note: in definition of macro ‘likely’
> 76 | # define likely(x) __builtin_expect(!!(x), 1)
> | ^
> ./include/linux/rcupdate.h:582:31: note: in expansion of macro ‘__rcu_access_pointer’
> 582 | #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
> | ^~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:50:14: note: in expansion of macro ‘rcu_access_pointer’
> 50 | if (likely(!rcu_access_pointer(obj->frontbuffer)))
> | ^~~~~~~~~~~~~~~~~~
> make[6]: *** [scripts/Makefile.build:244: drivers/gpu/drm/i915/gem/i915_gem_clflush.o] Error 1
> make[5]: *** [scripts/Makefile.build:485: drivers/gpu/drm/i915] Error 2
> make[4]: *** [scripts/Makefile.build:485: drivers/gpu/drm] Error 2
> make[3]: *** [scripts/Makefile.build:485: drivers/gpu] Error 2
> make[2]: *** [scripts/Makefile.build:485: drivers] Error 2
> make[1]: *** [/home/kbuild/kernel/Makefile:1934: .] Error 2
> make: *** [Makefile:240: __sub-make] Error 2
> Build failed, no error log produced
>
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque
2024-06-17 14:19 ` [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque Jani Nikula
@ 2024-06-18 23:54 ` kernel test robot
0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-06-18 23:54 UTC (permalink / raw)
To: Jani Nikula, intel-gfx, intel-xe; +Cc: oe-kbuild-all, jani.nikula
Hi Jani,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-intel/for-linux-next-fixes drm-tip/drm-tip drm-xe/drm-xe-next linus/master v6.10-rc4 next-20240618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Jani-Nikula/drm-i915-frontbuffer-un-inline-frontbuffer-bits-checks/20240617-223108
base: git://anongit.freedesktop.org/drm-intel for-linux-next
patch link: https://lore.kernel.org/r/ba2e3e16b5c47f7e6d434d8fa815e965458a98d5.1718633874.git.jani.nikula%40intel.com
patch subject: [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque
config: x86_64-randconfig-003-20240619 (https://download.01.org/0day-ci/archive/20240619/202406190757.Uv3UaYyb-lkp@intel.com/config)
compiler: gcc-8 (Ubuntu 8.4.0-3ubuntu2) 8.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240619/202406190757.Uv3UaYyb-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406190757.Uv3UaYyb-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/err.h:5,
from include/linux/dma-fence.h:16,
from include/linux/dma-fence-array.h:15,
from drivers/gpu/drm/i915/i915_gem.c:28:
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function 'i915_gem_object_flush_frontbuffer':
>> include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type 'struct intel_frontbuffer'
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/rcupdate.h:582:31: note: in expansion of macro '__rcu_access_pointer'
#define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:24:15: note: in expansion of macro 'rcu_access_pointer'
if (unlikely(rcu_access_pointer(obj->frontbuffer)))
^~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function 'i915_gem_object_get_frontbuffer':
>> include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type 'struct intel_frontbuffer'
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
include/linux/compiler.h:76:40: note: in definition of macro 'likely'
# define likely(x) __builtin_expect(!!(x), 1)
^
include/linux/rcupdate.h:582:31: note: in expansion of macro '__rcu_access_pointer'
#define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:50:14: note: in expansion of macro 'rcu_access_pointer'
if (likely(!rcu_access_pointer(obj->frontbuffer)))
^~~~~~~~~~~~~~~~~~
--
In file included from include/linux/array_size.h:5,
from include/linux/kernel.h:16,
from include/linux/sched/mm.h:5,
from drivers/gpu/drm/i915/i915_vma.c:25:
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h: In function 'i915_gem_object_flush_frontbuffer':
>> include/linux/rcupdate.h:463:9: error: dereferencing pointer to incomplete type 'struct intel_frontbuffer'
typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
^
include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/rcupdate.h:582:31: note: in expansion of macro '__rcu_access_pointer'
#define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h:24:15: note: in expansion of macro 'rcu_access_pointer'
if (unlikely(rcu_access_pointer(obj->frontbuffer)))
^~~~~~~~~~~~~~~~~~
vim +463 include/linux/rcupdate.h
76c8eaafe4f061 Paul E. McKenney 2021-04-21 460
24ba53017e188e Chun-Hung Tseng 2021-09-15 461 #define __rcu_access_pointer(p, local, space) \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 462 ({ \
24ba53017e188e Chun-Hung Tseng 2021-09-15 @463 typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
423a86a610cad1 Joel Fernandes (Google 2018-12-12 464) rcu_check_sparse(p, space); \
24ba53017e188e Chun-Hung Tseng 2021-09-15 465 ((typeof(*p) __force __kernel *)(local)); \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 466 })
24ba53017e188e Chun-Hung Tseng 2021-09-15 467 #define __rcu_dereference_check(p, local, c, space) \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 468 ({ \
ac59853c06993a Pranith Kumar 2014-11-13 469 /* Dependency order vs. p above. */ \
24ba53017e188e Chun-Hung Tseng 2021-09-15 470 typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
f78f5b90c4ffa5 Paul E. McKenney 2015-06-18 471 RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_check() usage"); \
423a86a610cad1 Joel Fernandes (Google 2018-12-12 472) rcu_check_sparse(p, space); \
24ba53017e188e Chun-Hung Tseng 2021-09-15 473 ((typeof(*p) __force __kernel *)(local)); \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 474 })
24ba53017e188e Chun-Hung Tseng 2021-09-15 475 #define __rcu_dereference_protected(p, local, c, space) \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 476 ({ \
f78f5b90c4ffa5 Paul E. McKenney 2015-06-18 477 RCU_LOCKDEP_WARN(!(c), "suspicious rcu_dereference_protected() usage"); \
423a86a610cad1 Joel Fernandes (Google 2018-12-12 478) rcu_check_sparse(p, space); \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 479 ((typeof(*p) __force __kernel *)(p)); \
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 480 })
24ba53017e188e Chun-Hung Tseng 2021-09-15 481 #define __rcu_dereference_raw(p, local) \
995f1405610bd8 Paul E. McKenney 2016-07-01 482 ({ \
995f1405610bd8 Paul E. McKenney 2016-07-01 483 /* Dependency order vs. p above. */ \
24ba53017e188e Chun-Hung Tseng 2021-09-15 484 typeof(p) local = READ_ONCE(p); \
24ba53017e188e Chun-Hung Tseng 2021-09-15 485 ((typeof(*p) __force __kernel *)(local)); \
995f1405610bd8 Paul E. McKenney 2016-07-01 486 })
24ba53017e188e Chun-Hung Tseng 2021-09-15 487 #define rcu_dereference_raw(p) __rcu_dereference_raw(p, __UNIQUE_ID(rcu))
ca5ecddfa8fcbd Paul E. McKenney 2010-04-28 488
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-06-18 23:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-17 14:18 [PATCH 0/5] drm/i915: make struct intel_frontbuffer opaque Jani Nikula
2024-06-17 14:18 ` [PATCH 1/5] drm/i915/frontbuffer: un-inline frontbuffer bits checks Jani Nikula
2024-06-17 14:18 ` [PATCH 2/5] drm/i915/frontbuffer: hide ->bits more Jani Nikula
2024-06-17 14:19 ` [PATCH 3/5] drm/i915/frontbuffer: add low-level kref accessors Jani Nikula
2024-06-17 14:19 ` [PATCH 4/5] drm/i915/frontbuffer: hide ->write Jani Nikula
2024-06-17 14:19 ` [PATCH 5/5] drm/i915/frontbuffer: make struct intel_frontbuffer opaque Jani Nikula
2024-06-18 23:54 ` kernel test robot
2024-06-17 14:27 ` ✗ Fi.CI.BUILD: failure for drm/i915: " Patchwork
2024-06-17 14:31 ` Jani Nikula
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox