* [PATCH 1/2] drm/i915: Track fence region ID in plane state
@ 2026-03-31 16:21 Ville Syrjala
2026-03-31 16:21 ` [PATCH 2/2] drm/i915: Remove the vma parent interface Ville Syrjala
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Ville Syrjala @ 2026-03-31 16:21 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Get rid of the needlessly complicated PLANE_HAS_FENCE +
intel_parent_vma_fence_id() dance by simply tracking the
fence_id directly in the plane state.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
.../drm/i915/display/intel_display_types.h | 5 +--
drivers/gpu/drm/i915/display/intel_fb_pin.c | 33 ++++++++++---------
drivers/gpu/drm/i915/display/intel_fb_pin.h | 5 ++-
drivers/gpu/drm/i915/display/intel_fbc.c | 11 ++-----
drivers/gpu/drm/i915/display/intel_fbdev.c | 14 ++++----
drivers/gpu/drm/i915/display/intel_plane.c | 3 +-
drivers/gpu/drm/i915/i915_initial_plane.c | 2 +-
drivers/gpu/drm/xe/display/xe_fb_pin.c | 8 ++---
drivers/gpu/drm/xe/display/xe_initial_plane.c | 2 +-
9 files changed, 42 insertions(+), 41 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index e2496db1642a..73eb4f38620c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -683,14 +683,15 @@ struct intel_plane_state {
struct i915_vma *ggtt_vma;
struct i915_vma *dpt_vma;
- unsigned long flags;
-#define PLANE_HAS_FENCE BIT(0)
struct intel_fb_view view;
/* for legacy cursor fb unpin */
struct drm_vblank_work unpin_work;
+ /* fenced region ID (-1 if none) */
+ s8 fence_id;
+
/* Plane pxp decryption state */
bool decrypt;
diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.c b/drivers/gpu/drm/i915/display/intel_fb_pin.c
index 738d77a1468a..0b8b057647af 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.c
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.c
@@ -26,7 +26,6 @@ static struct i915_vma *
intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
const struct i915_gtt_view *view,
unsigned int alignment,
- unsigned long *out_flags,
struct intel_dpt *dpt)
{
struct drm_device *dev = fb->dev;
@@ -115,8 +114,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
unsigned int alignment,
unsigned int phys_alignment,
unsigned int vtd_guard,
- bool uses_fence,
- unsigned long *out_flags)
+ int *out_fence_id)
{
struct drm_device *dev = fb->dev;
struct intel_display *display = to_intel_display(dev);
@@ -177,7 +175,10 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
goto err_unpin;
}
- if (uses_fence && i915_vma_is_map_and_fenceable(vma)) {
+ if (out_fence_id)
+ *out_fence_id = -1;
+
+ if (out_fence_id && i915_vma_is_map_and_fenceable(vma)) {
/*
* Install a fence for tiled scan-out. Pre-i965 always needs a
* fence, whereas 965+ only requires a fence if using
@@ -203,7 +204,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
ret = 0;
if (vma->fence)
- *out_flags |= PLANE_HAS_FENCE;
+ *out_fence_id |= vma->fence->id;
}
i915_vma_get(vma);
@@ -225,9 +226,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
return vma;
}
-void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags)
+void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
{
- if (flags & PLANE_HAS_FENCE)
+ if (fence_id >= 0)
i915_vma_unpin_fence(vma);
i915_vma_unpin(vma);
i915_vma_put(vma);
@@ -271,17 +272,18 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
struct i915_vma *vma;
if (!intel_fb_uses_dpt(&fb->base)) {
+ int fence_id = -1;
+
vma = intel_fb_pin_to_ggtt(&fb->base, &plane_state->view.gtt,
intel_plane_fb_min_alignment(plane_state),
intel_plane_fb_min_phys_alignment(plane_state),
intel_plane_fb_vtd_guard(plane_state),
- intel_plane_uses_fence(plane_state),
- &plane_state->flags);
+ intel_plane_uses_fence(plane_state) ? &fence_id : NULL);
if (IS_ERR(vma))
return PTR_ERR(vma);
plane_state->ggtt_vma = vma;
-
+ plane_state->fence_id = fence_id;
} else {
unsigned int alignment = intel_plane_fb_min_alignment(plane_state);
@@ -292,8 +294,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
plane_state->ggtt_vma = vma;
vma = intel_fb_pin_to_dpt(&fb->base, &plane_state->view.gtt,
- alignment, &plane_state->flags,
- fb->dpt);
+ alignment, fb->dpt);
if (IS_ERR(vma)) {
i915_dpt_unpin_from_ggtt(fb->dpt);
plane_state->ggtt_vma = NULL;
@@ -338,12 +339,14 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state)
if (!intel_fb_uses_dpt(&fb->base)) {
vma = fetch_and_zero(&old_plane_state->ggtt_vma);
- if (vma)
- intel_fb_unpin_vma(vma, old_plane_state->flags);
+ if (vma) {
+ intel_fb_unpin_vma(vma, old_plane_state->fence_id);
+ old_plane_state->fence_id = -1;
+ }
} else {
vma = fetch_and_zero(&old_plane_state->dpt_vma);
if (vma)
- intel_fb_unpin_vma(vma, old_plane_state->flags);
+ intel_fb_unpin_vma(vma, -1);
vma = fetch_and_zero(&old_plane_state->ggtt_vma);
if (vma)
diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index 81ab79da1af7..2eca42b74c4a 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -20,10 +20,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
unsigned int alignment,
unsigned int phys_alignment,
unsigned int vtd_guard,
- bool uses_fence,
- unsigned long *out_flags);
+ int *out_fence_id);
-void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags);
+void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id);
int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
const struct intel_plane_state *old_plane_state);
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index ea0ce00c8474..677ac5be749b 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -1458,13 +1458,10 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state);
- drm_WARN_ON(display->drm, plane_state->flags & PLANE_HAS_FENCE &&
+ drm_WARN_ON(display->drm, plane_state->fence_id >= 0 &&
!intel_fbc_has_fences(display));
- if (plane_state->flags & PLANE_HAS_FENCE)
- fbc_state->fence_id = intel_parent_vma_fence_id(display, plane_state->ggtt_vma);
- else
- fbc_state->fence_id = -1;
+ fbc_state->fence_id = plane_state->fence_id;
fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state);
fbc_state->cfb_size = intel_fbc_cfb_size(plane_state);
@@ -1487,9 +1484,7 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
* so have no fence associated with it) due to aperture constraints
* at the time of pinning.
*/
- return DISPLAY_VER(display) >= 9 ||
- (plane_state->flags & PLANE_HAS_FENCE &&
- intel_parent_vma_fence_id(display, plane_state->ggtt_vma) != -1);
+ return DISPLAY_VER(display) >= 9 || plane_state->fence_id >= 0;
}
static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index bdaaf3edba0c..0d7be5186393 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -60,7 +60,7 @@
struct intel_fbdev {
struct intel_framebuffer *fb;
struct i915_vma *vma;
- unsigned long vma_flags;
+ s8 fence_id;
};
static struct intel_fbdev *to_intel_fbdev(struct drm_fb_helper *fb_helper)
@@ -141,7 +141,7 @@ static void intel_fbdev_fb_destroy(struct fb_info *info)
* the info->screen_base mmaping. Leaking the VMA is simpler than
* trying to rectify all the possible error paths leading here.
*/
- intel_fb_unpin_vma(ifbdev->vma, ifbdev->vma_flags);
+ intel_fb_unpin_vma(ifbdev->vma, ifbdev->fence_id);
drm_framebuffer_remove(fb_helper->fb);
drm_client_release(&fb_helper->client);
@@ -269,9 +269,9 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
struct fb_info *info = helper->info;
struct ref_tracker *wakeref;
struct i915_vma *vma;
- unsigned long flags = 0;
bool prealloc = false;
struct drm_gem_object *obj;
+ int fence_id = -1;
int ret;
ifbdev->fb = NULL;
@@ -314,7 +314,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
fb->min_alignment, 0,
intel_fb_view_vtd_guard(&fb->base, &fb->normal_view,
DRM_MODE_ROTATE_0),
- false, &flags);
+ &fence_id);
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);
goto out_unlock;
@@ -345,14 +345,14 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
drm_dbg_kms(display->drm, "allocated %dx%d fb\n", fb->base.width, fb->base.height);
ifbdev->fb = fb;
ifbdev->vma = vma;
- ifbdev->vma_flags = flags;
+ ifbdev->fence_id = fence_id;
intel_display_rpm_put(display, wakeref);
return 0;
out_unpin:
- intel_fb_unpin_vma(vma, flags);
+ intel_fb_unpin_vma(vma, fence_id);
out_unlock:
intel_display_rpm_put(display, wakeref);
@@ -539,6 +539,8 @@ void intel_fbdev_setup(struct intel_display *display)
if (!ifbdev)
return;
+ ifbdev->fence_id = -1;
+
display->fbdev.fbdev = ifbdev;
if (intel_fbdev_init_bios(display, ifbdev))
preferred_bpp = intel_fbdev_color_mode(ifbdev->fb->base.format);
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index 5390ceb21ca4..f15dd9e91243 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -70,6 +70,7 @@ static void intel_plane_state_reset(struct intel_plane_state *plane_state,
__drm_atomic_helper_plane_state_reset(&plane_state->uapi, &plane->base);
plane_state->scaler_id = -1;
+ plane_state->fence_id = -1;
}
struct intel_plane *intel_plane_alloc(void)
@@ -137,7 +138,7 @@ intel_plane_duplicate_state(struct drm_plane *plane)
intel_state->ggtt_vma = NULL;
intel_state->dpt_vma = NULL;
- intel_state->flags = 0;
+ intel_state->fence_id = -1;
intel_state->damage = DRM_RECT_INIT(0, 0, 0, 0);
/* add reference to fb */
diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c
index 390a9248d631..db51a468ddd4 100644
--- a/drivers/gpu/drm/i915/i915_initial_plane.c
+++ b/drivers/gpu/drm/i915/i915_initial_plane.c
@@ -268,7 +268,7 @@ i915_initial_plane_setup(struct drm_plane_state *_plane_state,
plane_state->ggtt_vma = i915_vma_get(vma);
if (intel_plane_uses_fence(plane_state) &&
i915_vma_pin_fence(vma) == 0 && vma->fence)
- plane_state->flags |= PLANE_HAS_FENCE;
+ plane_state->fence_id = vma->fence->id;
plane_state->surf = i915_ggtt_offset(plane_state->ggtt_vma);
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index e45a1e7a4670..739d9c019094 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -418,15 +418,15 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
unsigned int alignment,
unsigned int phys_alignment,
unsigned int vtd_guard,
- bool uses_fence,
- unsigned long *out_flags)
+ int *out_fence_id)
{
- *out_flags = 0;
+ if (out_fence_id)
+ *out_fence_id = -1;
return __xe_pin_fb_vma(to_intel_framebuffer(fb), view, alignment);
}
-void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags)
+void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
{
__xe_unpin_fb_vma(vma);
}
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 8bcae552dddc..09ec8f94bf57 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -153,7 +153,7 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state,
struct i915_vma *vma;
vma = intel_fb_pin_to_ggtt(fb, &plane_state->view.gtt,
- 0, 0, 0, false, &plane_state->flags);
+ 0, 0, 0, NULL);
if (IS_ERR(vma))
return PTR_ERR(vma);
--
2.52.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 2/2] drm/i915: Remove the vma parent interface 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala @ 2026-03-31 16:21 ` Ville Syrjala 2026-04-01 13:10 ` Jani Nikula 2026-03-31 17:19 ` ✓ CI.KUnit: success for series starting with [1/2] drm/i915: Track fence region ID in plane state Patchwork ` (4 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Ville Syrjala @ 2026-03-31 16:21 UTC (permalink / raw) To: intel-gfx; +Cc: intel-xe From: Ville Syrjälä <ville.syrjala@linux.intel.com> With the fb pinning stuff directly returning the fence_id there is no longer any need for the vma parent interface. Get rid of it. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/display/intel_parent.c | 9 --------- drivers/gpu/drm/i915/display/intel_parent.h | 3 --- drivers/gpu/drm/i915/i915_driver.c | 1 - drivers/gpu/drm/i915/i915_vma.c | 10 ---------- drivers/gpu/drm/i915/i915_vma.h | 2 -- include/drm/intel/display_parent_interface.h | 7 ------- 6 files changed, 32 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c index 2e3bad2b3e6b..4142fe3eed7c 100644 --- a/drivers/gpu/drm/i915/display/intel_parent.c +++ b/drivers/gpu/drm/i915/display/intel_parent.c @@ -338,15 +338,6 @@ void intel_parent_stolen_node_free(struct intel_display *display, const struct i display->parent->stolen->node_free(node); } -/* vma */ -int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma) -{ - if (!display->parent->vma) - return -1; - - return display->parent->vma->fence_id(vma); -} - /* generic */ void intel_parent_fence_priority_display(struct intel_display *display, struct dma_fence *fence) { diff --git a/drivers/gpu/drm/i915/display/intel_parent.h b/drivers/gpu/drm/i915/display/intel_parent.h index 2013e5ed5aa9..c1214d3329a8 100644 --- a/drivers/gpu/drm/i915/display/intel_parent.h +++ b/drivers/gpu/drm/i915/display/intel_parent.h @@ -109,9 +109,6 @@ u64 intel_parent_stolen_node_size(struct intel_display *display, const struct in struct intel_stolen_node *intel_parent_stolen_node_alloc(struct intel_display *display); void intel_parent_stolen_node_free(struct intel_display *display, const struct intel_stolen_node *node); -/* vma */ -int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma); - /* generic */ bool intel_parent_has_auxccs(struct intel_display *display); bool intel_parent_has_fenced_regions(struct intel_display *display); diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index 385a634c3ed0..6dde714d4646 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -780,7 +780,6 @@ static const struct intel_display_parent_interface parent = { .rpm = &i915_display_rpm_interface, .rps = &i915_display_rps_interface, .stolen = &i915_display_stolen_interface, - .vma = &i915_display_vma_interface, .fence_priority_display = fence_priority_display, .has_auxccs = has_auxccs, diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 6a3a4d4244dc..afc192d9931b 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -27,7 +27,6 @@ #include <drm/drm_gem.h> #include <drm/drm_print.h> -#include <drm/intel/display_parent_interface.h> #include "display/intel_fb.h" #include "display/intel_frontbuffer.h" @@ -2333,12 +2332,3 @@ int __init i915_vma_module_init(void) return 0; } - -static int i915_vma_fence_id(const struct i915_vma *vma) -{ - return vma->fence ? vma->fence->id : -1; -} - -const struct intel_display_vma_interface i915_display_vma_interface = { - .fence_id = i915_vma_fence_id, -}; diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h index fa2d9b429db6..892306ab935d 100644 --- a/drivers/gpu/drm/i915/i915_vma.h +++ b/drivers/gpu/drm/i915/i915_vma.h @@ -476,6 +476,4 @@ int i915_vma_module_init(void); I915_SELFTEST_DECLARE(int i915_vma_get_pages(struct i915_vma *vma)); I915_SELFTEST_DECLARE(void i915_vma_put_pages(struct i915_vma *vma)); -extern const struct intel_display_vma_interface i915_display_vma_interface; - #endif diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h index 97ec94a2e749..aef6a16efd90 100644 --- a/include/drm/intel/display_parent_interface.h +++ b/include/drm/intel/display_parent_interface.h @@ -176,10 +176,6 @@ struct intel_display_stolen_interface { void (*node_free)(const struct intel_stolen_node *node); }; -struct intel_display_vma_interface { - int (*fence_id)(const struct i915_vma *vma); -}; - /** * struct intel_display_parent_interface - services parent driver provides to display * @@ -235,9 +231,6 @@ struct intel_display_parent_interface { /** @stolen: Stolen memory. */ const struct intel_display_stolen_interface *stolen; - /** @vma: VMA interface. Optional. */ - const struct intel_display_vma_interface *vma; - /* Generic independent functions */ struct { /** @fence_priority_display: Set display priority. Optional. */ -- 2.52.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/i915: Remove the vma parent interface 2026-03-31 16:21 ` [PATCH 2/2] drm/i915: Remove the vma parent interface Ville Syrjala @ 2026-04-01 13:10 ` Jani Nikula 0 siblings, 0 replies; 10+ messages in thread From: Jani Nikula @ 2026-04-01 13:10 UTC (permalink / raw) To: Ville Syrjala, intel-gfx; +Cc: intel-xe On Tue, 31 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > With the fb pinning stuff directly returning the fence_id > there is no longer any need for the vma parent interface. > Get rid of it. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/display/intel_parent.c | 9 --------- > drivers/gpu/drm/i915/display/intel_parent.h | 3 --- > drivers/gpu/drm/i915/i915_driver.c | 1 - > drivers/gpu/drm/i915/i915_vma.c | 10 ---------- > drivers/gpu/drm/i915/i915_vma.h | 2 -- > include/drm/intel/display_parent_interface.h | 7 ------- > 6 files changed, 32 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c > index 2e3bad2b3e6b..4142fe3eed7c 100644 > --- a/drivers/gpu/drm/i915/display/intel_parent.c > +++ b/drivers/gpu/drm/i915/display/intel_parent.c > @@ -338,15 +338,6 @@ void intel_parent_stolen_node_free(struct intel_display *display, const struct i > display->parent->stolen->node_free(node); > } > > -/* vma */ > -int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma) > -{ > - if (!display->parent->vma) > - return -1; > - > - return display->parent->vma->fence_id(vma); > -} > - > /* generic */ > void intel_parent_fence_priority_display(struct intel_display *display, struct dma_fence *fence) > { > diff --git a/drivers/gpu/drm/i915/display/intel_parent.h b/drivers/gpu/drm/i915/display/intel_parent.h > index 2013e5ed5aa9..c1214d3329a8 100644 > --- a/drivers/gpu/drm/i915/display/intel_parent.h > +++ b/drivers/gpu/drm/i915/display/intel_parent.h > @@ -109,9 +109,6 @@ u64 intel_parent_stolen_node_size(struct intel_display *display, const struct in > struct intel_stolen_node *intel_parent_stolen_node_alloc(struct intel_display *display); > void intel_parent_stolen_node_free(struct intel_display *display, const struct intel_stolen_node *node); > > -/* vma */ > -int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma); > - > /* generic */ > bool intel_parent_has_auxccs(struct intel_display *display); > bool intel_parent_has_fenced_regions(struct intel_display *display); > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > index 385a634c3ed0..6dde714d4646 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -780,7 +780,6 @@ static const struct intel_display_parent_interface parent = { > .rpm = &i915_display_rpm_interface, > .rps = &i915_display_rps_interface, > .stolen = &i915_display_stolen_interface, > - .vma = &i915_display_vma_interface, > > .fence_priority_display = fence_priority_display, > .has_auxccs = has_auxccs, > diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c > index 6a3a4d4244dc..afc192d9931b 100644 > --- a/drivers/gpu/drm/i915/i915_vma.c > +++ b/drivers/gpu/drm/i915/i915_vma.c > @@ -27,7 +27,6 @@ > > #include <drm/drm_gem.h> > #include <drm/drm_print.h> > -#include <drm/intel/display_parent_interface.h> > > #include "display/intel_fb.h" > #include "display/intel_frontbuffer.h" > @@ -2333,12 +2332,3 @@ int __init i915_vma_module_init(void) > > return 0; > } > - > -static int i915_vma_fence_id(const struct i915_vma *vma) > -{ > - return vma->fence ? vma->fence->id : -1; > -} > - > -const struct intel_display_vma_interface i915_display_vma_interface = { > - .fence_id = i915_vma_fence_id, > -}; > diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h > index fa2d9b429db6..892306ab935d 100644 > --- a/drivers/gpu/drm/i915/i915_vma.h > +++ b/drivers/gpu/drm/i915/i915_vma.h > @@ -476,6 +476,4 @@ int i915_vma_module_init(void); > I915_SELFTEST_DECLARE(int i915_vma_get_pages(struct i915_vma *vma)); > I915_SELFTEST_DECLARE(void i915_vma_put_pages(struct i915_vma *vma)); > > -extern const struct intel_display_vma_interface i915_display_vma_interface; > - > #endif > diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h > index 97ec94a2e749..aef6a16efd90 100644 > --- a/include/drm/intel/display_parent_interface.h > +++ b/include/drm/intel/display_parent_interface.h > @@ -176,10 +176,6 @@ struct intel_display_stolen_interface { > void (*node_free)(const struct intel_stolen_node *node); > }; > > -struct intel_display_vma_interface { > - int (*fence_id)(const struct i915_vma *vma); > -}; > - > /** > * struct intel_display_parent_interface - services parent driver provides to display > * > @@ -235,9 +231,6 @@ struct intel_display_parent_interface { > /** @stolen: Stolen memory. */ > const struct intel_display_stolen_interface *stolen; > > - /** @vma: VMA interface. Optional. */ > - const struct intel_display_vma_interface *vma; > - > /* Generic independent functions */ > struct { > /** @fence_priority_display: Set display priority. Optional. */ -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✓ CI.KUnit: success for series starting with [1/2] drm/i915: Track fence region ID in plane state 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala 2026-03-31 16:21 ` [PATCH 2/2] drm/i915: Remove the vma parent interface Ville Syrjala @ 2026-03-31 17:19 ` Patchwork 2026-03-31 18:19 ` ✓ Xe.CI.BAT: " Patchwork ` (3 subsequent siblings) 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2026-03-31 17:19 UTC (permalink / raw) To: Ville Syrjala; +Cc: intel-xe == Series Details == Series: series starting with [1/2] drm/i915: Track fence region ID in plane state URL : https://patchwork.freedesktop.org/series/164181/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [17:17:48] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [17:17:52] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [17:18:23] Starting KUnit Kernel (1/1)... [17:18:23] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [17:18:23] ================== guc_buf (11 subtests) =================== [17:18:23] [PASSED] test_smallest [17:18:23] [PASSED] test_largest [17:18:23] [PASSED] test_granular [17:18:23] [PASSED] test_unique [17:18:23] [PASSED] test_overlap [17:18:23] [PASSED] test_reusable [17:18:23] [PASSED] test_too_big [17:18:23] [PASSED] test_flush [17:18:23] [PASSED] test_lookup [17:18:23] [PASSED] test_data [17:18:23] [PASSED] test_class [17:18:23] ===================== [PASSED] guc_buf ===================== [17:18:23] =================== guc_dbm (7 subtests) =================== [17:18:23] [PASSED] test_empty [17:18:23] [PASSED] test_default [17:18:23] ======================== test_size ======================== [17:18:23] [PASSED] 4 [17:18:23] [PASSED] 8 [17:18:23] [PASSED] 32 [17:18:23] [PASSED] 256 [17:18:23] ==================== [PASSED] test_size ==================== [17:18:23] ======================= test_reuse ======================== [17:18:23] [PASSED] 4 [17:18:23] [PASSED] 8 [17:18:23] [PASSED] 32 [17:18:23] [PASSED] 256 [17:18:23] =================== [PASSED] test_reuse ==================== [17:18:23] =================== test_range_overlap ==================== [17:18:23] [PASSED] 4 [17:18:23] [PASSED] 8 [17:18:23] [PASSED] 32 [17:18:23] [PASSED] 256 [17:18:23] =============== [PASSED] test_range_overlap ================ [17:18:23] =================== test_range_compact ==================== [17:18:23] [PASSED] 4 [17:18:23] [PASSED] 8 [17:18:23] [PASSED] 32 [17:18:23] [PASSED] 256 [17:18:23] =============== [PASSED] test_range_compact ================ [17:18:23] ==================== test_range_spare ===================== [17:18:23] [PASSED] 4 [17:18:23] [PASSED] 8 [17:18:23] [PASSED] 32 [17:18:23] [PASSED] 256 [17:18:23] ================ [PASSED] test_range_spare ================= [17:18:23] ===================== [PASSED] guc_dbm ===================== [17:18:23] =================== guc_idm (6 subtests) =================== [17:18:23] [PASSED] bad_init [17:18:23] [PASSED] no_init [17:18:23] [PASSED] init_fini [17:18:23] [PASSED] check_used [17:18:23] [PASSED] check_quota [17:18:23] [PASSED] check_all [17:18:23] ===================== [PASSED] guc_idm ===================== [17:18:23] ================== no_relay (3 subtests) =================== [17:18:23] [PASSED] xe_drops_guc2pf_if_not_ready [17:18:23] [PASSED] xe_drops_guc2vf_if_not_ready [17:18:23] [PASSED] xe_rejects_send_if_not_ready [17:18:23] ==================== [PASSED] no_relay ===================== [17:18:23] ================== pf_relay (14 subtests) ================== [17:18:23] [PASSED] pf_rejects_guc2pf_too_short [17:18:23] [PASSED] pf_rejects_guc2pf_too_long [17:18:23] [PASSED] pf_rejects_guc2pf_no_payload [17:18:23] [PASSED] pf_fails_no_payload [17:18:23] [PASSED] pf_fails_bad_origin [17:18:23] [PASSED] pf_fails_bad_type [17:18:23] [PASSED] pf_txn_reports_error [17:18:23] [PASSED] pf_txn_sends_pf2guc [17:18:23] [PASSED] pf_sends_pf2guc [17:18:23] [SKIPPED] pf_loopback_nop [17:18:23] [SKIPPED] pf_loopback_echo [17:18:23] [SKIPPED] pf_loopback_fail [17:18:23] [SKIPPED] pf_loopback_busy [17:18:24] [SKIPPED] pf_loopback_retry [17:18:24] ==================== [PASSED] pf_relay ===================== [17:18:24] ================== vf_relay (3 subtests) =================== [17:18:24] [PASSED] vf_rejects_guc2vf_too_short [17:18:24] [PASSED] vf_rejects_guc2vf_too_long [17:18:24] [PASSED] vf_rejects_guc2vf_no_payload [17:18:24] ==================== [PASSED] vf_relay ===================== [17:18:24] ================ pf_gt_config (9 subtests) ================= [17:18:24] [PASSED] fair_contexts_1vf [17:18:24] [PASSED] fair_doorbells_1vf [17:18:24] [PASSED] fair_ggtt_1vf [17:18:24] ====================== fair_vram_1vf ====================== [17:18:24] [PASSED] 3.50 GiB [17:18:24] [PASSED] 11.5 GiB [17:18:24] [PASSED] 15.5 GiB [17:18:24] [PASSED] 31.5 GiB [17:18:24] [PASSED] 63.5 GiB [17:18:24] [PASSED] 1.91 GiB [17:18:24] ================== [PASSED] fair_vram_1vf ================== [17:18:24] ================ fair_vram_1vf_admin_only ================= [17:18:24] [PASSED] 3.50 GiB [17:18:24] [PASSED] 11.5 GiB [17:18:24] [PASSED] 15.5 GiB [17:18:24] [PASSED] 31.5 GiB [17:18:24] [PASSED] 63.5 GiB [17:18:24] [PASSED] 1.91 GiB [17:18:24] ============ [PASSED] fair_vram_1vf_admin_only ============= [17:18:24] ====================== fair_contexts ====================== [17:18:24] [PASSED] 1 VF [17:18:24] [PASSED] 2 VFs [17:18:24] [PASSED] 3 VFs [17:18:24] [PASSED] 4 VFs [17:18:24] [PASSED] 5 VFs [17:18:24] [PASSED] 6 VFs [17:18:24] [PASSED] 7 VFs [17:18:24] [PASSED] 8 VFs [17:18:24] [PASSED] 9 VFs [17:18:24] [PASSED] 10 VFs [17:18:24] [PASSED] 11 VFs [17:18:24] [PASSED] 12 VFs [17:18:24] [PASSED] 13 VFs [17:18:24] [PASSED] 14 VFs [17:18:24] [PASSED] 15 VFs [17:18:24] [PASSED] 16 VFs [17:18:24] [PASSED] 17 VFs [17:18:24] [PASSED] 18 VFs [17:18:24] [PASSED] 19 VFs [17:18:24] [PASSED] 20 VFs [17:18:24] [PASSED] 21 VFs [17:18:24] [PASSED] 22 VFs [17:18:24] [PASSED] 23 VFs [17:18:24] [PASSED] 24 VFs [17:18:24] [PASSED] 25 VFs [17:18:24] [PASSED] 26 VFs [17:18:24] [PASSED] 27 VFs [17:18:24] [PASSED] 28 VFs [17:18:24] [PASSED] 29 VFs [17:18:24] [PASSED] 30 VFs [17:18:24] [PASSED] 31 VFs [17:18:24] [PASSED] 32 VFs [17:18:24] [PASSED] 33 VFs [17:18:24] [PASSED] 34 VFs [17:18:24] [PASSED] 35 VFs [17:18:24] [PASSED] 36 VFs [17:18:24] [PASSED] 37 VFs [17:18:24] [PASSED] 38 VFs [17:18:24] [PASSED] 39 VFs [17:18:24] [PASSED] 40 VFs [17:18:24] [PASSED] 41 VFs [17:18:24] [PASSED] 42 VFs [17:18:24] [PASSED] 43 VFs [17:18:24] [PASSED] 44 VFs [17:18:24] [PASSED] 45 VFs [17:18:24] [PASSED] 46 VFs [17:18:24] [PASSED] 47 VFs [17:18:24] [PASSED] 48 VFs [17:18:24] [PASSED] 49 VFs [17:18:24] [PASSED] 50 VFs [17:18:24] [PASSED] 51 VFs [17:18:24] [PASSED] 52 VFs [17:18:24] [PASSED] 53 VFs [17:18:24] [PASSED] 54 VFs [17:18:24] [PASSED] 55 VFs [17:18:24] [PASSED] 56 VFs [17:18:24] [PASSED] 57 VFs [17:18:24] [PASSED] 58 VFs [17:18:24] [PASSED] 59 VFs [17:18:24] [PASSED] 60 VFs [17:18:24] [PASSED] 61 VFs [17:18:24] [PASSED] 62 VFs [17:18:24] [PASSED] 63 VFs [17:18:24] ================== [PASSED] fair_contexts ================== [17:18:24] ===================== fair_doorbells ====================== [17:18:24] [PASSED] 1 VF [17:18:24] [PASSED] 2 VFs [17:18:24] [PASSED] 3 VFs [17:18:24] [PASSED] 4 VFs [17:18:24] [PASSED] 5 VFs [17:18:24] [PASSED] 6 VFs [17:18:24] [PASSED] 7 VFs [17:18:24] [PASSED] 8 VFs [17:18:24] [PASSED] 9 VFs [17:18:24] [PASSED] 10 VFs [17:18:24] [PASSED] 11 VFs [17:18:24] [PASSED] 12 VFs [17:18:24] [PASSED] 13 VFs [17:18:24] [PASSED] 14 VFs [17:18:24] [PASSED] 15 VFs [17:18:24] [PASSED] 16 VFs [17:18:24] [PASSED] 17 VFs [17:18:24] [PASSED] 18 VFs [17:18:24] [PASSED] 19 VFs [17:18:24] [PASSED] 20 VFs [17:18:24] [PASSED] 21 VFs [17:18:24] [PASSED] 22 VFs [17:18:24] [PASSED] 23 VFs [17:18:24] [PASSED] 24 VFs [17:18:24] [PASSED] 25 VFs [17:18:24] [PASSED] 26 VFs [17:18:24] [PASSED] 27 VFs [17:18:24] [PASSED] 28 VFs [17:18:24] [PASSED] 29 VFs [17:18:24] [PASSED] 30 VFs [17:18:24] [PASSED] 31 VFs [17:18:24] [PASSED] 32 VFs [17:18:24] [PASSED] 33 VFs [17:18:24] [PASSED] 34 VFs [17:18:24] [PASSED] 35 VFs [17:18:24] [PASSED] 36 VFs [17:18:24] [PASSED] 37 VFs [17:18:24] [PASSED] 38 VFs [17:18:24] [PASSED] 39 VFs [17:18:24] [PASSED] 40 VFs [17:18:24] [PASSED] 41 VFs [17:18:24] [PASSED] 42 VFs [17:18:24] [PASSED] 43 VFs [17:18:24] [PASSED] 44 VFs [17:18:24] [PASSED] 45 VFs [17:18:24] [PASSED] 46 VFs [17:18:24] [PASSED] 47 VFs [17:18:24] [PASSED] 48 VFs [17:18:24] [PASSED] 49 VFs [17:18:24] [PASSED] 50 VFs [17:18:24] [PASSED] 51 VFs [17:18:24] [PASSED] 52 VFs [17:18:24] [PASSED] 53 VFs [17:18:24] [PASSED] 54 VFs [17:18:24] [PASSED] 55 VFs [17:18:24] [PASSED] 56 VFs [17:18:24] [PASSED] 57 VFs [17:18:24] [PASSED] 58 VFs [17:18:24] [PASSED] 59 VFs [17:18:24] [PASSED] 60 VFs [17:18:24] [PASSED] 61 VFs [17:18:24] [PASSED] 62 VFs [17:18:24] [PASSED] 63 VFs [17:18:24] ================= [PASSED] fair_doorbells ================== [17:18:24] ======================== fair_ggtt ======================== [17:18:24] [PASSED] 1 VF [17:18:24] [PASSED] 2 VFs [17:18:24] [PASSED] 3 VFs [17:18:24] [PASSED] 4 VFs [17:18:24] [PASSED] 5 VFs [17:18:24] [PASSED] 6 VFs [17:18:24] [PASSED] 7 VFs [17:18:24] [PASSED] 8 VFs [17:18:24] [PASSED] 9 VFs [17:18:24] [PASSED] 10 VFs [17:18:24] [PASSED] 11 VFs [17:18:24] [PASSED] 12 VFs [17:18:24] [PASSED] 13 VFs [17:18:24] [PASSED] 14 VFs [17:18:24] [PASSED] 15 VFs [17:18:24] [PASSED] 16 VFs [17:18:24] [PASSED] 17 VFs [17:18:24] [PASSED] 18 VFs [17:18:24] [PASSED] 19 VFs [17:18:24] [PASSED] 20 VFs [17:18:24] [PASSED] 21 VFs [17:18:24] [PASSED] 22 VFs [17:18:24] [PASSED] 23 VFs [17:18:24] [PASSED] 24 VFs [17:18:24] [PASSED] 25 VFs [17:18:24] [PASSED] 26 VFs [17:18:24] [PASSED] 27 VFs [17:18:24] [PASSED] 28 VFs [17:18:24] [PASSED] 29 VFs [17:18:24] [PASSED] 30 VFs [17:18:24] [PASSED] 31 VFs [17:18:24] [PASSED] 32 VFs [17:18:24] [PASSED] 33 VFs [17:18:24] [PASSED] 34 VFs [17:18:24] [PASSED] 35 VFs [17:18:24] [PASSED] 36 VFs [17:18:24] [PASSED] 37 VFs [17:18:24] [PASSED] 38 VFs [17:18:24] [PASSED] 39 VFs [17:18:24] [PASSED] 40 VFs [17:18:24] [PASSED] 41 VFs [17:18:24] [PASSED] 42 VFs [17:18:24] [PASSED] 43 VFs [17:18:24] [PASSED] 44 VFs [17:18:24] [PASSED] 45 VFs [17:18:24] [PASSED] 46 VFs [17:18:24] [PASSED] 47 VFs [17:18:24] [PASSED] 48 VFs [17:18:24] [PASSED] 49 VFs [17:18:24] [PASSED] 50 VFs [17:18:24] [PASSED] 51 VFs [17:18:24] [PASSED] 52 VFs [17:18:24] [PASSED] 53 VFs [17:18:24] [PASSED] 54 VFs [17:18:24] [PASSED] 55 VFs [17:18:24] [PASSED] 56 VFs [17:18:24] [PASSED] 57 VFs [17:18:24] [PASSED] 58 VFs [17:18:24] [PASSED] 59 VFs [17:18:24] [PASSED] 60 VFs [17:18:24] [PASSED] 61 VFs [17:18:24] [PASSED] 62 VFs [17:18:24] [PASSED] 63 VFs [17:18:24] ==================== [PASSED] fair_ggtt ==================== [17:18:24] ======================== fair_vram ======================== [17:18:24] [PASSED] 1 VF [17:18:24] [PASSED] 2 VFs [17:18:24] [PASSED] 3 VFs [17:18:24] [PASSED] 4 VFs [17:18:24] [PASSED] 5 VFs [17:18:24] [PASSED] 6 VFs [17:18:24] [PASSED] 7 VFs [17:18:24] [PASSED] 8 VFs [17:18:24] [PASSED] 9 VFs [17:18:24] [PASSED] 10 VFs [17:18:24] [PASSED] 11 VFs [17:18:24] [PASSED] 12 VFs [17:18:24] [PASSED] 13 VFs [17:18:24] [PASSED] 14 VFs [17:18:24] [PASSED] 15 VFs [17:18:24] [PASSED] 16 VFs [17:18:24] [PASSED] 17 VFs [17:18:24] [PASSED] 18 VFs [17:18:24] [PASSED] 19 VFs [17:18:24] [PASSED] 20 VFs [17:18:24] [PASSED] 21 VFs [17:18:24] [PASSED] 22 VFs [17:18:24] [PASSED] 23 VFs [17:18:24] [PASSED] 24 VFs [17:18:24] [PASSED] 25 VFs [17:18:24] [PASSED] 26 VFs [17:18:24] [PASSED] 27 VFs [17:18:24] [PASSED] 28 VFs [17:18:24] [PASSED] 29 VFs [17:18:24] [PASSED] 30 VFs [17:18:24] [PASSED] 31 VFs [17:18:24] [PASSED] 32 VFs [17:18:24] [PASSED] 33 VFs [17:18:24] [PASSED] 34 VFs [17:18:24] [PASSED] 35 VFs [17:18:24] [PASSED] 36 VFs [17:18:24] [PASSED] 37 VFs [17:18:24] [PASSED] 38 VFs [17:18:24] [PASSED] 39 VFs [17:18:24] [PASSED] 40 VFs [17:18:24] [PASSED] 41 VFs [17:18:24] [PASSED] 42 VFs [17:18:24] [PASSED] 43 VFs [17:18:24] [PASSED] 44 VFs [17:18:24] [PASSED] 45 VFs [17:18:24] [PASSED] 46 VFs [17:18:24] [PASSED] 47 VFs [17:18:24] [PASSED] 48 VFs [17:18:24] [PASSED] 49 VFs [17:18:24] [PASSED] 50 VFs [17:18:24] [PASSED] 51 VFs [17:18:24] [PASSED] 52 VFs [17:18:24] [PASSED] 53 VFs [17:18:24] [PASSED] 54 VFs [17:18:24] [PASSED] 55 VFs [17:18:24] [PASSED] 56 VFs [17:18:24] [PASSED] 57 VFs [17:18:24] [PASSED] 58 VFs [17:18:24] [PASSED] 59 VFs [17:18:24] [PASSED] 60 VFs [17:18:24] [PASSED] 61 VFs [17:18:24] [PASSED] 62 VFs [17:18:24] [PASSED] 63 VFs [17:18:24] ==================== [PASSED] fair_vram ==================== [17:18:24] ================== [PASSED] pf_gt_config =================== [17:18:24] ===================== lmtt (1 subtest) ===================== [17:18:24] ======================== test_ops ========================= [17:18:24] [PASSED] 2-level [17:18:24] [PASSED] multi-level [17:18:24] ==================== [PASSED] test_ops ===================== [17:18:24] ====================== [PASSED] lmtt ======================= [17:18:24] ================= pf_service (11 subtests) ================= [17:18:24] [PASSED] pf_negotiate_any [17:18:24] [PASSED] pf_negotiate_base_match [17:18:24] [PASSED] pf_negotiate_base_newer [17:18:24] [PASSED] pf_negotiate_base_next [17:18:24] [SKIPPED] pf_negotiate_base_older [17:18:24] [PASSED] pf_negotiate_base_prev [17:18:24] [PASSED] pf_negotiate_latest_match [17:18:24] [PASSED] pf_negotiate_latest_newer [17:18:24] [PASSED] pf_negotiate_latest_next [17:18:24] [SKIPPED] pf_negotiate_latest_older [17:18:24] [SKIPPED] pf_negotiate_latest_prev [17:18:24] =================== [PASSED] pf_service ==================== [17:18:24] ================= xe_guc_g2g (2 subtests) ================== [17:18:24] ============== xe_live_guc_g2g_kunit_default ============== [17:18:24] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [17:18:24] ============== xe_live_guc_g2g_kunit_allmem =============== [17:18:24] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [17:18:24] =================== [SKIPPED] xe_guc_g2g =================== [17:18:24] =================== xe_mocs (2 subtests) =================== [17:18:24] ================ xe_live_mocs_kernel_kunit ================ [17:18:24] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [17:18:24] ================ xe_live_mocs_reset_kunit ================= [17:18:24] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [17:18:24] ==================== [SKIPPED] xe_mocs ===================== [17:18:24] ================= xe_migrate (2 subtests) ================== [17:18:24] ================= xe_migrate_sanity_kunit ================= [17:18:24] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [17:18:24] ================== xe_validate_ccs_kunit ================== [17:18:24] ============= [SKIPPED] xe_validate_ccs_kunit ============== [17:18:24] =================== [SKIPPED] xe_migrate =================== [17:18:24] ================== xe_dma_buf (1 subtest) ================== [17:18:24] ==================== xe_dma_buf_kunit ===================== [17:18:24] ================ [SKIPPED] xe_dma_buf_kunit ================ [17:18:24] =================== [SKIPPED] xe_dma_buf =================== [17:18:24] ================= xe_bo_shrink (1 subtest) ================= [17:18:24] =================== xe_bo_shrink_kunit ==================== [17:18:24] =============== [SKIPPED] xe_bo_shrink_kunit =============== [17:18:24] ================== [SKIPPED] xe_bo_shrink ================== [17:18:24] ==================== xe_bo (2 subtests) ==================== [17:18:24] ================== xe_ccs_migrate_kunit =================== [17:18:24] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [17:18:24] ==================== xe_bo_evict_kunit ==================== [17:18:24] =============== [SKIPPED] xe_bo_evict_kunit ================ [17:18:24] ===================== [SKIPPED] xe_bo ====================== [17:18:24] ==================== args (13 subtests) ==================== [17:18:24] [PASSED] count_args_test [17:18:24] [PASSED] call_args_example [17:18:24] [PASSED] call_args_test [17:18:24] [PASSED] drop_first_arg_example [17:18:24] [PASSED] drop_first_arg_test [17:18:24] [PASSED] first_arg_example [17:18:24] [PASSED] first_arg_test [17:18:24] [PASSED] last_arg_example [17:18:24] [PASSED] last_arg_test [17:18:24] [PASSED] pick_arg_example [17:18:24] [PASSED] if_args_example [17:18:24] [PASSED] if_args_test [17:18:24] [PASSED] sep_comma_example [17:18:24] ====================== [PASSED] args ======================= [17:18:24] =================== xe_pci (3 subtests) ==================== [17:18:24] ==================== check_graphics_ip ==================== [17:18:24] [PASSED] 12.00 Xe_LP [17:18:24] [PASSED] 12.10 Xe_LP+ [17:18:24] [PASSED] 12.55 Xe_HPG [17:18:24] [PASSED] 12.60 Xe_HPC [17:18:24] [PASSED] 12.70 Xe_LPG [17:18:24] [PASSED] 12.71 Xe_LPG [17:18:24] [PASSED] 12.74 Xe_LPG+ [17:18:24] [PASSED] 20.01 Xe2_HPG [17:18:24] [PASSED] 20.02 Xe2_HPG [17:18:24] [PASSED] 20.04 Xe2_LPG [17:18:24] [PASSED] 30.00 Xe3_LPG [17:18:24] [PASSED] 30.01 Xe3_LPG [17:18:24] [PASSED] 30.03 Xe3_LPG [17:18:24] [PASSED] 30.04 Xe3_LPG [17:18:24] [PASSED] 30.05 Xe3_LPG [17:18:24] [PASSED] 35.10 Xe3p_LPG [17:18:24] [PASSED] 35.11 Xe3p_XPC [17:18:24] ================ [PASSED] check_graphics_ip ================ [17:18:24] ===================== check_media_ip ====================== [17:18:24] [PASSED] 12.00 Xe_M [17:18:24] [PASSED] 12.55 Xe_HPM [17:18:24] [PASSED] 13.00 Xe_LPM+ [17:18:24] [PASSED] 13.01 Xe2_HPM [17:18:24] [PASSED] 20.00 Xe2_LPM [17:18:24] [PASSED] 30.00 Xe3_LPM [17:18:24] [PASSED] 30.02 Xe3_LPM [17:18:24] [PASSED] 35.00 Xe3p_LPM [17:18:24] [PASSED] 35.03 Xe3p_HPM [17:18:24] ================= [PASSED] check_media_ip ================== [17:18:24] =================== check_platform_desc =================== [17:18:24] [PASSED] 0x9A60 (TIGERLAKE) [17:18:24] [PASSED] 0x9A68 (TIGERLAKE) [17:18:24] [PASSED] 0x9A70 (TIGERLAKE) [17:18:24] [PASSED] 0x9A40 (TIGERLAKE) [17:18:24] [PASSED] 0x9A49 (TIGERLAKE) [17:18:24] [PASSED] 0x9A59 (TIGERLAKE) [17:18:24] [PASSED] 0x9A78 (TIGERLAKE) [17:18:24] [PASSED] 0x9AC0 (TIGERLAKE) [17:18:24] [PASSED] 0x9AC9 (TIGERLAKE) [17:18:24] [PASSED] 0x9AD9 (TIGERLAKE) [17:18:24] [PASSED] 0x9AF8 (TIGERLAKE) [17:18:24] [PASSED] 0x4C80 (ROCKETLAKE) [17:18:24] [PASSED] 0x4C8A (ROCKETLAKE) [17:18:24] [PASSED] 0x4C8B (ROCKETLAKE) [17:18:24] [PASSED] 0x4C8C (ROCKETLAKE) [17:18:24] [PASSED] 0x4C90 (ROCKETLAKE) [17:18:24] [PASSED] 0x4C9A (ROCKETLAKE) [17:18:24] [PASSED] 0x4680 (ALDERLAKE_S) [17:18:24] [PASSED] 0x4682 (ALDERLAKE_S) [17:18:24] [PASSED] 0x4688 (ALDERLAKE_S) [17:18:24] [PASSED] 0x468A (ALDERLAKE_S) [17:18:24] [PASSED] 0x468B (ALDERLAKE_S) [17:18:24] [PASSED] 0x4690 (ALDERLAKE_S) [17:18:24] [PASSED] 0x4692 (ALDERLAKE_S) [17:18:24] [PASSED] 0x4693 (ALDERLAKE_S) [17:18:24] [PASSED] 0x46A0 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46A1 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46A2 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46A3 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46A6 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46A8 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46AA (ALDERLAKE_P) [17:18:24] [PASSED] 0x462A (ALDERLAKE_P) [17:18:24] [PASSED] 0x4626 (ALDERLAKE_P) [17:18:24] [PASSED] 0x4628 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46B0 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46B1 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46B2 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46B3 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46C0 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46C1 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46C2 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46C3 (ALDERLAKE_P) [17:18:24] [PASSED] 0x46D0 (ALDERLAKE_N) [17:18:24] [PASSED] 0x46D1 (ALDERLAKE_N) [17:18:24] [PASSED] 0x46D2 (ALDERLAKE_N) [17:18:24] [PASSED] 0x46D3 (ALDERLAKE_N) [17:18:24] [PASSED] 0x46D4 (ALDERLAKE_N) [17:18:24] [PASSED] 0xA721 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7A1 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7A9 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7AC (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7AD (ALDERLAKE_P) [17:18:24] [PASSED] 0xA720 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7A0 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7A8 (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7AA (ALDERLAKE_P) [17:18:24] [PASSED] 0xA7AB (ALDERLAKE_P) [17:18:24] [PASSED] 0xA780 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA781 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA782 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA783 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA788 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA789 (ALDERLAKE_S) [17:18:24] [PASSED] 0xA78A (ALDERLAKE_S) [17:18:24] [PASSED] 0xA78B (ALDERLAKE_S) [17:18:24] [PASSED] 0x4905 (DG1) [17:18:24] [PASSED] 0x4906 (DG1) [17:18:24] [PASSED] 0x4907 (DG1) [17:18:24] [PASSED] 0x4908 (DG1) [17:18:24] [PASSED] 0x4909 (DG1) [17:18:24] [PASSED] 0x56C0 (DG2) [17:18:24] [PASSED] 0x56C2 (DG2) [17:18:24] [PASSED] 0x56C1 (DG2) [17:18:24] [PASSED] 0x7D51 (METEORLAKE) [17:18:24] [PASSED] 0x7DD1 (METEORLAKE) [17:18:24] [PASSED] 0x7D41 (METEORLAKE) [17:18:24] [PASSED] 0x7D67 (METEORLAKE) [17:18:24] [PASSED] 0xB640 (METEORLAKE) [17:18:24] [PASSED] 0x56A0 (DG2) [17:18:24] [PASSED] 0x56A1 (DG2) [17:18:24] [PASSED] 0x56A2 (DG2) [17:18:24] [PASSED] 0x56BE (DG2) [17:18:24] [PASSED] 0x56BF (DG2) [17:18:24] [PASSED] 0x5690 (DG2) [17:18:24] [PASSED] 0x5691 (DG2) [17:18:24] [PASSED] 0x5692 (DG2) [17:18:24] [PASSED] 0x56A5 (DG2) [17:18:24] [PASSED] 0x56A6 (DG2) [17:18:24] [PASSED] 0x56B0 (DG2) [17:18:24] [PASSED] 0x56B1 (DG2) [17:18:24] [PASSED] 0x56BA (DG2) [17:18:24] [PASSED] 0x56BB (DG2) [17:18:24] [PASSED] 0x56BC (DG2) [17:18:24] [PASSED] 0x56BD (DG2) [17:18:24] [PASSED] 0x5693 (DG2) [17:18:24] [PASSED] 0x5694 (DG2) [17:18:24] [PASSED] 0x5695 (DG2) [17:18:24] [PASSED] 0x56A3 (DG2) [17:18:24] [PASSED] 0x56A4 (DG2) [17:18:24] [PASSED] 0x56B2 (DG2) [17:18:24] [PASSED] 0x56B3 (DG2) [17:18:24] [PASSED] 0x5696 (DG2) [17:18:24] [PASSED] 0x5697 (DG2) [17:18:24] [PASSED] 0xB69 (PVC) [17:18:24] [PASSED] 0xB6E (PVC) [17:18:24] [PASSED] 0xBD4 (PVC) [17:18:24] [PASSED] 0xBD5 (PVC) [17:18:24] [PASSED] 0xBD6 (PVC) [17:18:24] [PASSED] 0xBD7 (PVC) [17:18:24] [PASSED] 0xBD8 (PVC) [17:18:24] [PASSED] 0xBD9 (PVC) [17:18:24] [PASSED] 0xBDA (PVC) [17:18:24] [PASSED] 0xBDB (PVC) [17:18:24] [PASSED] 0xBE0 (PVC) [17:18:24] [PASSED] 0xBE1 (PVC) [17:18:24] [PASSED] 0xBE5 (PVC) [17:18:24] [PASSED] 0x7D40 (METEORLAKE) [17:18:24] [PASSED] 0x7D45 (METEORLAKE) [17:18:24] [PASSED] 0x7D55 (METEORLAKE) [17:18:24] [PASSED] 0x7D60 (METEORLAKE) [17:18:24] [PASSED] 0x7DD5 (METEORLAKE) [17:18:24] [PASSED] 0x6420 (LUNARLAKE) [17:18:24] [PASSED] 0x64A0 (LUNARLAKE) [17:18:24] [PASSED] 0x64B0 (LUNARLAKE) [17:18:24] [PASSED] 0xE202 (BATTLEMAGE) [17:18:24] [PASSED] 0xE209 (BATTLEMAGE) [17:18:24] [PASSED] 0xE20B (BATTLEMAGE) [17:18:24] [PASSED] 0xE20C (BATTLEMAGE) [17:18:24] [PASSED] 0xE20D (BATTLEMAGE) [17:18:24] [PASSED] 0xE210 (BATTLEMAGE) [17:18:24] [PASSED] 0xE211 (BATTLEMAGE) [17:18:24] [PASSED] 0xE212 (BATTLEMAGE) [17:18:24] [PASSED] 0xE216 (BATTLEMAGE) [17:18:24] [PASSED] 0xE220 (BATTLEMAGE) [17:18:24] [PASSED] 0xE221 (BATTLEMAGE) [17:18:24] [PASSED] 0xE222 (BATTLEMAGE) [17:18:24] [PASSED] 0xE223 (BATTLEMAGE) [17:18:24] [PASSED] 0xB080 (PANTHERLAKE) [17:18:24] [PASSED] 0xB081 (PANTHERLAKE) [17:18:24] [PASSED] 0xB082 (PANTHERLAKE) [17:18:24] [PASSED] 0xB083 (PANTHERLAKE) [17:18:24] [PASSED] 0xB084 (PANTHERLAKE) [17:18:24] [PASSED] 0xB085 (PANTHERLAKE) [17:18:24] [PASSED] 0xB086 (PANTHERLAKE) [17:18:24] [PASSED] 0xB087 (PANTHERLAKE) [17:18:24] [PASSED] 0xB08F (PANTHERLAKE) [17:18:24] [PASSED] 0xB090 (PANTHERLAKE) [17:18:24] [PASSED] 0xB0A0 (PANTHERLAKE) [17:18:24] [PASSED] 0xB0B0 (PANTHERLAKE) [17:18:24] [PASSED] 0xFD80 (PANTHERLAKE) [17:18:24] [PASSED] 0xFD81 (PANTHERLAKE) [17:18:24] [PASSED] 0xD740 (NOVALAKE_S) [17:18:24] [PASSED] 0xD741 (NOVALAKE_S) [17:18:24] [PASSED] 0xD742 (NOVALAKE_S) [17:18:24] [PASSED] 0xD743 (NOVALAKE_S) [17:18:24] [PASSED] 0xD744 (NOVALAKE_S) [17:18:24] [PASSED] 0xD745 (NOVALAKE_S) [17:18:24] [PASSED] 0x674C (CRESCENTISLAND) [17:18:24] [PASSED] 0xD750 (NOVALAKE_P) [17:18:24] [PASSED] 0xD751 (NOVALAKE_P) [17:18:24] [PASSED] 0xD752 (NOVALAKE_P) [17:18:24] [PASSED] 0xD753 (NOVALAKE_P) [17:18:24] [PASSED] 0xD754 (NOVALAKE_P) [17:18:24] [PASSED] 0xD755 (NOVALAKE_P) [17:18:24] [PASSED] 0xD756 (NOVALAKE_P) [17:18:24] [PASSED] 0xD757 (NOVALAKE_P) [17:18:24] [PASSED] 0xD75F (NOVALAKE_P) [17:18:24] =============== [PASSED] check_platform_desc =============== [17:18:24] ===================== [PASSED] xe_pci ====================== [17:18:24] =================== xe_rtp (2 subtests) ==================== [17:18:24] =============== xe_rtp_process_to_sr_tests ================ [17:18:24] [PASSED] coalesce-same-reg [17:18:24] [PASSED] no-match-no-add [17:18:24] [PASSED] match-or [17:18:24] [PASSED] match-or-xfail [17:18:24] [PASSED] no-match-no-add-multiple-rules [17:18:24] [PASSED] two-regs-two-entries [17:18:24] [PASSED] clr-one-set-other [17:18:24] [PASSED] set-field [17:18:24] [PASSED] conflict-duplicate stty: 'standard input': Inappropriate ioctl for device [17:18:24] [PASSED] conflict-not-disjoint [17:18:24] [PASSED] conflict-reg-type [17:18:24] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [17:18:24] ================== xe_rtp_process_tests =================== [17:18:24] [PASSED] active1 [17:18:24] [PASSED] active2 [17:18:24] [PASSED] active-inactive [17:18:24] [PASSED] inactive-active [17:18:24] [PASSED] inactive-1st_or_active-inactive [17:18:24] [PASSED] inactive-2nd_or_active-inactive [17:18:24] [PASSED] inactive-last_or_active-inactive [17:18:24] [PASSED] inactive-no_or_active-inactive [17:18:24] ============== [PASSED] xe_rtp_process_tests =============== [17:18:24] ===================== [PASSED] xe_rtp ====================== [17:18:24] ==================== xe_wa (1 subtest) ===================== [17:18:24] ======================== xe_wa_gt ========================= [17:18:24] [PASSED] TIGERLAKE B0 [17:18:24] [PASSED] DG1 A0 [17:18:24] [PASSED] DG1 B0 [17:18:24] [PASSED] ALDERLAKE_S A0 [17:18:24] [PASSED] ALDERLAKE_S B0 [17:18:24] [PASSED] ALDERLAKE_S C0 [17:18:24] [PASSED] ALDERLAKE_S D0 [17:18:24] [PASSED] ALDERLAKE_P A0 [17:18:24] [PASSED] ALDERLAKE_P B0 [17:18:24] [PASSED] ALDERLAKE_P C0 [17:18:24] [PASSED] ALDERLAKE_S RPLS D0 [17:18:24] [PASSED] ALDERLAKE_P RPLU E0 [17:18:24] [PASSED] DG2 G10 C0 [17:18:24] [PASSED] DG2 G11 B1 [17:18:24] [PASSED] DG2 G12 A1 [17:18:24] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [17:18:24] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [17:18:24] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [17:18:24] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [17:18:24] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [17:18:24] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [17:18:24] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [17:18:24] ==================== [PASSED] xe_wa_gt ===================== [17:18:24] ====================== [PASSED] xe_wa ====================== [17:18:24] ============================================================ [17:18:24] Testing complete. Ran 597 tests: passed: 579, skipped: 18 [17:18:24] Elapsed time: 36.255s total, 4.325s configuring, 31.313s building, 0.586s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [17:18:24] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [17:18:26] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [17:18:50] Starting KUnit Kernel (1/1)... [17:18:50] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [17:18:50] ============ drm_test_pick_cmdline (2 subtests) ============ [17:18:50] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [17:18:50] =============== drm_test_pick_cmdline_named =============== [17:18:50] [PASSED] NTSC [17:18:50] [PASSED] NTSC-J [17:18:50] [PASSED] PAL [17:18:50] [PASSED] PAL-M [17:18:50] =========== [PASSED] drm_test_pick_cmdline_named =========== [17:18:50] ============== [PASSED] drm_test_pick_cmdline ============== [17:18:50] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [17:18:50] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [17:18:50] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [17:18:50] =========== drm_validate_clone_mode (2 subtests) =========== [17:18:50] ============== drm_test_check_in_clone_mode =============== [17:18:50] [PASSED] in_clone_mode [17:18:50] [PASSED] not_in_clone_mode [17:18:50] ========== [PASSED] drm_test_check_in_clone_mode =========== [17:18:50] =============== drm_test_check_valid_clones =============== [17:18:50] [PASSED] not_in_clone_mode [17:18:50] [PASSED] valid_clone [17:18:50] [PASSED] invalid_clone [17:18:50] =========== [PASSED] drm_test_check_valid_clones =========== [17:18:50] ============= [PASSED] drm_validate_clone_mode ============= [17:18:50] ============= drm_validate_modeset (1 subtest) ============= [17:18:50] [PASSED] drm_test_check_connector_changed_modeset [17:18:50] ============== [PASSED] drm_validate_modeset =============== [17:18:50] ====== drm_test_bridge_get_current_state (2 subtests) ====== [17:18:50] [PASSED] drm_test_drm_bridge_get_current_state_atomic [17:18:50] [PASSED] drm_test_drm_bridge_get_current_state_legacy [17:18:50] ======== [PASSED] drm_test_bridge_get_current_state ======== [17:18:50] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [17:18:50] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [17:18:50] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [17:18:50] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [17:18:50] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [17:18:50] ============== drm_bridge_alloc (2 subtests) =============== [17:18:50] [PASSED] drm_test_drm_bridge_alloc_basic [17:18:50] [PASSED] drm_test_drm_bridge_alloc_get_put [17:18:50] ================ [PASSED] drm_bridge_alloc ================= [17:18:50] ============= drm_cmdline_parser (40 subtests) ============= [17:18:50] [PASSED] drm_test_cmdline_force_d_only [17:18:50] [PASSED] drm_test_cmdline_force_D_only_dvi [17:18:50] [PASSED] drm_test_cmdline_force_D_only_hdmi [17:18:50] [PASSED] drm_test_cmdline_force_D_only_not_digital [17:18:50] [PASSED] drm_test_cmdline_force_e_only [17:18:50] [PASSED] drm_test_cmdline_res [17:18:50] [PASSED] drm_test_cmdline_res_vesa [17:18:50] [PASSED] drm_test_cmdline_res_vesa_rblank [17:18:50] [PASSED] drm_test_cmdline_res_rblank [17:18:50] [PASSED] drm_test_cmdline_res_bpp [17:18:50] [PASSED] drm_test_cmdline_res_refresh [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [17:18:50] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [17:18:50] [PASSED] drm_test_cmdline_res_margins_force_on [17:18:50] [PASSED] drm_test_cmdline_res_vesa_margins [17:18:50] [PASSED] drm_test_cmdline_name [17:18:50] [PASSED] drm_test_cmdline_name_bpp [17:18:50] [PASSED] drm_test_cmdline_name_option [17:18:50] [PASSED] drm_test_cmdline_name_bpp_option [17:18:50] [PASSED] drm_test_cmdline_rotate_0 [17:18:50] [PASSED] drm_test_cmdline_rotate_90 [17:18:50] [PASSED] drm_test_cmdline_rotate_180 [17:18:50] [PASSED] drm_test_cmdline_rotate_270 [17:18:50] [PASSED] drm_test_cmdline_hmirror [17:18:50] [PASSED] drm_test_cmdline_vmirror [17:18:50] [PASSED] drm_test_cmdline_margin_options [17:18:50] [PASSED] drm_test_cmdline_multiple_options [17:18:50] [PASSED] drm_test_cmdline_bpp_extra_and_option [17:18:50] [PASSED] drm_test_cmdline_extra_and_option [17:18:50] [PASSED] drm_test_cmdline_freestanding_options [17:18:50] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [17:18:50] [PASSED] drm_test_cmdline_panel_orientation [17:18:50] ================ drm_test_cmdline_invalid ================= [17:18:50] [PASSED] margin_only [17:18:50] [PASSED] interlace_only [17:18:50] [PASSED] res_missing_x [17:18:50] [PASSED] res_missing_y [17:18:50] [PASSED] res_bad_y [17:18:50] [PASSED] res_missing_y_bpp [17:18:50] [PASSED] res_bad_bpp [17:18:50] [PASSED] res_bad_refresh [17:18:50] [PASSED] res_bpp_refresh_force_on_off [17:18:50] [PASSED] res_invalid_mode [17:18:50] [PASSED] res_bpp_wrong_place_mode [17:18:50] [PASSED] name_bpp_refresh [17:18:50] [PASSED] name_refresh [17:18:50] [PASSED] name_refresh_wrong_mode [17:18:50] [PASSED] name_refresh_invalid_mode [17:18:50] [PASSED] rotate_multiple [17:18:50] [PASSED] rotate_invalid_val [17:18:50] [PASSED] rotate_truncated [17:18:50] [PASSED] invalid_option [17:18:50] [PASSED] invalid_tv_option [17:18:50] [PASSED] truncated_tv_option [17:18:50] ============ [PASSED] drm_test_cmdline_invalid ============= [17:18:50] =============== drm_test_cmdline_tv_options =============== [17:18:50] [PASSED] NTSC [17:18:50] [PASSED] NTSC_443 [17:18:50] [PASSED] NTSC_J [17:18:50] [PASSED] PAL [17:18:50] [PASSED] PAL_M [17:18:50] [PASSED] PAL_N [17:18:50] [PASSED] SECAM [17:18:50] [PASSED] MONO_525 [17:18:50] [PASSED] MONO_625 [17:18:50] =========== [PASSED] drm_test_cmdline_tv_options =========== [17:18:50] =============== [PASSED] drm_cmdline_parser ================ [17:18:50] ========== drmm_connector_hdmi_init (20 subtests) ========== [17:18:50] [PASSED] drm_test_connector_hdmi_init_valid [17:18:50] [PASSED] drm_test_connector_hdmi_init_bpc_8 [17:18:50] [PASSED] drm_test_connector_hdmi_init_bpc_10 [17:18:50] [PASSED] drm_test_connector_hdmi_init_bpc_12 [17:18:50] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [17:18:50] [PASSED] drm_test_connector_hdmi_init_bpc_null [17:18:50] [PASSED] drm_test_connector_hdmi_init_formats_empty [17:18:50] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [17:18:50] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [17:18:50] [PASSED] supported_formats=0x9 yuv420_allowed=1 [17:18:50] [PASSED] supported_formats=0x9 yuv420_allowed=0 [17:18:50] [PASSED] supported_formats=0x5 yuv420_allowed=1 [17:18:50] [PASSED] supported_formats=0x5 yuv420_allowed=0 [17:18:50] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [17:18:50] [PASSED] drm_test_connector_hdmi_init_null_ddc [17:18:50] [PASSED] drm_test_connector_hdmi_init_null_product [17:18:50] [PASSED] drm_test_connector_hdmi_init_null_vendor [17:18:50] [PASSED] drm_test_connector_hdmi_init_product_length_exact [17:18:50] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [17:18:50] [PASSED] drm_test_connector_hdmi_init_product_valid [17:18:50] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [17:18:50] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [17:18:50] [PASSED] drm_test_connector_hdmi_init_vendor_valid [17:18:50] ========= drm_test_connector_hdmi_init_type_valid ========= [17:18:50] [PASSED] HDMI-A [17:18:50] [PASSED] HDMI-B [17:18:50] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [17:18:50] ======== drm_test_connector_hdmi_init_type_invalid ======== [17:18:50] [PASSED] Unknown [17:18:50] [PASSED] VGA [17:18:50] [PASSED] DVI-I [17:18:50] [PASSED] DVI-D [17:18:50] [PASSED] DVI-A [17:18:50] [PASSED] Composite [17:18:50] [PASSED] SVIDEO [17:18:50] [PASSED] LVDS [17:18:50] [PASSED] Component [17:18:50] [PASSED] DIN [17:18:50] [PASSED] DP [17:18:50] [PASSED] TV [17:18:50] [PASSED] eDP [17:18:50] [PASSED] Virtual [17:18:50] [PASSED] DSI [17:18:50] [PASSED] DPI [17:18:50] [PASSED] Writeback [17:18:50] [PASSED] SPI [17:18:50] [PASSED] USB [17:18:50] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [17:18:50] ============ [PASSED] drmm_connector_hdmi_init ============= [17:18:50] ============= drmm_connector_init (3 subtests) ============= [17:18:50] [PASSED] drm_test_drmm_connector_init [17:18:50] [PASSED] drm_test_drmm_connector_init_null_ddc [17:18:50] ========= drm_test_drmm_connector_init_type_valid ========= [17:18:50] [PASSED] Unknown [17:18:50] [PASSED] VGA [17:18:50] [PASSED] DVI-I [17:18:50] [PASSED] DVI-D [17:18:50] [PASSED] DVI-A [17:18:50] [PASSED] Composite [17:18:50] [PASSED] SVIDEO [17:18:50] [PASSED] LVDS [17:18:50] [PASSED] Component [17:18:50] [PASSED] DIN [17:18:50] [PASSED] DP [17:18:50] [PASSED] HDMI-A [17:18:50] [PASSED] HDMI-B [17:18:50] [PASSED] TV [17:18:50] [PASSED] eDP [17:18:50] [PASSED] Virtual [17:18:50] [PASSED] DSI [17:18:50] [PASSED] DPI [17:18:50] [PASSED] Writeback [17:18:50] [PASSED] SPI [17:18:50] [PASSED] USB [17:18:50] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [17:18:50] =============== [PASSED] drmm_connector_init =============== [17:18:50] ========= drm_connector_dynamic_init (6 subtests) ========== [17:18:50] [PASSED] drm_test_drm_connector_dynamic_init [17:18:50] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [17:18:50] [PASSED] drm_test_drm_connector_dynamic_init_not_added [17:18:50] [PASSED] drm_test_drm_connector_dynamic_init_properties [17:18:50] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [17:18:50] [PASSED] Unknown [17:18:50] [PASSED] VGA [17:18:50] [PASSED] DVI-I [17:18:50] [PASSED] DVI-D [17:18:50] [PASSED] DVI-A [17:18:50] [PASSED] Composite [17:18:50] [PASSED] SVIDEO [17:18:50] [PASSED] LVDS [17:18:50] [PASSED] Component [17:18:50] [PASSED] DIN [17:18:50] [PASSED] DP [17:18:50] [PASSED] HDMI-A [17:18:50] [PASSED] HDMI-B [17:18:50] [PASSED] TV [17:18:50] [PASSED] eDP [17:18:50] [PASSED] Virtual [17:18:50] [PASSED] DSI [17:18:50] [PASSED] DPI [17:18:50] [PASSED] Writeback [17:18:50] [PASSED] SPI [17:18:50] [PASSED] USB [17:18:50] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [17:18:50] ======== drm_test_drm_connector_dynamic_init_name ========= [17:18:50] [PASSED] Unknown [17:18:50] [PASSED] VGA [17:18:50] [PASSED] DVI-I [17:18:50] [PASSED] DVI-D [17:18:50] [PASSED] DVI-A [17:18:50] [PASSED] Composite [17:18:50] [PASSED] SVIDEO [17:18:50] [PASSED] LVDS [17:18:50] [PASSED] Component [17:18:50] [PASSED] DIN [17:18:50] [PASSED] DP [17:18:50] [PASSED] HDMI-A [17:18:50] [PASSED] HDMI-B [17:18:50] [PASSED] TV [17:18:50] [PASSED] eDP [17:18:50] [PASSED] Virtual [17:18:50] [PASSED] DSI [17:18:50] [PASSED] DPI [17:18:50] [PASSED] Writeback [17:18:50] [PASSED] SPI [17:18:50] [PASSED] USB [17:18:50] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [17:18:50] =========== [PASSED] drm_connector_dynamic_init ============ [17:18:50] ==== drm_connector_dynamic_register_early (4 subtests) ===== [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [17:18:50] ====== [PASSED] drm_connector_dynamic_register_early ======= [17:18:50] ======= drm_connector_dynamic_register (7 subtests) ======== [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_on_list [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_no_init [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [17:18:50] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [17:18:50] ========= [PASSED] drm_connector_dynamic_register ========== [17:18:50] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [17:18:50] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [17:18:50] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [17:18:50] === [PASSED] drm_connector_attach_broadcast_rgb_property === [17:18:50] ========== drm_get_tv_mode_from_name (2 subtests) ========== [17:18:50] ========== drm_test_get_tv_mode_from_name_valid =========== [17:18:50] [PASSED] NTSC [17:18:50] [PASSED] NTSC-443 [17:18:50] [PASSED] NTSC-J [17:18:50] [PASSED] PAL [17:18:50] [PASSED] PAL-M [17:18:50] [PASSED] PAL-N [17:18:50] [PASSED] SECAM [17:18:50] [PASSED] Mono [17:18:50] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [17:18:50] [PASSED] drm_test_get_tv_mode_from_name_truncated [17:18:50] ============ [PASSED] drm_get_tv_mode_from_name ============ [17:18:50] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [17:18:50] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [17:18:50] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [17:18:50] [PASSED] VIC 96 [17:18:50] [PASSED] VIC 97 [17:18:50] [PASSED] VIC 101 [17:18:50] [PASSED] VIC 102 [17:18:50] [PASSED] VIC 106 [17:18:50] [PASSED] VIC 107 [17:18:50] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [17:18:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [17:18:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [17:18:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [17:18:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [17:18:50] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [17:18:50] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [17:18:50] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [17:18:50] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [17:18:50] [PASSED] Automatic [17:18:50] [PASSED] Full [17:18:50] [PASSED] Limited 16:235 [17:18:50] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [17:18:50] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [17:18:50] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [17:18:50] == drm_hdmi_connector_get_output_format_name (2 subtests) == [17:18:50] === drm_test_drm_hdmi_connector_get_output_format_name ==== [17:18:50] [PASSED] RGB [17:18:50] [PASSED] YUV 4:2:0 [17:18:50] [PASSED] YUV 4:2:2 [17:18:50] [PASSED] YUV 4:4:4 [17:18:50] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [17:18:50] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [17:18:50] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [17:18:50] ============= drm_damage_helper (21 subtests) ============== [17:18:50] [PASSED] drm_test_damage_iter_no_damage [17:18:50] [PASSED] drm_test_damage_iter_no_damage_fractional_src [17:18:50] [PASSED] drm_test_damage_iter_no_damage_src_moved [17:18:50] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [17:18:50] [PASSED] drm_test_damage_iter_no_damage_not_visible [17:18:50] [PASSED] drm_test_damage_iter_no_damage_no_crtc [17:18:50] [PASSED] drm_test_damage_iter_no_damage_no_fb [17:18:50] [PASSED] drm_test_damage_iter_simple_damage [17:18:50] [PASSED] drm_test_damage_iter_single_damage [17:18:50] [PASSED] drm_test_damage_iter_single_damage_intersect_src [17:18:50] [PASSED] drm_test_damage_iter_single_damage_outside_src [17:18:50] [PASSED] drm_test_damage_iter_single_damage_fractional_src [17:18:50] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [17:18:50] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [17:18:50] [PASSED] drm_test_damage_iter_single_damage_src_moved [17:18:50] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [17:18:50] [PASSED] drm_test_damage_iter_damage [17:18:50] [PASSED] drm_test_damage_iter_damage_one_intersect [17:18:50] [PASSED] drm_test_damage_iter_damage_one_outside [17:18:50] [PASSED] drm_test_damage_iter_damage_src_moved [17:18:50] [PASSED] drm_test_damage_iter_damage_not_visible [17:18:50] ================ [PASSED] drm_damage_helper ================ [17:18:50] ============== drm_dp_mst_helper (3 subtests) ============== [17:18:50] ============== drm_test_dp_mst_calc_pbn_mode ============== [17:18:50] [PASSED] Clock 154000 BPP 30 DSC disabled [17:18:50] [PASSED] Clock 234000 BPP 30 DSC disabled [17:18:50] [PASSED] Clock 297000 BPP 24 DSC disabled [17:18:50] [PASSED] Clock 332880 BPP 24 DSC enabled [17:18:50] [PASSED] Clock 324540 BPP 24 DSC enabled [17:18:50] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [17:18:50] ============== drm_test_dp_mst_calc_pbn_div =============== [17:18:50] [PASSED] Link rate 2000000 lane count 4 [17:18:50] [PASSED] Link rate 2000000 lane count 2 [17:18:50] [PASSED] Link rate 2000000 lane count 1 [17:18:50] [PASSED] Link rate 1350000 lane count 4 [17:18:50] [PASSED] Link rate 1350000 lane count 2 [17:18:50] [PASSED] Link rate 1350000 lane count 1 [17:18:50] [PASSED] Link rate 1000000 lane count 4 [17:18:50] [PASSED] Link rate 1000000 lane count 2 [17:18:50] [PASSED] Link rate 1000000 lane count 1 [17:18:50] [PASSED] Link rate 810000 lane count 4 [17:18:50] [PASSED] Link rate 810000 lane count 2 [17:18:50] [PASSED] Link rate 810000 lane count 1 [17:18:50] [PASSED] Link rate 540000 lane count 4 [17:18:50] [PASSED] Link rate 540000 lane count 2 [17:18:50] [PASSED] Link rate 540000 lane count 1 [17:18:50] [PASSED] Link rate 270000 lane count 4 [17:18:50] [PASSED] Link rate 270000 lane count 2 [17:18:50] [PASSED] Link rate 270000 lane count 1 [17:18:50] [PASSED] Link rate 162000 lane count 4 [17:18:50] [PASSED] Link rate 162000 lane count 2 [17:18:50] [PASSED] Link rate 162000 lane count 1 [17:18:50] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [17:18:50] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [17:18:50] [PASSED] DP_ENUM_PATH_RESOURCES with port number [17:18:50] [PASSED] DP_POWER_UP_PHY with port number [17:18:50] [PASSED] DP_POWER_DOWN_PHY with port number [17:18:50] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [17:18:50] [PASSED] DP_ALLOCATE_PAYLOAD with port number [17:18:50] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [17:18:50] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [17:18:50] [PASSED] DP_QUERY_PAYLOAD with port number [17:18:50] [PASSED] DP_QUERY_PAYLOAD with VCPI [17:18:50] [PASSED] DP_REMOTE_DPCD_READ with port number [17:18:50] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [17:18:50] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [17:18:50] [PASSED] DP_REMOTE_DPCD_WRITE with port number [17:18:50] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [17:18:50] [PASSED] DP_REMOTE_DPCD_WRITE with data array [17:18:50] [PASSED] DP_REMOTE_I2C_READ with port number [17:18:50] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [17:18:50] [PASSED] DP_REMOTE_I2C_READ with transactions array [17:18:50] [PASSED] DP_REMOTE_I2C_WRITE with port number [17:18:50] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [17:18:50] [PASSED] DP_REMOTE_I2C_WRITE with data array [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [17:18:50] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [17:18:50] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [17:18:50] ================ [PASSED] drm_dp_mst_helper ================ [17:18:50] ================== drm_exec (7 subtests) =================== [17:18:50] [PASSED] sanitycheck [17:18:50] [PASSED] test_lock [17:18:50] [PASSED] test_lock_unlock [17:18:50] [PASSED] test_duplicates [17:18:50] [PASSED] test_prepare [17:18:50] [PASSED] test_prepare_array [17:18:50] [PASSED] test_multiple_loops [17:18:50] ==================== [PASSED] drm_exec ===================== [17:18:50] =========== drm_format_helper_test (17 subtests) =========== [17:18:50] ============== drm_test_fb_xrgb8888_to_gray8 ============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [17:18:50] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [17:18:50] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [17:18:50] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [17:18:50] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [17:18:50] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [17:18:50] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [17:18:50] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [17:18:50] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [17:18:50] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [17:18:50] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [17:18:50] ============== drm_test_fb_xrgb8888_to_mono =============== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [17:18:50] ==================== drm_test_fb_swab ===================== [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ================ [PASSED] drm_test_fb_swab ================= [17:18:50] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [17:18:50] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [17:18:50] [PASSED] single_pixel_source_buffer [17:18:50] [PASSED] single_pixel_clip_rectangle [17:18:50] [PASSED] well_known_colors [17:18:50] [PASSED] destination_pitch [17:18:50] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [17:18:50] ================= drm_test_fb_clip_offset ================= [17:18:50] [PASSED] pass through [17:18:50] [PASSED] horizontal offset [17:18:50] [PASSED] vertical offset [17:18:50] [PASSED] horizontal and vertical offset [17:18:50] [PASSED] horizontal offset (custom pitch) [17:18:50] [PASSED] vertical offset (custom pitch) [17:18:50] [PASSED] horizontal and vertical offset (custom pitch) [17:18:50] ============= [PASSED] drm_test_fb_clip_offset ============= [17:18:50] =================== drm_test_fb_memcpy ==================== [17:18:50] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [17:18:50] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [17:18:50] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [17:18:50] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [17:18:50] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [17:18:50] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [17:18:50] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [17:18:50] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [17:18:50] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [17:18:50] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [17:18:50] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [17:18:50] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [17:18:50] =============== [PASSED] drm_test_fb_memcpy ================ [17:18:50] ============= [PASSED] drm_format_helper_test ============== [17:18:50] ================= drm_format (18 subtests) ================= [17:18:50] [PASSED] drm_test_format_block_width_invalid [17:18:50] [PASSED] drm_test_format_block_width_one_plane [17:18:50] [PASSED] drm_test_format_block_width_two_plane [17:18:50] [PASSED] drm_test_format_block_width_three_plane [17:18:50] [PASSED] drm_test_format_block_width_tiled [17:18:50] [PASSED] drm_test_format_block_height_invalid [17:18:50] [PASSED] drm_test_format_block_height_one_plane [17:18:50] [PASSED] drm_test_format_block_height_two_plane [17:18:50] [PASSED] drm_test_format_block_height_three_plane [17:18:50] [PASSED] drm_test_format_block_height_tiled [17:18:50] [PASSED] drm_test_format_min_pitch_invalid [17:18:50] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [17:18:50] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [17:18:50] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [17:18:50] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [17:18:50] [PASSED] drm_test_format_min_pitch_two_plane [17:18:50] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [17:18:50] [PASSED] drm_test_format_min_pitch_tiled [17:18:50] =================== [PASSED] drm_format ==================== [17:18:50] ============== drm_framebuffer (10 subtests) =============== [17:18:50] ========== drm_test_framebuffer_check_src_coords ========== [17:18:50] [PASSED] Success: source fits into fb [17:18:50] [PASSED] Fail: overflowing fb with x-axis coordinate [17:18:50] [PASSED] Fail: overflowing fb with y-axis coordinate [17:18:50] [PASSED] Fail: overflowing fb with source width [17:18:50] [PASSED] Fail: overflowing fb with source height [17:18:50] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [17:18:50] [PASSED] drm_test_framebuffer_cleanup [17:18:50] =============== drm_test_framebuffer_create =============== [17:18:50] [PASSED] ABGR8888 normal sizes [17:18:50] [PASSED] ABGR8888 max sizes [17:18:50] [PASSED] ABGR8888 pitch greater than min required [17:18:50] [PASSED] ABGR8888 pitch less than min required [17:18:50] [PASSED] ABGR8888 Invalid width [17:18:50] [PASSED] ABGR8888 Invalid buffer handle [17:18:50] [PASSED] No pixel format [17:18:50] [PASSED] ABGR8888 Width 0 [17:18:50] [PASSED] ABGR8888 Height 0 [17:18:50] [PASSED] ABGR8888 Out of bound height * pitch combination [17:18:50] [PASSED] ABGR8888 Large buffer offset [17:18:50] [PASSED] ABGR8888 Buffer offset for inexistent plane [17:18:50] [PASSED] ABGR8888 Invalid flag [17:18:50] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [17:18:50] [PASSED] ABGR8888 Valid buffer modifier [17:18:50] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [17:18:50] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] NV12 Normal sizes [17:18:50] [PASSED] NV12 Max sizes [17:18:50] [PASSED] NV12 Invalid pitch [17:18:50] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [17:18:50] [PASSED] NV12 different modifier per-plane [17:18:50] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [17:18:50] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] NV12 Modifier for inexistent plane [17:18:50] [PASSED] NV12 Handle for inexistent plane [17:18:50] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [17:18:50] [PASSED] YVU420 Normal sizes [17:18:50] [PASSED] YVU420 Max sizes [17:18:50] [PASSED] YVU420 Invalid pitch [17:18:50] [PASSED] YVU420 Different pitches [17:18:50] [PASSED] YVU420 Different buffer offsets/pitches [17:18:50] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [17:18:50] [PASSED] YVU420 Valid modifier [17:18:50] [PASSED] YVU420 Different modifiers per plane [17:18:50] [PASSED] YVU420 Modifier for inexistent plane [17:18:50] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [17:18:50] [PASSED] X0L2 Normal sizes [17:18:50] [PASSED] X0L2 Max sizes [17:18:50] [PASSED] X0L2 Invalid pitch [17:18:50] [PASSED] X0L2 Pitch greater than minimum required [17:18:50] [PASSED] X0L2 Handle for inexistent plane [17:18:50] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [17:18:50] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [17:18:50] [PASSED] X0L2 Valid modifier [17:18:50] [PASSED] X0L2 Modifier for inexistent plane [17:18:50] =========== [PASSED] drm_test_framebuffer_create =========== [17:18:50] [PASSED] drm_test_framebuffer_free [17:18:50] [PASSED] drm_test_framebuffer_init [17:18:50] [PASSED] drm_test_framebuffer_init_bad_format [17:18:50] [PASSED] drm_test_framebuffer_init_dev_mismatch [17:18:50] [PASSED] drm_test_framebuffer_lookup [17:18:50] [PASSED] drm_test_framebuffer_lookup_inexistent [17:18:50] [PASSED] drm_test_framebuffer_modifiers_not_supported [17:18:50] ================= [PASSED] drm_framebuffer ================= [17:18:50] ================ drm_gem_shmem (8 subtests) ================ [17:18:50] [PASSED] drm_gem_shmem_test_obj_create [17:18:50] [PASSED] drm_gem_shmem_test_obj_create_private [17:18:50] [PASSED] drm_gem_shmem_test_pin_pages [17:18:50] [PASSED] drm_gem_shmem_test_vmap [17:18:50] [PASSED] drm_gem_shmem_test_get_sg_table [17:18:50] [PASSED] drm_gem_shmem_test_get_pages_sgt [17:18:50] [PASSED] drm_gem_shmem_test_madvise [17:18:50] [PASSED] drm_gem_shmem_test_purge [17:18:50] ================== [PASSED] drm_gem_shmem ================== [17:18:50] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [17:18:50] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [17:18:50] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [17:18:50] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [17:18:50] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [17:18:50] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [17:18:50] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [17:18:50] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [17:18:50] [PASSED] Automatic [17:18:50] [PASSED] Full [17:18:50] [PASSED] Limited 16:235 [17:18:50] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [17:18:50] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [17:18:50] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [17:18:50] [PASSED] drm_test_check_disable_connector [17:18:50] [PASSED] drm_test_check_hdmi_funcs_reject_rate [17:18:50] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [17:18:50] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [17:18:50] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [17:18:50] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [17:18:50] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [17:18:50] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [17:18:50] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [17:18:50] [PASSED] drm_test_check_output_bpc_dvi [17:18:50] [PASSED] drm_test_check_output_bpc_format_vic_1 [17:18:50] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [17:18:50] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [17:18:50] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [17:18:50] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [17:18:50] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [17:18:50] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [17:18:50] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [17:18:50] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [17:18:50] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [17:18:50] [PASSED] drm_test_check_broadcast_rgb_value [17:18:50] [PASSED] drm_test_check_bpc_8_value [17:18:50] [PASSED] drm_test_check_bpc_10_value [17:18:50] [PASSED] drm_test_check_bpc_12_value [17:18:50] [PASSED] drm_test_check_format_value [17:18:50] [PASSED] drm_test_check_tmds_char_value [17:18:50] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [17:18:50] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [17:18:50] [PASSED] drm_test_check_mode_valid [17:18:50] [PASSED] drm_test_check_mode_valid_reject [17:18:50] [PASSED] drm_test_check_mode_valid_reject_rate [17:18:50] [PASSED] drm_test_check_mode_valid_reject_max_clock [17:18:50] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [17:18:50] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [17:18:50] [PASSED] drm_test_check_infoframes [17:18:50] [PASSED] drm_test_check_reject_avi_infoframe [17:18:50] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [17:18:50] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [17:18:50] [PASSED] drm_test_check_reject_audio_infoframe [17:18:50] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [17:18:50] ================= drm_managed (2 subtests) ================= [17:18:50] [PASSED] drm_test_managed_release_action [17:18:50] [PASSED] drm_test_managed_run_action [17:18:50] =================== [PASSED] drm_managed =================== [17:18:50] =================== drm_mm (6 subtests) ==================== [17:18:50] [PASSED] drm_test_mm_init [17:18:50] [PASSED] drm_test_mm_debug [17:18:50] [PASSED] drm_test_mm_align32 [17:18:50] [PASSED] drm_test_mm_align64 [17:18:50] [PASSED] drm_test_mm_lowest [17:18:50] [PASSED] drm_test_mm_highest [17:18:50] ===================== [PASSED] drm_mm ====================== [17:18:50] ============= drm_modes_analog_tv (5 subtests) ============= [17:18:50] [PASSED] drm_test_modes_analog_tv_mono_576i [17:18:50] [PASSED] drm_test_modes_analog_tv_ntsc_480i [17:18:50] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [17:18:50] [PASSED] drm_test_modes_analog_tv_pal_576i [17:18:50] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [17:18:50] =============== [PASSED] drm_modes_analog_tv =============== [17:18:50] ============== drm_plane_helper (2 subtests) =============== [17:18:50] =============== drm_test_check_plane_state ================ [17:18:50] [PASSED] clipping_simple [17:18:50] [PASSED] clipping_rotate_reflect [17:18:50] [PASSED] positioning_simple [17:18:50] [PASSED] upscaling [17:18:50] [PASSED] downscaling [17:18:50] [PASSED] rounding1 [17:18:50] [PASSED] rounding2 [17:18:50] [PASSED] rounding3 [17:18:50] [PASSED] rounding4 [17:18:50] =========== [PASSED] drm_test_check_plane_state ============ [17:18:50] =========== drm_test_check_invalid_plane_state ============ [17:18:50] [PASSED] positioning_invalid [17:18:50] [PASSED] upscaling_invalid [17:18:50] [PASSED] downscaling_invalid [17:18:50] ======= [PASSED] drm_test_check_invalid_plane_state ======== [17:18:50] ================ [PASSED] drm_plane_helper ================= [17:18:50] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [17:18:50] ====== drm_test_connector_helper_tv_get_modes_check ======= [17:18:50] [PASSED] None [17:18:50] [PASSED] PAL [17:18:50] [PASSED] NTSC [17:18:50] [PASSED] Both, NTSC Default [17:18:50] [PASSED] Both, PAL Default [17:18:50] [PASSED] Both, NTSC Default, with PAL on command-line [17:18:50] [PASSED] Both, PAL Default, with NTSC on command-line [17:18:50] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [17:18:50] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [17:18:50] ================== drm_rect (9 subtests) =================== [17:18:50] [PASSED] drm_test_rect_clip_scaled_div_by_zero [17:18:50] [PASSED] drm_test_rect_clip_scaled_not_clipped [17:18:50] [PASSED] drm_test_rect_clip_scaled_clipped [17:18:50] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [17:18:50] ================= drm_test_rect_intersect ================= [17:18:50] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [17:18:50] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [17:18:50] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [17:18:50] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [17:18:50] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [17:18:50] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [17:18:50] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [17:18:50] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [17:18:50] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [17:18:50] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [17:18:50] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [17:18:50] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [17:18:50] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [17:18:50] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [17:18:50] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [17:18:50] ============= [PASSED] drm_test_rect_intersect ============= [17:18:50] ================ drm_test_rect_calc_hscale ================ [17:18:50] [PASSED] normal use [17:18:50] [PASSED] out of max range [17:18:50] [PASSED] out of min range [17:18:50] [PASSED] zero dst [17:18:50] [PASSED] negative src [17:18:50] [PASSED] negative dst [17:18:50] ============ [PASSED] drm_test_rect_calc_hscale ============ [17:18:50] ================ drm_test_rect_calc_vscale ================ [17:18:50] [PASSED] normal use [17:18:50] [PASSED] out of max range [17:18:50] [PASSED] out of min range [17:18:50] [PASSED] zero dst [17:18:50] [PASSED] negative src [17:18:50] [PASSED] negative dst stty: 'standard input': Inappropriate ioctl for device [17:18:50] ============ [PASSED] drm_test_rect_calc_vscale ============ [17:18:50] ================== drm_test_rect_rotate =================== [17:18:50] [PASSED] reflect-x [17:18:50] [PASSED] reflect-y [17:18:50] [PASSED] rotate-0 [17:18:50] [PASSED] rotate-90 [17:18:50] [PASSED] rotate-180 [17:18:50] [PASSED] rotate-270 [17:18:50] ============== [PASSED] drm_test_rect_rotate =============== [17:18:50] ================ drm_test_rect_rotate_inv ================= [17:18:50] [PASSED] reflect-x [17:18:50] [PASSED] reflect-y [17:18:50] [PASSED] rotate-0 [17:18:50] [PASSED] rotate-90 [17:18:50] [PASSED] rotate-180 [17:18:50] [PASSED] rotate-270 [17:18:50] ============ [PASSED] drm_test_rect_rotate_inv ============= [17:18:50] ==================== [PASSED] drm_rect ===================== [17:18:50] ============ drm_sysfb_modeset_test (1 subtest) ============ [17:18:50] ============ drm_test_sysfb_build_fourcc_list ============= [17:18:50] [PASSED] no native formats [17:18:50] [PASSED] XRGB8888 as native format [17:18:50] [PASSED] remove duplicates [17:18:50] [PASSED] convert alpha formats [17:18:50] [PASSED] random formats [17:18:50] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [17:18:50] ============= [PASSED] drm_sysfb_modeset_test ============== [17:18:50] ================== drm_fixp (2 subtests) =================== [17:18:50] [PASSED] drm_test_int2fixp [17:18:50] [PASSED] drm_test_sm2fixp [17:18:50] ==================== [PASSED] drm_fixp ===================== [17:18:50] ============================================================ [17:18:50] Testing complete. Ran 621 tests: passed: 621 [17:18:50] Elapsed time: 26.330s total, 1.749s configuring, 24.414s building, 0.124s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [17:18:50] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [17:18:52] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [17:19:02] Starting KUnit Kernel (1/1)... [17:19:02] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [17:19:02] ================= ttm_device (5 subtests) ================== [17:19:02] [PASSED] ttm_device_init_basic [17:19:02] [PASSED] ttm_device_init_multiple [17:19:02] [PASSED] ttm_device_fini_basic [17:19:02] [PASSED] ttm_device_init_no_vma_man [17:19:02] ================== ttm_device_init_pools ================== [17:19:02] [PASSED] No DMA allocations, no DMA32 required [17:19:02] [PASSED] DMA allocations, DMA32 required [17:19:02] [PASSED] No DMA allocations, DMA32 required [17:19:02] [PASSED] DMA allocations, no DMA32 required [17:19:02] ============== [PASSED] ttm_device_init_pools ============== [17:19:02] =================== [PASSED] ttm_device ==================== [17:19:02] ================== ttm_pool (8 subtests) =================== [17:19:02] ================== ttm_pool_alloc_basic =================== [17:19:02] [PASSED] One page [17:19:02] [PASSED] More than one page [17:19:02] [PASSED] Above the allocation limit [17:19:02] [PASSED] One page, with coherent DMA mappings enabled [17:19:02] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [17:19:02] ============== [PASSED] ttm_pool_alloc_basic =============== [17:19:02] ============== ttm_pool_alloc_basic_dma_addr ============== [17:19:02] [PASSED] One page [17:19:02] [PASSED] More than one page [17:19:02] [PASSED] Above the allocation limit [17:19:02] [PASSED] One page, with coherent DMA mappings enabled [17:19:02] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [17:19:02] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [17:19:02] [PASSED] ttm_pool_alloc_order_caching_match [17:19:02] [PASSED] ttm_pool_alloc_caching_mismatch [17:19:02] [PASSED] ttm_pool_alloc_order_mismatch [17:19:02] [PASSED] ttm_pool_free_dma_alloc [17:19:02] [PASSED] ttm_pool_free_no_dma_alloc [17:19:02] [PASSED] ttm_pool_fini_basic [17:19:02] ==================== [PASSED] ttm_pool ===================== [17:19:02] ================ ttm_resource (8 subtests) ================= [17:19:02] ================= ttm_resource_init_basic ================= [17:19:02] [PASSED] Init resource in TTM_PL_SYSTEM [17:19:02] [PASSED] Init resource in TTM_PL_VRAM [17:19:02] [PASSED] Init resource in a private placement [17:19:02] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [17:19:02] ============= [PASSED] ttm_resource_init_basic ============= [17:19:02] [PASSED] ttm_resource_init_pinned [17:19:02] [PASSED] ttm_resource_fini_basic [17:19:02] [PASSED] ttm_resource_manager_init_basic [17:19:02] [PASSED] ttm_resource_manager_usage_basic [17:19:02] [PASSED] ttm_resource_manager_set_used_basic [17:19:02] [PASSED] ttm_sys_man_alloc_basic [17:19:02] [PASSED] ttm_sys_man_free_basic [17:19:02] ================== [PASSED] ttm_resource =================== [17:19:02] =================== ttm_tt (15 subtests) =================== [17:19:02] ==================== ttm_tt_init_basic ==================== [17:19:02] [PASSED] Page-aligned size [17:19:02] [PASSED] Extra pages requested [17:19:02] ================ [PASSED] ttm_tt_init_basic ================ [17:19:02] [PASSED] ttm_tt_init_misaligned [17:19:02] [PASSED] ttm_tt_fini_basic [17:19:02] [PASSED] ttm_tt_fini_sg [17:19:02] [PASSED] ttm_tt_fini_shmem [17:19:02] [PASSED] ttm_tt_create_basic [17:19:02] [PASSED] ttm_tt_create_invalid_bo_type [17:19:02] [PASSED] ttm_tt_create_ttm_exists [17:19:02] [PASSED] ttm_tt_create_failed [17:19:02] [PASSED] ttm_tt_destroy_basic [17:19:02] [PASSED] ttm_tt_populate_null_ttm [17:19:02] [PASSED] ttm_tt_populate_populated_ttm [17:19:02] [PASSED] ttm_tt_unpopulate_basic [17:19:02] [PASSED] ttm_tt_unpopulate_empty_ttm [17:19:02] [PASSED] ttm_tt_swapin_basic [17:19:02] ===================== [PASSED] ttm_tt ====================== [17:19:02] =================== ttm_bo (14 subtests) =================== [17:19:02] =========== ttm_bo_reserve_optimistic_no_ticket =========== [17:19:02] [PASSED] Cannot be interrupted and sleeps [17:19:02] [PASSED] Cannot be interrupted, locks straight away [17:19:02] [PASSED] Can be interrupted, sleeps [17:19:02] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [17:19:02] [PASSED] ttm_bo_reserve_locked_no_sleep [17:19:02] [PASSED] ttm_bo_reserve_no_wait_ticket [17:19:02] [PASSED] ttm_bo_reserve_double_resv [17:19:02] [PASSED] ttm_bo_reserve_interrupted [17:19:02] [PASSED] ttm_bo_reserve_deadlock [17:19:02] [PASSED] ttm_bo_unreserve_basic [17:19:02] [PASSED] ttm_bo_unreserve_pinned [17:19:02] [PASSED] ttm_bo_unreserve_bulk [17:19:02] [PASSED] ttm_bo_fini_basic [17:19:02] [PASSED] ttm_bo_fini_shared_resv [17:19:02] [PASSED] ttm_bo_pin_basic [17:19:02] [PASSED] ttm_bo_pin_unpin_resource [17:19:02] [PASSED] ttm_bo_multiple_pin_one_unpin [17:19:02] ===================== [PASSED] ttm_bo ====================== [17:19:02] ============== ttm_bo_validate (22 subtests) =============== [17:19:02] ============== ttm_bo_init_reserved_sys_man =============== [17:19:02] [PASSED] Buffer object for userspace [17:19:02] [PASSED] Kernel buffer object [17:19:02] [PASSED] Shared buffer object [17:19:02] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [17:19:02] ============== ttm_bo_init_reserved_mock_man ============== [17:19:02] [PASSED] Buffer object for userspace [17:19:02] [PASSED] Kernel buffer object [17:19:02] [PASSED] Shared buffer object [17:19:02] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [17:19:02] [PASSED] ttm_bo_init_reserved_resv [17:19:02] ================== ttm_bo_validate_basic ================== [17:19:02] [PASSED] Buffer object for userspace [17:19:02] [PASSED] Kernel buffer object [17:19:02] [PASSED] Shared buffer object [17:19:02] ============== [PASSED] ttm_bo_validate_basic ============== [17:19:02] [PASSED] ttm_bo_validate_invalid_placement [17:19:02] ============= ttm_bo_validate_same_placement ============== [17:19:02] [PASSED] System manager [17:19:02] [PASSED] VRAM manager [17:19:02] ========= [PASSED] ttm_bo_validate_same_placement ========== [17:19:02] [PASSED] ttm_bo_validate_failed_alloc [17:19:02] [PASSED] ttm_bo_validate_pinned [17:19:02] [PASSED] ttm_bo_validate_busy_placement [17:19:02] ================ ttm_bo_validate_multihop ================= [17:19:02] [PASSED] Buffer object for userspace [17:19:02] [PASSED] Kernel buffer object [17:19:02] [PASSED] Shared buffer object [17:19:02] ============ [PASSED] ttm_bo_validate_multihop ============= [17:19:02] ========== ttm_bo_validate_no_placement_signaled ========== [17:19:02] [PASSED] Buffer object in system domain, no page vector [17:19:02] [PASSED] Buffer object in system domain with an existing page vector [17:19:02] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [17:19:02] ======== ttm_bo_validate_no_placement_not_signaled ======== [17:19:02] [PASSED] Buffer object for userspace [17:19:02] [PASSED] Kernel buffer object [17:19:02] [PASSED] Shared buffer object [17:19:02] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [17:19:02] [PASSED] ttm_bo_validate_move_fence_signaled [17:19:02] ========= ttm_bo_validate_move_fence_not_signaled ========= [17:19:02] [PASSED] Waits for GPU [17:19:02] [PASSED] Tries to lock straight away [17:19:02] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [17:19:02] [PASSED] ttm_bo_validate_swapout [17:19:02] [PASSED] ttm_bo_validate_happy_evict [17:19:02] [PASSED] ttm_bo_validate_all_pinned_evict [17:19:02] [PASSED] ttm_bo_validate_allowed_only_evict [17:19:02] [PASSED] ttm_bo_validate_deleted_evict [17:19:02] [PASSED] ttm_bo_validate_busy_domain_evict [17:19:02] [PASSED] ttm_bo_validate_evict_gutting [17:19:02] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [17:19:02] ================= [PASSED] ttm_bo_validate ================= [17:19:02] ============================================================ [17:19:02] Testing complete. Ran 102 tests: passed: 102 [17:19:02] Elapsed time: 11.434s total, 1.645s configuring, 9.573s building, 0.184s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✓ Xe.CI.BAT: success for series starting with [1/2] drm/i915: Track fence region ID in plane state 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala 2026-03-31 16:21 ` [PATCH 2/2] drm/i915: Remove the vma parent interface Ville Syrjala 2026-03-31 17:19 ` ✓ CI.KUnit: success for series starting with [1/2] drm/i915: Track fence region ID in plane state Patchwork @ 2026-03-31 18:19 ` Patchwork 2026-04-01 0:28 ` ✗ Xe.CI.FULL: failure " Patchwork ` (2 subsequent siblings) 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2026-03-31 18:19 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 2592 bytes --] == Series Details == Series: series starting with [1/2] drm/i915: Track fence region ID in plane state URL : https://patchwork.freedesktop.org/series/164181/ State : success == Summary == CI Bug Log - changes from xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c_BAT -> xe-pw-164181v1_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (13 -> 13) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in xe-pw-164181v1_BAT that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1: - bat-adlp-7: [PASS][1] -> [DMESG-WARN][2] ([Intel XE#7483]) [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html #### Possible fixes #### * igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1: - bat-adlp-7: [DMESG-WARN][3] ([Intel XE#7483]) -> [PASS][4] [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html #### Warnings #### * igt@core_hotunplug@unbind-rebind: - bat-bmg-2: [DMESG-WARN][5] ([Intel XE#7433]) -> [ABORT][6] ([Intel XE#7249] / [Intel XE#7578]) [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html [Intel XE#7249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7249 [Intel XE#7433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7433 [Intel XE#7483]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7483 [Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578 Build changes ------------- * Linux: xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c -> xe-pw-164181v1 IGT_8839: 8839 xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c: 779129c7868f4c7205901d6e57b25de52b411d1c xe-pw-164181v1: 164181v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/index.html [-- Attachment #2: Type: text/html, Size: 3263 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✗ Xe.CI.FULL: failure for series starting with [1/2] drm/i915: Track fence region ID in plane state 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala ` (2 preceding siblings ...) 2026-03-31 18:19 ` ✓ Xe.CI.BAT: " Patchwork @ 2026-04-01 0:28 ` Patchwork 2026-04-01 13:10 ` [PATCH 1/2] " Jani Nikula 2026-04-02 14:54 ` Jani Nikula 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2026-04-01 0:28 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 2530 bytes --] == Series Details == Series: series starting with [1/2] drm/i915: Track fence region ID in plane state URL : https://patchwork.freedesktop.org/series/164181/ State : failure == Summary == CI Bug Log - changes from xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c_FULL -> xe-pw-164181v1_FULL ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with xe-pw-164181v1_FULL absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in xe-pw-164181v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them to document this new failure mode, which will reduce false positives in CI. Participating hosts (2 -> 2) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in xe-pw-164181v1_FULL: ### IGT changes ### #### Possible regressions #### * igt@xe_fault_injection@inject-fault-probe-function-xe_guc_ct_init: - shard-lnl: [PASS][1] -> [ABORT][2] [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c/shard-lnl-2/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_ct_init.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/shard-lnl-4/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_ct_init.html Known issues ------------ Here are the changes found in xe-pw-164181v1_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1: - shard-lnl: [PASS][3] -> [FAIL][4] ([Intel XE#301]) +1 other test fail [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 Build changes ------------- * Linux: xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c -> xe-pw-164181v1 IGT_8839: 8839 xe-4827-779129c7868f4c7205901d6e57b25de52b411d1c: 779129c7868f4c7205901d6e57b25de52b411d1c xe-pw-164181v1: 164181v1 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164181v1/index.html [-- Attachment #2: Type: text/html, Size: 3137 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Track fence region ID in plane state 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala ` (3 preceding siblings ...) 2026-04-01 0:28 ` ✗ Xe.CI.FULL: failure " Patchwork @ 2026-04-01 13:10 ` Jani Nikula 2026-04-01 14:29 ` Ville Syrjälä 2026-04-02 14:54 ` Jani Nikula 5 siblings, 1 reply; 10+ messages in thread From: Jani Nikula @ 2026-04-01 13:10 UTC (permalink / raw) To: Ville Syrjala, intel-gfx; +Cc: intel-xe On Tue, 31 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Get rid of the needlessly complicated PLANE_HAS_FENCE + > intel_parent_vma_fence_id() dance by simply tracking the > fence_id directly in the plane state. This is good cleanup, but I still dread what to do about the whole {intel,xe}_fb_pin.[ch] interface. Needs to be moved to the parent interface, but there's just too much direct display structure poking from the i915 and xe cores there. Ugh. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > .../drm/i915/display/intel_display_types.h | 5 +-- > drivers/gpu/drm/i915/display/intel_fb_pin.c | 33 ++++++++++--------- > drivers/gpu/drm/i915/display/intel_fb_pin.h | 5 ++- > drivers/gpu/drm/i915/display/intel_fbc.c | 11 ++----- > drivers/gpu/drm/i915/display/intel_fbdev.c | 14 ++++---- > drivers/gpu/drm/i915/display/intel_plane.c | 3 +- > drivers/gpu/drm/i915/i915_initial_plane.c | 2 +- > drivers/gpu/drm/xe/display/xe_fb_pin.c | 8 ++--- > drivers/gpu/drm/xe/display/xe_initial_plane.c | 2 +- > 9 files changed, 42 insertions(+), 41 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h > index e2496db1642a..73eb4f38620c 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > @@ -683,14 +683,15 @@ struct intel_plane_state { > > struct i915_vma *ggtt_vma; > struct i915_vma *dpt_vma; > - unsigned long flags; > -#define PLANE_HAS_FENCE BIT(0) > > struct intel_fb_view view; > > /* for legacy cursor fb unpin */ > struct drm_vblank_work unpin_work; > > + /* fenced region ID (-1 if none) */ > + s8 fence_id; I guess I would've made this an int for consistency with all the parameters and local variables. > + > /* Plane pxp decryption state */ > bool decrypt; > > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.c b/drivers/gpu/drm/i915/display/intel_fb_pin.c > index 738d77a1468a..0b8b057647af 100644 > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.c > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.c > @@ -26,7 +26,6 @@ static struct i915_vma * > intel_fb_pin_to_dpt(const struct drm_framebuffer *fb, > const struct i915_gtt_view *view, > unsigned int alignment, > - unsigned long *out_flags, > struct intel_dpt *dpt) > { > struct drm_device *dev = fb->dev; > @@ -115,8 +114,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > unsigned int alignment, > unsigned int phys_alignment, > unsigned int vtd_guard, > - bool uses_fence, > - unsigned long *out_flags) > + int *out_fence_id) > { > struct drm_device *dev = fb->dev; > struct intel_display *display = to_intel_display(dev); > @@ -177,7 +175,10 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > goto err_unpin; > } > > - if (uses_fence && i915_vma_is_map_and_fenceable(vma)) { > + if (out_fence_id) > + *out_fence_id = -1; > + > + if (out_fence_id && i915_vma_is_map_and_fenceable(vma)) { > /* > * Install a fence for tiled scan-out. Pre-i965 always needs a > * fence, whereas 965+ only requires a fence if using > @@ -203,7 +204,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > ret = 0; > > if (vma->fence) > - *out_flags |= PLANE_HAS_FENCE; > + *out_fence_id |= vma->fence->id; > } > > i915_vma_get(vma); > @@ -225,9 +226,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > return vma; > } > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags) > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id) > { > - if (flags & PLANE_HAS_FENCE) > + if (fence_id >= 0) > i915_vma_unpin_fence(vma); > i915_vma_unpin(vma); > i915_vma_put(vma); > @@ -271,17 +272,18 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state, > struct i915_vma *vma; > > if (!intel_fb_uses_dpt(&fb->base)) { > + int fence_id = -1; > + > vma = intel_fb_pin_to_ggtt(&fb->base, &plane_state->view.gtt, > intel_plane_fb_min_alignment(plane_state), > intel_plane_fb_min_phys_alignment(plane_state), > intel_plane_fb_vtd_guard(plane_state), > - intel_plane_uses_fence(plane_state), > - &plane_state->flags); > + intel_plane_uses_fence(plane_state) ? &fence_id : NULL); E.g. here you could pass &plane_state->fence_id direcly if it was an int and ditch the local variable. > if (IS_ERR(vma)) > return PTR_ERR(vma); > > plane_state->ggtt_vma = vma; > - > + plane_state->fence_id = fence_id; > } else { > unsigned int alignment = intel_plane_fb_min_alignment(plane_state); > > @@ -292,8 +294,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state, > plane_state->ggtt_vma = vma; > > vma = intel_fb_pin_to_dpt(&fb->base, &plane_state->view.gtt, > - alignment, &plane_state->flags, > - fb->dpt); > + alignment, fb->dpt); > if (IS_ERR(vma)) { > i915_dpt_unpin_from_ggtt(fb->dpt); > plane_state->ggtt_vma = NULL; > @@ -338,12 +339,14 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state) > > if (!intel_fb_uses_dpt(&fb->base)) { > vma = fetch_and_zero(&old_plane_state->ggtt_vma); > - if (vma) > - intel_fb_unpin_vma(vma, old_plane_state->flags); > + if (vma) { > + intel_fb_unpin_vma(vma, old_plane_state->fence_id); > + old_plane_state->fence_id = -1; > + } > } else { > vma = fetch_and_zero(&old_plane_state->dpt_vma); > if (vma) > - intel_fb_unpin_vma(vma, old_plane_state->flags); > + intel_fb_unpin_vma(vma, -1); > > vma = fetch_and_zero(&old_plane_state->ggtt_vma); > if (vma) > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h > index 81ab79da1af7..2eca42b74c4a 100644 > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h > @@ -20,10 +20,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > unsigned int alignment, > unsigned int phys_alignment, > unsigned int vtd_guard, > - bool uses_fence, > - unsigned long *out_flags); > + int *out_fence_id); > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags); > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id); > > int intel_plane_pin_fb(struct intel_plane_state *new_plane_state, > const struct intel_plane_state *old_plane_state); > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c > index ea0ce00c8474..677ac5be749b 100644 > --- a/drivers/gpu/drm/i915/display/intel_fbc.c > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c > @@ -1458,13 +1458,10 @@ static void intel_fbc_update_state(struct intel_atomic_state *state, > > fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state); > > - drm_WARN_ON(display->drm, plane_state->flags & PLANE_HAS_FENCE && > + drm_WARN_ON(display->drm, plane_state->fence_id >= 0 && > !intel_fbc_has_fences(display)); > > - if (plane_state->flags & PLANE_HAS_FENCE) > - fbc_state->fence_id = intel_parent_vma_fence_id(display, plane_state->ggtt_vma); > - else > - fbc_state->fence_id = -1; > + fbc_state->fence_id = plane_state->fence_id; > > fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state); > fbc_state->cfb_size = intel_fbc_cfb_size(plane_state); > @@ -1487,9 +1484,7 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state) > * so have no fence associated with it) due to aperture constraints > * at the time of pinning. > */ > - return DISPLAY_VER(display) >= 9 || > - (plane_state->flags & PLANE_HAS_FENCE && > - intel_parent_vma_fence_id(display, plane_state->ggtt_vma) != -1); > + return DISPLAY_VER(display) >= 9 || plane_state->fence_id >= 0; > } > > static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state) > diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c > index bdaaf3edba0c..0d7be5186393 100644 > --- a/drivers/gpu/drm/i915/display/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c > @@ -60,7 +60,7 @@ > struct intel_fbdev { > struct intel_framebuffer *fb; > struct i915_vma *vma; > - unsigned long vma_flags; > + s8 fence_id; Ditto. Regardless, Reviewed-by: Jani Nikula <jani.nikula@intel.com> > }; > > static struct intel_fbdev *to_intel_fbdev(struct drm_fb_helper *fb_helper) > @@ -141,7 +141,7 @@ static void intel_fbdev_fb_destroy(struct fb_info *info) > * the info->screen_base mmaping. Leaking the VMA is simpler than > * trying to rectify all the possible error paths leading here. > */ > - intel_fb_unpin_vma(ifbdev->vma, ifbdev->vma_flags); > + intel_fb_unpin_vma(ifbdev->vma, ifbdev->fence_id); > drm_framebuffer_remove(fb_helper->fb); > > drm_client_release(&fb_helper->client); > @@ -269,9 +269,9 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > struct fb_info *info = helper->info; > struct ref_tracker *wakeref; > struct i915_vma *vma; > - unsigned long flags = 0; > bool prealloc = false; > struct drm_gem_object *obj; > + int fence_id = -1; > int ret; > > ifbdev->fb = NULL; > @@ -314,7 +314,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > fb->min_alignment, 0, > intel_fb_view_vtd_guard(&fb->base, &fb->normal_view, > DRM_MODE_ROTATE_0), > - false, &flags); > + &fence_id); > if (IS_ERR(vma)) { > ret = PTR_ERR(vma); > goto out_unlock; > @@ -345,14 +345,14 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > drm_dbg_kms(display->drm, "allocated %dx%d fb\n", fb->base.width, fb->base.height); > ifbdev->fb = fb; > ifbdev->vma = vma; > - ifbdev->vma_flags = flags; > + ifbdev->fence_id = fence_id; > > intel_display_rpm_put(display, wakeref); > > return 0; > > out_unpin: > - intel_fb_unpin_vma(vma, flags); > + intel_fb_unpin_vma(vma, fence_id); > out_unlock: > intel_display_rpm_put(display, wakeref); > > @@ -539,6 +539,8 @@ void intel_fbdev_setup(struct intel_display *display) > if (!ifbdev) > return; > > + ifbdev->fence_id = -1; > + > display->fbdev.fbdev = ifbdev; > if (intel_fbdev_init_bios(display, ifbdev)) > preferred_bpp = intel_fbdev_color_mode(ifbdev->fb->base.format); > diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c > index 5390ceb21ca4..f15dd9e91243 100644 > --- a/drivers/gpu/drm/i915/display/intel_plane.c > +++ b/drivers/gpu/drm/i915/display/intel_plane.c > @@ -70,6 +70,7 @@ static void intel_plane_state_reset(struct intel_plane_state *plane_state, > __drm_atomic_helper_plane_state_reset(&plane_state->uapi, &plane->base); > > plane_state->scaler_id = -1; > + plane_state->fence_id = -1; > } > > struct intel_plane *intel_plane_alloc(void) > @@ -137,7 +138,7 @@ intel_plane_duplicate_state(struct drm_plane *plane) > > intel_state->ggtt_vma = NULL; > intel_state->dpt_vma = NULL; > - intel_state->flags = 0; > + intel_state->fence_id = -1; > intel_state->damage = DRM_RECT_INIT(0, 0, 0, 0); > > /* add reference to fb */ > diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c > index 390a9248d631..db51a468ddd4 100644 > --- a/drivers/gpu/drm/i915/i915_initial_plane.c > +++ b/drivers/gpu/drm/i915/i915_initial_plane.c > @@ -268,7 +268,7 @@ i915_initial_plane_setup(struct drm_plane_state *_plane_state, > plane_state->ggtt_vma = i915_vma_get(vma); > if (intel_plane_uses_fence(plane_state) && > i915_vma_pin_fence(vma) == 0 && vma->fence) > - plane_state->flags |= PLANE_HAS_FENCE; > + plane_state->fence_id = vma->fence->id; > > plane_state->surf = i915_ggtt_offset(plane_state->ggtt_vma); > > diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c > index e45a1e7a4670..739d9c019094 100644 > --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c > +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c > @@ -418,15 +418,15 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > unsigned int alignment, > unsigned int phys_alignment, > unsigned int vtd_guard, > - bool uses_fence, > - unsigned long *out_flags) > + int *out_fence_id) > { > - *out_flags = 0; > + if (out_fence_id) > + *out_fence_id = -1; > > return __xe_pin_fb_vma(to_intel_framebuffer(fb), view, alignment); > } > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags) > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id) > { > __xe_unpin_fb_vma(vma); > } > diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c > index 8bcae552dddc..09ec8f94bf57 100644 > --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c > +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c > @@ -153,7 +153,7 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state, > struct i915_vma *vma; > > vma = intel_fb_pin_to_ggtt(fb, &plane_state->view.gtt, > - 0, 0, 0, false, &plane_state->flags); > + 0, 0, 0, NULL); > if (IS_ERR(vma)) > return PTR_ERR(vma); -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Track fence region ID in plane state 2026-04-01 13:10 ` [PATCH 1/2] " Jani Nikula @ 2026-04-01 14:29 ` Ville Syrjälä 0 siblings, 0 replies; 10+ messages in thread From: Ville Syrjälä @ 2026-04-01 14:29 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Wed, Apr 01, 2026 at 04:10:16PM +0300, Jani Nikula wrote: > On Tue, 31 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Get rid of the needlessly complicated PLANE_HAS_FENCE + > > intel_parent_vma_fence_id() dance by simply tracking the > > fence_id directly in the plane state. > > This is good cleanup, but I still dread what to do about the whole > {intel,xe}_fb_pin.[ch] interface. Needs to be moved to the parent > interface, but there's just too much direct display structure poking > from the i915 and xe cores there. Ugh. Hmm. I'll put on my thinking cap and ponder about it a bit... > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > .../drm/i915/display/intel_display_types.h | 5 +-- > > drivers/gpu/drm/i915/display/intel_fb_pin.c | 33 ++++++++++--------- > > drivers/gpu/drm/i915/display/intel_fb_pin.h | 5 ++- > > drivers/gpu/drm/i915/display/intel_fbc.c | 11 ++----- > > drivers/gpu/drm/i915/display/intel_fbdev.c | 14 ++++---- > > drivers/gpu/drm/i915/display/intel_plane.c | 3 +- > > drivers/gpu/drm/i915/i915_initial_plane.c | 2 +- > > drivers/gpu/drm/xe/display/xe_fb_pin.c | 8 ++--- > > drivers/gpu/drm/xe/display/xe_initial_plane.c | 2 +- > > 9 files changed, 42 insertions(+), 41 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h > > index e2496db1642a..73eb4f38620c 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > > @@ -683,14 +683,15 @@ struct intel_plane_state { > > > > struct i915_vma *ggtt_vma; > > struct i915_vma *dpt_vma; > > - unsigned long flags; > > -#define PLANE_HAS_FENCE BIT(0) > > > > struct intel_fb_view view; > > > > /* for legacy cursor fb unpin */ > > struct drm_vblank_work unpin_work; > > > > + /* fenced region ID (-1 if none) */ > > + s8 fence_id; > > I guess I would've made this an int for consistency with all the > parameters and local variables. I considered it after the fact. But FBC had the s8, and I found it really hard to give up on that nice little hole I found :/ > > > + > > /* Plane pxp decryption state */ > > bool decrypt; > > > > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.c b/drivers/gpu/drm/i915/display/intel_fb_pin.c > > index 738d77a1468a..0b8b057647af 100644 > > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.c > > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.c > > @@ -26,7 +26,6 @@ static struct i915_vma * > > intel_fb_pin_to_dpt(const struct drm_framebuffer *fb, > > const struct i915_gtt_view *view, > > unsigned int alignment, > > - unsigned long *out_flags, > > struct intel_dpt *dpt) > > { > > struct drm_device *dev = fb->dev; > > @@ -115,8 +114,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > unsigned int alignment, > > unsigned int phys_alignment, > > unsigned int vtd_guard, > > - bool uses_fence, > > - unsigned long *out_flags) > > + int *out_fence_id) > > { > > struct drm_device *dev = fb->dev; > > struct intel_display *display = to_intel_display(dev); > > @@ -177,7 +175,10 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > goto err_unpin; > > } > > > > - if (uses_fence && i915_vma_is_map_and_fenceable(vma)) { > > + if (out_fence_id) > > + *out_fence_id = -1; > > + > > + if (out_fence_id && i915_vma_is_map_and_fenceable(vma)) { > > /* > > * Install a fence for tiled scan-out. Pre-i965 always needs a > > * fence, whereas 965+ only requires a fence if using > > @@ -203,7 +204,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > ret = 0; > > > > if (vma->fence) > > - *out_flags |= PLANE_HAS_FENCE; > > + *out_fence_id |= vma->fence->id; > > } > > > > i915_vma_get(vma); > > @@ -225,9 +226,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > return vma; > > } > > > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags) > > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id) > > { > > - if (flags & PLANE_HAS_FENCE) > > + if (fence_id >= 0) > > i915_vma_unpin_fence(vma); > > i915_vma_unpin(vma); > > i915_vma_put(vma); > > @@ -271,17 +272,18 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state, > > struct i915_vma *vma; > > > > if (!intel_fb_uses_dpt(&fb->base)) { > > + int fence_id = -1; > > + > > vma = intel_fb_pin_to_ggtt(&fb->base, &plane_state->view.gtt, > > intel_plane_fb_min_alignment(plane_state), > > intel_plane_fb_min_phys_alignment(plane_state), > > intel_plane_fb_vtd_guard(plane_state), > > - intel_plane_uses_fence(plane_state), > > - &plane_state->flags); > > + intel_plane_uses_fence(plane_state) ? &fence_id : NULL); > > E.g. here you could pass &plane_state->fence_id direcly if it was an int > and ditch the local variable. > > > if (IS_ERR(vma)) > > return PTR_ERR(vma); > > > > plane_state->ggtt_vma = vma; > > - > > + plane_state->fence_id = fence_id; > > } else { > > unsigned int alignment = intel_plane_fb_min_alignment(plane_state); > > > > @@ -292,8 +294,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state, > > plane_state->ggtt_vma = vma; > > > > vma = intel_fb_pin_to_dpt(&fb->base, &plane_state->view.gtt, > > - alignment, &plane_state->flags, > > - fb->dpt); > > + alignment, fb->dpt); > > if (IS_ERR(vma)) { > > i915_dpt_unpin_from_ggtt(fb->dpt); > > plane_state->ggtt_vma = NULL; > > @@ -338,12 +339,14 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state) > > > > if (!intel_fb_uses_dpt(&fb->base)) { > > vma = fetch_and_zero(&old_plane_state->ggtt_vma); > > - if (vma) > > - intel_fb_unpin_vma(vma, old_plane_state->flags); > > + if (vma) { > > + intel_fb_unpin_vma(vma, old_plane_state->fence_id); > > + old_plane_state->fence_id = -1; > > + } > > } else { > > vma = fetch_and_zero(&old_plane_state->dpt_vma); > > if (vma) > > - intel_fb_unpin_vma(vma, old_plane_state->flags); > > + intel_fb_unpin_vma(vma, -1); > > > > vma = fetch_and_zero(&old_plane_state->ggtt_vma); > > if (vma) > > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h > > index 81ab79da1af7..2eca42b74c4a 100644 > > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h > > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h > > @@ -20,10 +20,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > unsigned int alignment, > > unsigned int phys_alignment, > > unsigned int vtd_guard, > > - bool uses_fence, > > - unsigned long *out_flags); > > + int *out_fence_id); > > > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags); > > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id); > > > > int intel_plane_pin_fb(struct intel_plane_state *new_plane_state, > > const struct intel_plane_state *old_plane_state); > > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c > > index ea0ce00c8474..677ac5be749b 100644 > > --- a/drivers/gpu/drm/i915/display/intel_fbc.c > > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c > > @@ -1458,13 +1458,10 @@ static void intel_fbc_update_state(struct intel_atomic_state *state, > > > > fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state); > > > > - drm_WARN_ON(display->drm, plane_state->flags & PLANE_HAS_FENCE && > > + drm_WARN_ON(display->drm, plane_state->fence_id >= 0 && > > !intel_fbc_has_fences(display)); > > > > - if (plane_state->flags & PLANE_HAS_FENCE) > > - fbc_state->fence_id = intel_parent_vma_fence_id(display, plane_state->ggtt_vma); > > - else > > - fbc_state->fence_id = -1; > > + fbc_state->fence_id = plane_state->fence_id; > > > > fbc_state->cfb_stride = intel_fbc_cfb_stride(plane_state); > > fbc_state->cfb_size = intel_fbc_cfb_size(plane_state); > > @@ -1487,9 +1484,7 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state) > > * so have no fence associated with it) due to aperture constraints > > * at the time of pinning. > > */ > > - return DISPLAY_VER(display) >= 9 || > > - (plane_state->flags & PLANE_HAS_FENCE && > > - intel_parent_vma_fence_id(display, plane_state->ggtt_vma) != -1); > > + return DISPLAY_VER(display) >= 9 || plane_state->fence_id >= 0; > > } > > > > static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state) > > diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c > > index bdaaf3edba0c..0d7be5186393 100644 > > --- a/drivers/gpu/drm/i915/display/intel_fbdev.c > > +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c > > @@ -60,7 +60,7 @@ > > struct intel_fbdev { > > struct intel_framebuffer *fb; > > struct i915_vma *vma; > > - unsigned long vma_flags; > > + s8 fence_id; > > Ditto. > > Regardless, > > Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > > > }; > > > > static struct intel_fbdev *to_intel_fbdev(struct drm_fb_helper *fb_helper) > > @@ -141,7 +141,7 @@ static void intel_fbdev_fb_destroy(struct fb_info *info) > > * the info->screen_base mmaping. Leaking the VMA is simpler than > > * trying to rectify all the possible error paths leading here. > > */ > > - intel_fb_unpin_vma(ifbdev->vma, ifbdev->vma_flags); > > + intel_fb_unpin_vma(ifbdev->vma, ifbdev->fence_id); > > drm_framebuffer_remove(fb_helper->fb); > > > > drm_client_release(&fb_helper->client); > > @@ -269,9 +269,9 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > > struct fb_info *info = helper->info; > > struct ref_tracker *wakeref; > > struct i915_vma *vma; > > - unsigned long flags = 0; > > bool prealloc = false; > > struct drm_gem_object *obj; > > + int fence_id = -1; > > int ret; > > > > ifbdev->fb = NULL; > > @@ -314,7 +314,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > > fb->min_alignment, 0, > > intel_fb_view_vtd_guard(&fb->base, &fb->normal_view, > > DRM_MODE_ROTATE_0), > > - false, &flags); > > + &fence_id); > > if (IS_ERR(vma)) { > > ret = PTR_ERR(vma); > > goto out_unlock; > > @@ -345,14 +345,14 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > > drm_dbg_kms(display->drm, "allocated %dx%d fb\n", fb->base.width, fb->base.height); > > ifbdev->fb = fb; > > ifbdev->vma = vma; > > - ifbdev->vma_flags = flags; > > + ifbdev->fence_id = fence_id; > > > > intel_display_rpm_put(display, wakeref); > > > > return 0; > > > > out_unpin: > > - intel_fb_unpin_vma(vma, flags); > > + intel_fb_unpin_vma(vma, fence_id); > > out_unlock: > > intel_display_rpm_put(display, wakeref); > > > > @@ -539,6 +539,8 @@ void intel_fbdev_setup(struct intel_display *display) > > if (!ifbdev) > > return; > > > > + ifbdev->fence_id = -1; > > + > > display->fbdev.fbdev = ifbdev; > > if (intel_fbdev_init_bios(display, ifbdev)) > > preferred_bpp = intel_fbdev_color_mode(ifbdev->fb->base.format); > > diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c > > index 5390ceb21ca4..f15dd9e91243 100644 > > --- a/drivers/gpu/drm/i915/display/intel_plane.c > > +++ b/drivers/gpu/drm/i915/display/intel_plane.c > > @@ -70,6 +70,7 @@ static void intel_plane_state_reset(struct intel_plane_state *plane_state, > > __drm_atomic_helper_plane_state_reset(&plane_state->uapi, &plane->base); > > > > plane_state->scaler_id = -1; > > + plane_state->fence_id = -1; > > } > > > > struct intel_plane *intel_plane_alloc(void) > > @@ -137,7 +138,7 @@ intel_plane_duplicate_state(struct drm_plane *plane) > > > > intel_state->ggtt_vma = NULL; > > intel_state->dpt_vma = NULL; > > - intel_state->flags = 0; > > + intel_state->fence_id = -1; > > intel_state->damage = DRM_RECT_INIT(0, 0, 0, 0); > > > > /* add reference to fb */ > > diff --git a/drivers/gpu/drm/i915/i915_initial_plane.c b/drivers/gpu/drm/i915/i915_initial_plane.c > > index 390a9248d631..db51a468ddd4 100644 > > --- a/drivers/gpu/drm/i915/i915_initial_plane.c > > +++ b/drivers/gpu/drm/i915/i915_initial_plane.c > > @@ -268,7 +268,7 @@ i915_initial_plane_setup(struct drm_plane_state *_plane_state, > > plane_state->ggtt_vma = i915_vma_get(vma); > > if (intel_plane_uses_fence(plane_state) && > > i915_vma_pin_fence(vma) == 0 && vma->fence) > > - plane_state->flags |= PLANE_HAS_FENCE; > > + plane_state->fence_id = vma->fence->id; > > > > plane_state->surf = i915_ggtt_offset(plane_state->ggtt_vma); > > > > diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c > > index e45a1e7a4670..739d9c019094 100644 > > --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c > > +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c > > @@ -418,15 +418,15 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > unsigned int alignment, > > unsigned int phys_alignment, > > unsigned int vtd_guard, > > - bool uses_fence, > > - unsigned long *out_flags) > > + int *out_fence_id) > > { > > - *out_flags = 0; > > + if (out_fence_id) > > + *out_fence_id = -1; > > > > return __xe_pin_fb_vma(to_intel_framebuffer(fb), view, alignment); > > } > > > > -void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags) > > +void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id) > > { > > __xe_unpin_fb_vma(vma); > > } > > diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c > > index 8bcae552dddc..09ec8f94bf57 100644 > > --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c > > +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c > > @@ -153,7 +153,7 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state, > > struct i915_vma *vma; > > > > vma = intel_fb_pin_to_ggtt(fb, &plane_state->view.gtt, > > - 0, 0, 0, false, &plane_state->flags); > > + 0, 0, 0, NULL); > > if (IS_ERR(vma)) > > return PTR_ERR(vma); > > -- > Jani Nikula, Intel -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Track fence region ID in plane state 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala ` (4 preceding siblings ...) 2026-04-01 13:10 ` [PATCH 1/2] " Jani Nikula @ 2026-04-02 14:54 ` Jani Nikula 2026-04-02 17:20 ` Ville Syrjälä 5 siblings, 1 reply; 10+ messages in thread From: Jani Nikula @ 2026-04-02 14:54 UTC (permalink / raw) To: Ville Syrjala, intel-gfx; +Cc: intel-xe On Tue, 31 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > @@ -203,7 +204,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > ret = 0; > > if (vma->fence) > - *out_flags |= PLANE_HAS_FENCE; > + *out_fence_id |= vma->fence->id; That should obviously be an assignment rather than OR. I was reviewing the recently enabled Sashiko LLM reviews, and it had spotted this one [1]. > @@ -314,7 +314,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > fb->min_alignment, 0, > intel_fb_view_vtd_guard(&fb->base, &fb->normal_view, > DRM_MODE_ROTATE_0), > - false, &flags); > + &fence_id); This might also change behaviour as previously uses_fence == false. BR, Jani. [1] https://sashiko.dev/#/patchset/20260331162138.19258-1-ville.syrjala%40linux.intel.com -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Track fence region ID in plane state 2026-04-02 14:54 ` Jani Nikula @ 2026-04-02 17:20 ` Ville Syrjälä 0 siblings, 0 replies; 10+ messages in thread From: Ville Syrjälä @ 2026-04-02 17:20 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Thu, Apr 02, 2026 at 05:54:05PM +0300, Jani Nikula wrote: > On Tue, 31 Mar 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > > @@ -203,7 +204,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb, > > ret = 0; > > > > if (vma->fence) > > - *out_flags |= PLANE_HAS_FENCE; > > + *out_fence_id |= vma->fence->id; > > That should obviously be an assignment rather than OR. > > I was reviewing the recently enabled Sashiko LLM reviews, and it had > spotted this one [1]. > > > @@ -314,7 +314,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper, > > fb->min_alignment, 0, > > intel_fb_view_vtd_guard(&fb->base, &fb->normal_view, > > DRM_MODE_ROTATE_0), > > - false, &flags); > > + &fence_id); > > This might also change behaviour as previously uses_fence == false. Hmm. Seems harmless but I guess we don't need the fence here at all. If a fence is needed i915_vma_pin_iomap() will anyway grab one. And even if we didn't iomap the thing intel_plane_pin_fb() would still grab a fence if the display hardware needs it. > > BR, > Jani. > > > > [1] https://sashiko.dev/#/patchset/20260331162138.19258-1-ville.syrjala%40linux.intel.com > > > > -- > Jani Nikula, Intel -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-04-02 17:20 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-31 16:21 [PATCH 1/2] drm/i915: Track fence region ID in plane state Ville Syrjala 2026-03-31 16:21 ` [PATCH 2/2] drm/i915: Remove the vma parent interface Ville Syrjala 2026-04-01 13:10 ` Jani Nikula 2026-03-31 17:19 ` ✓ CI.KUnit: success for series starting with [1/2] drm/i915: Track fence region ID in plane state Patchwork 2026-03-31 18:19 ` ✓ Xe.CI.BAT: " Patchwork 2026-04-01 0:28 ` ✗ Xe.CI.FULL: failure " Patchwork 2026-04-01 13:10 ` [PATCH 1/2] " Jani Nikula 2026-04-01 14:29 ` Ville Syrjälä 2026-04-02 14:54 ` Jani Nikula 2026-04-02 17:20 ` Ville Syrjälä
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox