* [PATCH 0/5] drm/i915: intel_display conversions, cleanups
@ 2024-11-11 17:53 Jani Nikula
2024-11-11 17:53 ` [PATCH 1/5] drm/i915/overlay: convert to struct intel_display Jani Nikula
` (13 more replies)
0 siblings, 14 replies; 25+ messages in thread
From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Some struct intel_display conversions, with the goal to reduce direct
struct intel_display member access from i915 core code. Also some
related cleanups.
BR,
Jani.
Jani Nikula (5):
drm/i915/overlay: convert to struct intel_display
drm/i915/overlay: add intel_overlay_available() and use it
drm/i915/plane: convert initial plane setup to struct intel_display
drm/i915/irq: hide display_irqs_enabled access
drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV
.../gpu/drm/i915/display/intel_display_core.h | 9 +-
.../drm/i915/display/intel_display_driver.c | 6 +-
.../gpu/drm/i915/display/intel_display_irq.c | 37 ++--
.../gpu/drm/i915/display/intel_hotplug_irq.c | 6 +-
drivers/gpu/drm/i915/display/intel_overlay.c | 184 +++++++++---------
drivers/gpu/drm/i915/display/intel_overlay.h | 19 +-
.../drm/i915/display/intel_plane_initial.c | 56 +++---
.../drm/i915/display/intel_plane_initial.h | 4 +-
drivers/gpu/drm/i915/gt/intel_reset.c | 3 +-
drivers/gpu/drm/i915/i915_getparam.c | 5 +-
drivers/gpu/drm/i915/i915_irq.c | 12 +-
drivers/gpu/drm/xe/display/xe_plane_initial.c | 8 +-
12 files changed, 187 insertions(+), 162 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 25+ messages in thread* [PATCH 1/5] drm/i915/overlay: convert to struct intel_display 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula @ 2024-11-11 17:53 ` Jani Nikula 2024-11-12 20:40 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it Jani Nikula ` (12 subsequent siblings) 13 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula struct intel_display replaces struct drm_i915_private as the main display device pointer. Convert overlay to it, as much as possible. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- .../drm/i915/display/intel_display_driver.c | 4 +- drivers/gpu/drm/i915/display/intel_overlay.c | 179 +++++++++--------- drivers/gpu/drm/i915/display/intel_overlay.h | 14 +- drivers/gpu/drm/i915/gt/intel_reset.c | 3 +- 4 files changed, 102 insertions(+), 98 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c index 56b78cf6b854..5983570b510f 100644 --- a/drivers/gpu/drm/i915/display/intel_display_driver.c +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c @@ -518,7 +518,7 @@ int intel_display_driver_probe(struct drm_i915_private *i915) if (ret) drm_dbg_kms(&i915->drm, "Initial modeset failed, %d\n", ret); - intel_overlay_setup(i915); + intel_overlay_setup(display); /* Only enable hotplug handling once the fbdev is fully set up. */ intel_hpd_init(i915); @@ -607,7 +607,7 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915) intel_dp_tunnel_mgr_cleanup(display); - intel_overlay_cleanup(i915); + intel_overlay_cleanup(display); intel_gmbus_teardown(display); diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c index 2ec14096ba9c..57eaf81651c4 100644 --- a/drivers/gpu/drm/i915/display/intel_overlay.c +++ b/drivers/gpu/drm/i915/display/intel_overlay.c @@ -183,7 +183,7 @@ struct overlay_registers { }; struct intel_overlay { - struct drm_i915_private *i915; + struct intel_display *display; struct intel_context *context; struct intel_crtc *crtc; struct i915_vma *vma; @@ -205,17 +205,17 @@ struct intel_overlay { void (*flip_complete)(struct intel_overlay *ovl); }; -static void i830_overlay_clock_gating(struct drm_i915_private *dev_priv, +static void i830_overlay_clock_gating(struct intel_display *display, bool enable) { - struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev); + struct pci_dev *pdev = to_pci_dev(display->drm->dev); u8 val; /* WA_OVERLAY_CLKGATE:alm */ if (enable) - intel_de_write(dev_priv, DSPCLK_GATE_D(dev_priv), 0); + intel_de_write(display, DSPCLK_GATE_D(display), 0); else - intel_de_write(dev_priv, DSPCLK_GATE_D(dev_priv), + intel_de_write(display, DSPCLK_GATE_D(display), OVRUNIT_CLOCK_GATE_DISABLE); /* WA_DISABLE_L2CACHE_CLOCK_GATING:alm */ @@ -253,11 +253,11 @@ alloc_request(struct intel_overlay *overlay, void (*fn)(struct intel_overlay *)) /* overlay needs to be disable in OCMD reg */ static int intel_overlay_on(struct intel_overlay *overlay) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; struct i915_request *rq; u32 *cs; - drm_WARN_ON(&dev_priv->drm, overlay->active); + drm_WARN_ON(display->drm, overlay->active); rq = alloc_request(overlay, NULL); if (IS_ERR(rq)) @@ -271,8 +271,8 @@ static int intel_overlay_on(struct intel_overlay *overlay) overlay->active = true; - if (IS_I830(dev_priv)) - i830_overlay_clock_gating(dev_priv, false); + if (display->platform.i830) + i830_overlay_clock_gating(display, false); *cs++ = MI_OVERLAY_FLIP | MI_OVERLAY_ON; *cs++ = overlay->flip_addr | OFC_UPDATE; @@ -288,10 +288,12 @@ static int intel_overlay_on(struct intel_overlay *overlay) static void intel_overlay_flip_prepare(struct intel_overlay *overlay, struct i915_vma *vma) { + struct intel_display *display = overlay->display; + struct drm_i915_private *i915 = to_i915(display->drm); enum pipe pipe = overlay->crtc->pipe; struct intel_frontbuffer *frontbuffer = NULL; - drm_WARN_ON(&overlay->i915->drm, overlay->old_vma); + drm_WARN_ON(display->drm, overlay->old_vma); if (vma) frontbuffer = intel_frontbuffer_get(intel_bo_to_drm_bo(vma->obj)); @@ -303,8 +305,7 @@ static void intel_overlay_flip_prepare(struct intel_overlay *overlay, intel_frontbuffer_put(overlay->frontbuffer); overlay->frontbuffer = frontbuffer; - intel_frontbuffer_flip_prepare(overlay->i915, - INTEL_FRONTBUFFER_OVERLAY(pipe)); + intel_frontbuffer_flip_prepare(i915, INTEL_FRONTBUFFER_OVERLAY(pipe)); overlay->old_vma = overlay->vma; if (vma) @@ -318,20 +319,20 @@ static int intel_overlay_continue(struct intel_overlay *overlay, struct i915_vma *vma, bool load_polyphase_filter) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; struct i915_request *rq; u32 flip_addr = overlay->flip_addr; u32 tmp, *cs; - drm_WARN_ON(&dev_priv->drm, !overlay->active); + drm_WARN_ON(display->drm, !overlay->active); if (load_polyphase_filter) flip_addr |= OFC_UPDATE; /* check for underruns */ - tmp = intel_de_read(dev_priv, DOVSTA); + tmp = intel_de_read(display, DOVSTA); if (tmp & (1 << 17)) - drm_dbg(&dev_priv->drm, "overlay underrun, DOVSTA: %x\n", tmp); + drm_dbg(display->drm, "overlay underrun, DOVSTA: %x\n", tmp); rq = alloc_request(overlay, NULL); if (IS_ERR(rq)) @@ -355,14 +356,15 @@ static int intel_overlay_continue(struct intel_overlay *overlay, static void intel_overlay_release_old_vma(struct intel_overlay *overlay) { + struct intel_display *display = overlay->display; + struct drm_i915_private *i915 = to_i915(display->drm); struct i915_vma *vma; vma = fetch_and_zero(&overlay->old_vma); - if (drm_WARN_ON(&overlay->i915->drm, !vma)) + if (drm_WARN_ON(display->drm, !vma)) return; - intel_frontbuffer_flip_complete(overlay->i915, - INTEL_FRONTBUFFER_OVERLAY(overlay->crtc->pipe)); + intel_frontbuffer_flip_complete(i915, INTEL_FRONTBUFFER_OVERLAY(overlay->crtc->pipe)); i915_vma_unpin(vma); i915_vma_put(vma); @@ -376,7 +378,7 @@ intel_overlay_release_old_vid_tail(struct intel_overlay *overlay) static void intel_overlay_off_tail(struct intel_overlay *overlay) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; intel_overlay_release_old_vma(overlay); @@ -384,8 +386,8 @@ static void intel_overlay_off_tail(struct intel_overlay *overlay) overlay->crtc = NULL; overlay->active = false; - if (IS_I830(dev_priv)) - i830_overlay_clock_gating(dev_priv, true); + if (display->platform.i830) + i830_overlay_clock_gating(display, true); } static void intel_overlay_last_flip_retire(struct i915_active *active) @@ -400,10 +402,11 @@ static void intel_overlay_last_flip_retire(struct i915_active *active) /* overlay needs to be disabled in OCMD reg */ static int intel_overlay_off(struct intel_overlay *overlay) { + struct intel_display *display = overlay->display; struct i915_request *rq; u32 *cs, flip_addr = overlay->flip_addr; - drm_WARN_ON(&overlay->i915->drm, !overlay->active); + drm_WARN_ON(display->drm, !overlay->active); /* According to intel docs the overlay hw may hang (when switching * off) without loading the filter coeffs. It is however unclear whether @@ -452,7 +455,7 @@ static int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay) */ static int intel_overlay_release_old_vid(struct intel_overlay *overlay) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; struct i915_request *rq; u32 *cs; @@ -463,7 +466,7 @@ static int intel_overlay_release_old_vid(struct intel_overlay *overlay) if (!overlay->old_vma) return 0; - if (!(intel_de_read(dev_priv, GEN2_ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT)) { + if (!(intel_de_read(display, GEN2_ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT)) { intel_overlay_release_old_vid_tail(overlay); return 0; } @@ -487,9 +490,9 @@ static int intel_overlay_release_old_vid(struct intel_overlay *overlay) return i915_active_wait(&overlay->last_flip); } -void intel_overlay_reset(struct drm_i915_private *dev_priv) +void intel_overlay_reset(struct intel_display *display) { - struct intel_overlay *overlay = dev_priv->display.overlay; + struct intel_overlay *overlay = display->overlay; if (!overlay) return; @@ -550,11 +553,11 @@ static int uv_vsubsampling(u32 format) } } -static u32 calc_swidthsw(struct drm_i915_private *dev_priv, u32 offset, u32 width) +static u32 calc_swidthsw(struct intel_display *display, u32 offset, u32 width) { u32 sw; - if (DISPLAY_VER(dev_priv) == 2) + if (DISPLAY_VER(display) == 2) sw = ALIGN((offset & 31) + width, 32); else sw = ALIGN((offset & 63) + width, 64); @@ -789,16 +792,17 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, struct drm_i915_gem_object *new_bo, struct drm_intel_overlay_put_image *params) { + struct intel_display *display = overlay->display; + struct drm_i915_private *dev_priv = to_i915(display->drm); struct overlay_registers __iomem *regs = overlay->regs; - struct drm_i915_private *dev_priv = overlay->i915; u32 swidth, swidthsw, sheight, ostride; enum pipe pipe = overlay->crtc->pipe; bool scale_changed = false; struct i915_vma *vma; int ret, tmp_width; - drm_WARN_ON(&dev_priv->drm, - !drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex)); + drm_WARN_ON(display->drm, + !drm_modeset_is_locked(&display->drm->mode_config.connection_mutex)); ret = intel_overlay_release_old_vid(overlay); if (ret != 0) @@ -824,7 +828,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, oconfig |= OCONF_CC_OUT_8BIT; if (crtc_state->gamma_enable) oconfig |= OCONF_GAMMA2_ENABLE; - if (DISPLAY_VER(dev_priv) == 4) + if (DISPLAY_VER(display) == 4) oconfig |= OCONF_CSC_MODE_BT709; oconfig |= pipe == 0 ? OCONF_PIPE_A : OCONF_PIPE_B; @@ -845,7 +849,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, tmp_width = params->src_width; swidth = params->src_width; - swidthsw = calc_swidthsw(dev_priv, params->offset_Y, tmp_width); + swidthsw = calc_swidthsw(display, params->offset_Y, tmp_width); sheight = params->src_height; iowrite32(i915_ggtt_offset(vma) + params->offset_Y, ®s->OBUF_0Y); ostride = params->stride_Y; @@ -858,9 +862,9 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, swidth |= (params->src_width / uv_hscale) << 16; sheight |= (params->src_height / uv_vscale) << 16; - tmp_U = calc_swidthsw(dev_priv, params->offset_U, + tmp_U = calc_swidthsw(display, params->offset_U, params->src_width / uv_hscale); - tmp_V = calc_swidthsw(dev_priv, params->offset_V, + tmp_V = calc_swidthsw(display, params->offset_V, params->src_width / uv_hscale); swidthsw |= max(tmp_U, tmp_V) << 16; @@ -899,11 +903,11 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, int intel_overlay_switch_off(struct intel_overlay *overlay) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; int ret; - drm_WARN_ON(&dev_priv->drm, - !drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex)); + drm_WARN_ON(display->drm, + !drm_modeset_is_locked(&display->drm->mode_config.connection_mutex)); ret = intel_overlay_recover_from_interrupt(overlay); if (ret != 0) @@ -936,26 +940,24 @@ static int check_overlay_possible_on_crtc(struct intel_overlay *overlay, static void update_pfit_vscale_ratio(struct intel_overlay *overlay) { - struct drm_i915_private *dev_priv = overlay->i915; + struct intel_display *display = overlay->display; u32 ratio; /* XXX: This is not the same logic as in the xorg driver, but more in * line with the intel documentation for the i965 */ - if (DISPLAY_VER(dev_priv) >= 4) { - u32 tmp = intel_de_read(dev_priv, PFIT_PGM_RATIOS(dev_priv)); + if (DISPLAY_VER(display) >= 4) { + u32 tmp = intel_de_read(display, PFIT_PGM_RATIOS(display)); /* on i965 use the PGM reg to read out the autoscaler values */ ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, tmp); } else { u32 tmp; - if (intel_de_read(dev_priv, PFIT_CONTROL(dev_priv)) & PFIT_VERT_AUTO_SCALE) - tmp = intel_de_read(dev_priv, - PFIT_AUTO_RATIOS(dev_priv)); + if (intel_de_read(display, PFIT_CONTROL(display)) & PFIT_VERT_AUTO_SCALE) + tmp = intel_de_read(display, PFIT_AUTO_RATIOS(display)); else - tmp = intel_de_read(dev_priv, - PFIT_PGM_RATIOS(dev_priv)); + tmp = intel_de_read(display, PFIT_PGM_RATIOS(display)); ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, tmp); } @@ -1000,7 +1002,7 @@ static int check_overlay_scaling(struct drm_intel_overlay_put_image *rec) return 0; } -static int check_overlay_src(struct drm_i915_private *dev_priv, +static int check_overlay_src(struct intel_display *display, struct drm_intel_overlay_put_image *rec, struct drm_i915_gem_object *new_bo) { @@ -1011,7 +1013,7 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, u32 tmp; /* check src dimensions */ - if (IS_I845G(dev_priv) || IS_I830(dev_priv)) { + if (display->platform.i845g || display->platform.i830) { if (rec->src_height > IMAGE_MAX_HEIGHT_LEGACY || rec->src_width > IMAGE_MAX_WIDTH_LEGACY) return -EINVAL; @@ -1063,14 +1065,14 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, return -EINVAL; /* stride checking */ - if (IS_I830(dev_priv) || IS_I845G(dev_priv)) + if (display->platform.i830 || display->platform.i845g) stride_mask = 255; else stride_mask = 63; if (rec->stride_Y & stride_mask || rec->stride_UV & stride_mask) return -EINVAL; - if (DISPLAY_VER(dev_priv) == 4 && rec->stride_Y < 512) + if (DISPLAY_VER(display) == 4 && rec->stride_Y < 512) return -EINVAL; tmp = (rec->flags & I915_OVERLAY_TYPE_MASK) == I915_OVERLAY_YUV_PLANAR ? @@ -1114,17 +1116,17 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { + struct intel_display *display = to_intel_display(dev); struct drm_intel_overlay_put_image *params = data; - struct drm_i915_private *dev_priv = to_i915(dev); struct intel_overlay *overlay; struct drm_crtc *drmmode_crtc; struct intel_crtc *crtc; struct drm_i915_gem_object *new_bo; int ret; - overlay = dev_priv->display.overlay; + overlay = display->overlay; if (!overlay) { - drm_dbg(&dev_priv->drm, "userspace bug: no overlay\n"); + drm_dbg(display->drm, "userspace bug: no overlay\n"); return -ENODEV; } @@ -1148,7 +1150,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, drm_modeset_lock_all(dev); if (i915_gem_object_is_tiled(new_bo)) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "buffer used for overlay image can not be tiled\n"); ret = -EINVAL; goto out_unlock; @@ -1197,7 +1199,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, goto out_unlock; } - ret = check_overlay_src(dev_priv, params, new_bo); + ret = check_overlay_src(display, params, new_bo); if (ret != 0) goto out_unlock; @@ -1277,14 +1279,14 @@ static int check_gamma(struct drm_intel_overlay_attrs *attrs) int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { + struct intel_display *display = to_intel_display(dev); struct drm_intel_overlay_attrs *attrs = data; - struct drm_i915_private *dev_priv = to_i915(dev); struct intel_overlay *overlay; int ret; - overlay = dev_priv->display.overlay; + overlay = display->overlay; if (!overlay) { - drm_dbg(&dev_priv->drm, "userspace bug: no overlay\n"); + drm_dbg(display->drm, "userspace bug: no overlay\n"); return -ENODEV; } @@ -1297,13 +1299,13 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, attrs->contrast = overlay->contrast; attrs->saturation = overlay->saturation; - if (DISPLAY_VER(dev_priv) != 2) { - attrs->gamma0 = intel_de_read(dev_priv, OGAMC0); - attrs->gamma1 = intel_de_read(dev_priv, OGAMC1); - attrs->gamma2 = intel_de_read(dev_priv, OGAMC2); - attrs->gamma3 = intel_de_read(dev_priv, OGAMC3); - attrs->gamma4 = intel_de_read(dev_priv, OGAMC4); - attrs->gamma5 = intel_de_read(dev_priv, OGAMC5); + if (DISPLAY_VER(display) != 2) { + attrs->gamma0 = intel_de_read(display, OGAMC0); + attrs->gamma1 = intel_de_read(display, OGAMC1); + attrs->gamma2 = intel_de_read(display, OGAMC2); + attrs->gamma3 = intel_de_read(display, OGAMC3); + attrs->gamma4 = intel_de_read(display, OGAMC4); + attrs->gamma5 = intel_de_read(display, OGAMC5); } } else { if (attrs->brightness < -128 || attrs->brightness > 127) @@ -1321,7 +1323,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, update_reg_attrs(overlay, overlay->regs); if (attrs->flags & I915_OVERLAY_UPDATE_GAMMA) { - if (DISPLAY_VER(dev_priv) == 2) + if (DISPLAY_VER(display) == 2) goto out_unlock; if (overlay->active) { @@ -1333,12 +1335,12 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, if (ret) goto out_unlock; - intel_de_write(dev_priv, OGAMC0, attrs->gamma0); - intel_de_write(dev_priv, OGAMC1, attrs->gamma1); - intel_de_write(dev_priv, OGAMC2, attrs->gamma2); - intel_de_write(dev_priv, OGAMC3, attrs->gamma3); - intel_de_write(dev_priv, OGAMC4, attrs->gamma4); - intel_de_write(dev_priv, OGAMC5, attrs->gamma5); + intel_de_write(display, OGAMC0, attrs->gamma0); + intel_de_write(display, OGAMC1, attrs->gamma1); + intel_de_write(display, OGAMC2, attrs->gamma2); + intel_de_write(display, OGAMC3, attrs->gamma3); + intel_de_write(display, OGAMC4, attrs->gamma4); + intel_de_write(display, OGAMC5, attrs->gamma5); } } overlay->color_key_enabled = (attrs->flags & I915_OVERLAY_DISABLE_DEST_COLORKEY) == 0; @@ -1352,12 +1354,13 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, static int get_registers(struct intel_overlay *overlay, bool use_phys) { - struct drm_i915_private *i915 = overlay->i915; + struct intel_display *display = overlay->display; + struct drm_i915_private *i915 = to_i915(display->drm); struct drm_i915_gem_object *obj = ERR_PTR(-ENODEV); struct i915_vma *vma; int err; - if (!IS_METEORLAKE(i915)) /* Wa_22018444074 */ + if (!display->platform.meteorlake) /* Wa_22018444074 */ obj = i915_gem_object_create_stolen(i915, PAGE_SIZE); if (IS_ERR(obj)) obj = i915_gem_object_create_internal(i915, PAGE_SIZE); @@ -1390,13 +1393,14 @@ static int get_registers(struct intel_overlay *overlay, bool use_phys) return err; } -void intel_overlay_setup(struct drm_i915_private *dev_priv) +void intel_overlay_setup(struct intel_display *display) { + struct drm_i915_private *dev_priv = to_i915(display->drm); struct intel_overlay *overlay; struct intel_engine_cs *engine; int ret; - if (!HAS_OVERLAY(dev_priv)) + if (!HAS_OVERLAY(display)) return; engine = to_gt(dev_priv)->engine[RCS0]; @@ -1407,7 +1411,7 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) if (!overlay) return; - overlay->i915 = dev_priv; + overlay->display = display; overlay->context = engine->kernel_context; overlay->color_key = 0x0101fe; overlay->color_key_enabled = true; @@ -1418,7 +1422,7 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) i915_active_init(&overlay->last_flip, NULL, intel_overlay_last_flip_retire, 0); - ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(dev_priv)); + ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(display)); if (ret) goto out_free; @@ -1426,19 +1430,19 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) update_polyphase_filter(overlay->regs); update_reg_attrs(overlay, overlay->regs); - dev_priv->display.overlay = overlay; - drm_info(&dev_priv->drm, "Initialized overlay support.\n"); + display->overlay = overlay; + drm_info(display->drm, "Initialized overlay support.\n"); return; out_free: kfree(overlay); } -void intel_overlay_cleanup(struct drm_i915_private *dev_priv) +void intel_overlay_cleanup(struct intel_display *display) { struct intel_overlay *overlay; - overlay = fetch_and_zero(&dev_priv->display.overlay); + overlay = fetch_and_zero(&display->overlay); if (!overlay) return; @@ -1447,7 +1451,7 @@ void intel_overlay_cleanup(struct drm_i915_private *dev_priv) * Furthermore modesetting teardown happens beforehand so the * hardware should be off already. */ - drm_WARN_ON(&dev_priv->drm, overlay->active); + drm_WARN_ON(display->drm, overlay->active); i915_gem_object_put(overlay->reg_bo); i915_active_fini(&overlay->last_flip); @@ -1467,8 +1471,7 @@ struct intel_overlay_snapshot { struct intel_overlay_snapshot * intel_overlay_snapshot_capture(struct intel_display *display) { - struct drm_i915_private *dev_priv = to_i915(display->drm); - struct intel_overlay *overlay = dev_priv->display.overlay; + struct intel_overlay *overlay = display->overlay; struct intel_overlay_snapshot *error; if (!overlay || !overlay->active) @@ -1478,8 +1481,8 @@ intel_overlay_snapshot_capture(struct intel_display *display) if (error == NULL) return NULL; - error->dovsta = intel_de_read(dev_priv, DOVSTA); - error->isr = intel_de_read(dev_priv, GEN2_ISR); + error->dovsta = intel_de_read(display, DOVSTA); + error->isr = intel_de_read(display, GEN2_ISR); error->base = overlay->flip_addr; memcpy_fromio(&error->regs, overlay->regs, sizeof(error->regs)); diff --git a/drivers/gpu/drm/i915/display/intel_overlay.h b/drivers/gpu/drm/i915/display/intel_overlay.h index eafac24d1de8..dc885edf39e6 100644 --- a/drivers/gpu/drm/i915/display/intel_overlay.h +++ b/drivers/gpu/drm/i915/display/intel_overlay.h @@ -17,19 +17,19 @@ struct intel_overlay; struct intel_overlay_snapshot; #ifdef I915 -void intel_overlay_setup(struct drm_i915_private *dev_priv); -void intel_overlay_cleanup(struct drm_i915_private *dev_priv); +void intel_overlay_setup(struct intel_display *display); +void intel_overlay_cleanup(struct intel_display *display); int intel_overlay_switch_off(struct intel_overlay *overlay); int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); -void intel_overlay_reset(struct drm_i915_private *dev_priv); +void intel_overlay_reset(struct intel_display *display); #else -static inline void intel_overlay_setup(struct drm_i915_private *dev_priv) +static inline void intel_overlay_setup(struct intel_display *display) { } -static inline void intel_overlay_cleanup(struct drm_i915_private *dev_priv) +static inline void intel_overlay_cleanup(struct intel_display *display) { } static inline int intel_overlay_switch_off(struct intel_overlay *overlay) @@ -37,7 +37,7 @@ static inline int intel_overlay_switch_off(struct intel_overlay *overlay) return 0; } static inline int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv) + struct drm_file *file_priv) { return 0; } @@ -46,7 +46,7 @@ static inline int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, { return 0; } -static inline void intel_overlay_reset(struct drm_i915_private *dev_priv) +static inline void intel_overlay_reset(struct intel_display *display) { } #endif diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c index f42f21632306..c2fe3fc78e76 100644 --- a/drivers/gpu/drm/i915/gt/intel_reset.c +++ b/drivers/gpu/drm/i915/gt/intel_reset.c @@ -1198,6 +1198,7 @@ void intel_gt_reset(struct intel_gt *gt, intel_engine_mask_t stalled_mask, const char *reason) { + struct intel_display *display = >->i915->display; intel_engine_mask_t awake; int ret; @@ -1243,7 +1244,7 @@ void intel_gt_reset(struct intel_gt *gt, if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display) intel_irq_resume(gt->i915); - intel_overlay_reset(gt->i915); + intel_overlay_reset(display); /* sanitize uC after engine reset */ if (!intel_uc_uses_guc_submission(>->uc)) -- 2.39.5 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 1/5] drm/i915/overlay: convert to struct intel_display 2024-11-11 17:53 ` [PATCH 1/5] drm/i915/overlay: convert to struct intel_display Jani Nikula @ 2024-11-12 20:40 ` Rodrigo Vivi 2024-11-13 8:26 ` Jani Nikula 0 siblings, 1 reply; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-12 20:40 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Mon, Nov 11, 2024 at 07:53:30PM +0200, Jani Nikula wrote: > struct intel_display replaces struct drm_i915_private as the main > display device pointer. Convert overlay to it, as much as possible. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > .../drm/i915/display/intel_display_driver.c | 4 +- > drivers/gpu/drm/i915/display/intel_overlay.c | 179 +++++++++--------- > drivers/gpu/drm/i915/display/intel_overlay.h | 14 +- > drivers/gpu/drm/i915/gt/intel_reset.c | 3 +- > 4 files changed, 102 insertions(+), 98 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c > index 56b78cf6b854..5983570b510f 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_driver.c > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -518,7 +518,7 @@ int intel_display_driver_probe(struct drm_i915_private *i915) > if (ret) > drm_dbg_kms(&i915->drm, "Initial modeset failed, %d\n", ret); > > - intel_overlay_setup(i915); > + intel_overlay_setup(display); > > /* Only enable hotplug handling once the fbdev is fully set up. */ > intel_hpd_init(i915); > @@ -607,7 +607,7 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915) > > intel_dp_tunnel_mgr_cleanup(display); > > - intel_overlay_cleanup(i915); > + intel_overlay_cleanup(display); > > intel_gmbus_teardown(display); > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c > index 2ec14096ba9c..57eaf81651c4 100644 > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > @@ -183,7 +183,7 @@ struct overlay_registers { > }; > > struct intel_overlay { > - struct drm_i915_private *i915; > + struct intel_display *display; > struct intel_context *context; > struct intel_crtc *crtc; > struct i915_vma *vma; > @@ -205,17 +205,17 @@ struct intel_overlay { > void (*flip_complete)(struct intel_overlay *ovl); > }; > > -static void i830_overlay_clock_gating(struct drm_i915_private *dev_priv, > +static void i830_overlay_clock_gating(struct intel_display *display, > bool enable) > { > - struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev); > + struct pci_dev *pdev = to_pci_dev(display->drm->dev); > u8 val; > > /* WA_OVERLAY_CLKGATE:alm */ > if (enable) > - intel_de_write(dev_priv, DSPCLK_GATE_D(dev_priv), 0); > + intel_de_write(display, DSPCLK_GATE_D(display), 0); > else > - intel_de_write(dev_priv, DSPCLK_GATE_D(dev_priv), > + intel_de_write(display, DSPCLK_GATE_D(display), > OVRUNIT_CLOCK_GATE_DISABLE); > > /* WA_DISABLE_L2CACHE_CLOCK_GATING:alm */ > @@ -253,11 +253,11 @@ alloc_request(struct intel_overlay *overlay, void (*fn)(struct intel_overlay *)) > /* overlay needs to be disable in OCMD reg */ > static int intel_overlay_on(struct intel_overlay *overlay) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > struct i915_request *rq; > u32 *cs; > > - drm_WARN_ON(&dev_priv->drm, overlay->active); > + drm_WARN_ON(display->drm, overlay->active); > > rq = alloc_request(overlay, NULL); > if (IS_ERR(rq)) > @@ -271,8 +271,8 @@ static int intel_overlay_on(struct intel_overlay *overlay) > > overlay->active = true; > > - if (IS_I830(dev_priv)) > - i830_overlay_clock_gating(dev_priv, false); > + if (display->platform.i830) > + i830_overlay_clock_gating(display, false); > > *cs++ = MI_OVERLAY_FLIP | MI_OVERLAY_ON; > *cs++ = overlay->flip_addr | OFC_UPDATE; > @@ -288,10 +288,12 @@ static int intel_overlay_on(struct intel_overlay *overlay) > static void intel_overlay_flip_prepare(struct intel_overlay *overlay, > struct i915_vma *vma) > { > + struct intel_display *display = overlay->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > enum pipe pipe = overlay->crtc->pipe; > struct intel_frontbuffer *frontbuffer = NULL; > > - drm_WARN_ON(&overlay->i915->drm, overlay->old_vma); > + drm_WARN_ON(display->drm, overlay->old_vma); > > if (vma) > frontbuffer = intel_frontbuffer_get(intel_bo_to_drm_bo(vma->obj)); > @@ -303,8 +305,7 @@ static void intel_overlay_flip_prepare(struct intel_overlay *overlay, > intel_frontbuffer_put(overlay->frontbuffer); > overlay->frontbuffer = frontbuffer; > > - intel_frontbuffer_flip_prepare(overlay->i915, > - INTEL_FRONTBUFFER_OVERLAY(pipe)); > + intel_frontbuffer_flip_prepare(i915, INTEL_FRONTBUFFER_OVERLAY(pipe)); > > overlay->old_vma = overlay->vma; > if (vma) > @@ -318,20 +319,20 @@ static int intel_overlay_continue(struct intel_overlay *overlay, > struct i915_vma *vma, > bool load_polyphase_filter) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > struct i915_request *rq; > u32 flip_addr = overlay->flip_addr; > u32 tmp, *cs; > > - drm_WARN_ON(&dev_priv->drm, !overlay->active); > + drm_WARN_ON(display->drm, !overlay->active); > > if (load_polyphase_filter) > flip_addr |= OFC_UPDATE; > > /* check for underruns */ > - tmp = intel_de_read(dev_priv, DOVSTA); > + tmp = intel_de_read(display, DOVSTA); > if (tmp & (1 << 17)) > - drm_dbg(&dev_priv->drm, "overlay underrun, DOVSTA: %x\n", tmp); > + drm_dbg(display->drm, "overlay underrun, DOVSTA: %x\n", tmp); > > rq = alloc_request(overlay, NULL); > if (IS_ERR(rq)) > @@ -355,14 +356,15 @@ static int intel_overlay_continue(struct intel_overlay *overlay, > > static void intel_overlay_release_old_vma(struct intel_overlay *overlay) > { > + struct intel_display *display = overlay->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > struct i915_vma *vma; > > vma = fetch_and_zero(&overlay->old_vma); > - if (drm_WARN_ON(&overlay->i915->drm, !vma)) > + if (drm_WARN_ON(display->drm, !vma)) > return; > > - intel_frontbuffer_flip_complete(overlay->i915, > - INTEL_FRONTBUFFER_OVERLAY(overlay->crtc->pipe)); > + intel_frontbuffer_flip_complete(i915, INTEL_FRONTBUFFER_OVERLAY(overlay->crtc->pipe)); > > i915_vma_unpin(vma); > i915_vma_put(vma); > @@ -376,7 +378,7 @@ intel_overlay_release_old_vid_tail(struct intel_overlay *overlay) > > static void intel_overlay_off_tail(struct intel_overlay *overlay) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > > intel_overlay_release_old_vma(overlay); > > @@ -384,8 +386,8 @@ static void intel_overlay_off_tail(struct intel_overlay *overlay) > overlay->crtc = NULL; > overlay->active = false; > > - if (IS_I830(dev_priv)) > - i830_overlay_clock_gating(dev_priv, true); > + if (display->platform.i830) > + i830_overlay_clock_gating(display, true); > } > > static void intel_overlay_last_flip_retire(struct i915_active *active) > @@ -400,10 +402,11 @@ static void intel_overlay_last_flip_retire(struct i915_active *active) > /* overlay needs to be disabled in OCMD reg */ > static int intel_overlay_off(struct intel_overlay *overlay) > { > + struct intel_display *display = overlay->display; > struct i915_request *rq; > u32 *cs, flip_addr = overlay->flip_addr; > > - drm_WARN_ON(&overlay->i915->drm, !overlay->active); > + drm_WARN_ON(display->drm, !overlay->active); > > /* According to intel docs the overlay hw may hang (when switching > * off) without loading the filter coeffs. It is however unclear whether > @@ -452,7 +455,7 @@ static int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay) > */ > static int intel_overlay_release_old_vid(struct intel_overlay *overlay) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > struct i915_request *rq; > u32 *cs; > > @@ -463,7 +466,7 @@ static int intel_overlay_release_old_vid(struct intel_overlay *overlay) > if (!overlay->old_vma) > return 0; > > - if (!(intel_de_read(dev_priv, GEN2_ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT)) { > + if (!(intel_de_read(display, GEN2_ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT)) { > intel_overlay_release_old_vid_tail(overlay); > return 0; > } > @@ -487,9 +490,9 @@ static int intel_overlay_release_old_vid(struct intel_overlay *overlay) > return i915_active_wait(&overlay->last_flip); > } > > -void intel_overlay_reset(struct drm_i915_private *dev_priv) > +void intel_overlay_reset(struct intel_display *display) > { > - struct intel_overlay *overlay = dev_priv->display.overlay; > + struct intel_overlay *overlay = display->overlay; > > if (!overlay) > return; > @@ -550,11 +553,11 @@ static int uv_vsubsampling(u32 format) > } > } > > -static u32 calc_swidthsw(struct drm_i915_private *dev_priv, u32 offset, u32 width) > +static u32 calc_swidthsw(struct intel_display *display, u32 offset, u32 width) > { > u32 sw; > > - if (DISPLAY_VER(dev_priv) == 2) > + if (DISPLAY_VER(display) == 2) > sw = ALIGN((offset & 31) + width, 32); > else > sw = ALIGN((offset & 63) + width, 64); > @@ -789,16 +792,17 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > struct drm_i915_gem_object *new_bo, > struct drm_intel_overlay_put_image *params) > { > + struct intel_display *display = overlay->display; > + struct drm_i915_private *dev_priv = to_i915(display->drm); > struct overlay_registers __iomem *regs = overlay->regs; > - struct drm_i915_private *dev_priv = overlay->i915; > u32 swidth, swidthsw, sheight, ostride; > enum pipe pipe = overlay->crtc->pipe; > bool scale_changed = false; > struct i915_vma *vma; > int ret, tmp_width; > > - drm_WARN_ON(&dev_priv->drm, > - !drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex)); > + drm_WARN_ON(display->drm, > + !drm_modeset_is_locked(&display->drm->mode_config.connection_mutex)); > > ret = intel_overlay_release_old_vid(overlay); > if (ret != 0) > @@ -824,7 +828,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > oconfig |= OCONF_CC_OUT_8BIT; > if (crtc_state->gamma_enable) > oconfig |= OCONF_GAMMA2_ENABLE; > - if (DISPLAY_VER(dev_priv) == 4) > + if (DISPLAY_VER(display) == 4) > oconfig |= OCONF_CSC_MODE_BT709; > oconfig |= pipe == 0 ? > OCONF_PIPE_A : OCONF_PIPE_B; > @@ -845,7 +849,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > tmp_width = params->src_width; > > swidth = params->src_width; > - swidthsw = calc_swidthsw(dev_priv, params->offset_Y, tmp_width); > + swidthsw = calc_swidthsw(display, params->offset_Y, tmp_width); > sheight = params->src_height; > iowrite32(i915_ggtt_offset(vma) + params->offset_Y, ®s->OBUF_0Y); > ostride = params->stride_Y; > @@ -858,9 +862,9 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > swidth |= (params->src_width / uv_hscale) << 16; > sheight |= (params->src_height / uv_vscale) << 16; > > - tmp_U = calc_swidthsw(dev_priv, params->offset_U, > + tmp_U = calc_swidthsw(display, params->offset_U, > params->src_width / uv_hscale); > - tmp_V = calc_swidthsw(dev_priv, params->offset_V, > + tmp_V = calc_swidthsw(display, params->offset_V, > params->src_width / uv_hscale); > swidthsw |= max(tmp_U, tmp_V) << 16; > > @@ -899,11 +903,11 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay, > > int intel_overlay_switch_off(struct intel_overlay *overlay) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > int ret; > > - drm_WARN_ON(&dev_priv->drm, > - !drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex)); > + drm_WARN_ON(display->drm, > + !drm_modeset_is_locked(&display->drm->mode_config.connection_mutex)); > > ret = intel_overlay_recover_from_interrupt(overlay); > if (ret != 0) > @@ -936,26 +940,24 @@ static int check_overlay_possible_on_crtc(struct intel_overlay *overlay, > > static void update_pfit_vscale_ratio(struct intel_overlay *overlay) > { > - struct drm_i915_private *dev_priv = overlay->i915; > + struct intel_display *display = overlay->display; > u32 ratio; > > /* XXX: This is not the same logic as in the xorg driver, but more in > * line with the intel documentation for the i965 > */ > - if (DISPLAY_VER(dev_priv) >= 4) { > - u32 tmp = intel_de_read(dev_priv, PFIT_PGM_RATIOS(dev_priv)); > + if (DISPLAY_VER(display) >= 4) { > + u32 tmp = intel_de_read(display, PFIT_PGM_RATIOS(display)); > > /* on i965 use the PGM reg to read out the autoscaler values */ > ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, tmp); > } else { > u32 tmp; > > - if (intel_de_read(dev_priv, PFIT_CONTROL(dev_priv)) & PFIT_VERT_AUTO_SCALE) > - tmp = intel_de_read(dev_priv, > - PFIT_AUTO_RATIOS(dev_priv)); > + if (intel_de_read(display, PFIT_CONTROL(display)) & PFIT_VERT_AUTO_SCALE) > + tmp = intel_de_read(display, PFIT_AUTO_RATIOS(display)); > else > - tmp = intel_de_read(dev_priv, > - PFIT_PGM_RATIOS(dev_priv)); > + tmp = intel_de_read(display, PFIT_PGM_RATIOS(display)); > > ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, tmp); > } > @@ -1000,7 +1002,7 @@ static int check_overlay_scaling(struct drm_intel_overlay_put_image *rec) > return 0; > } > > -static int check_overlay_src(struct drm_i915_private *dev_priv, > +static int check_overlay_src(struct intel_display *display, > struct drm_intel_overlay_put_image *rec, > struct drm_i915_gem_object *new_bo) > { > @@ -1011,7 +1013,7 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, > u32 tmp; > > /* check src dimensions */ > - if (IS_I845G(dev_priv) || IS_I830(dev_priv)) { > + if (display->platform.i845g || display->platform.i830) { > if (rec->src_height > IMAGE_MAX_HEIGHT_LEGACY || > rec->src_width > IMAGE_MAX_WIDTH_LEGACY) > return -EINVAL; > @@ -1063,14 +1065,14 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, > return -EINVAL; > > /* stride checking */ > - if (IS_I830(dev_priv) || IS_I845G(dev_priv)) > + if (display->platform.i830 || display->platform.i845g) > stride_mask = 255; > else > stride_mask = 63; > > if (rec->stride_Y & stride_mask || rec->stride_UV & stride_mask) > return -EINVAL; > - if (DISPLAY_VER(dev_priv) == 4 && rec->stride_Y < 512) > + if (DISPLAY_VER(display) == 4 && rec->stride_Y < 512) > return -EINVAL; > > tmp = (rec->flags & I915_OVERLAY_TYPE_MASK) == I915_OVERLAY_YUV_PLANAR ? > @@ -1114,17 +1116,17 @@ static int check_overlay_src(struct drm_i915_private *dev_priv, > int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv) > { > + struct intel_display *display = to_intel_display(dev); > struct drm_intel_overlay_put_image *params = data; > - struct drm_i915_private *dev_priv = to_i915(dev); > struct intel_overlay *overlay; > struct drm_crtc *drmmode_crtc; > struct intel_crtc *crtc; > struct drm_i915_gem_object *new_bo; > int ret; > > - overlay = dev_priv->display.overlay; > + overlay = display->overlay; > if (!overlay) { > - drm_dbg(&dev_priv->drm, "userspace bug: no overlay\n"); > + drm_dbg(display->drm, "userspace bug: no overlay\n"); > return -ENODEV; > } > > @@ -1148,7 +1150,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > drm_modeset_lock_all(dev); > > if (i915_gem_object_is_tiled(new_bo)) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "buffer used for overlay image can not be tiled\n"); > ret = -EINVAL; > goto out_unlock; > @@ -1197,7 +1199,7 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > goto out_unlock; > } > > - ret = check_overlay_src(dev_priv, params, new_bo); > + ret = check_overlay_src(display, params, new_bo); > if (ret != 0) > goto out_unlock; > > @@ -1277,14 +1279,14 @@ static int check_gamma(struct drm_intel_overlay_attrs *attrs) > int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv) > { > + struct intel_display *display = to_intel_display(dev); > struct drm_intel_overlay_attrs *attrs = data; > - struct drm_i915_private *dev_priv = to_i915(dev); > struct intel_overlay *overlay; > int ret; > > - overlay = dev_priv->display.overlay; > + overlay = display->overlay; > if (!overlay) { > - drm_dbg(&dev_priv->drm, "userspace bug: no overlay\n"); > + drm_dbg(display->drm, "userspace bug: no overlay\n"); > return -ENODEV; > } > > @@ -1297,13 +1299,13 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > attrs->contrast = overlay->contrast; > attrs->saturation = overlay->saturation; > > - if (DISPLAY_VER(dev_priv) != 2) { > - attrs->gamma0 = intel_de_read(dev_priv, OGAMC0); > - attrs->gamma1 = intel_de_read(dev_priv, OGAMC1); > - attrs->gamma2 = intel_de_read(dev_priv, OGAMC2); > - attrs->gamma3 = intel_de_read(dev_priv, OGAMC3); > - attrs->gamma4 = intel_de_read(dev_priv, OGAMC4); > - attrs->gamma5 = intel_de_read(dev_priv, OGAMC5); > + if (DISPLAY_VER(display) != 2) { > + attrs->gamma0 = intel_de_read(display, OGAMC0); > + attrs->gamma1 = intel_de_read(display, OGAMC1); > + attrs->gamma2 = intel_de_read(display, OGAMC2); > + attrs->gamma3 = intel_de_read(display, OGAMC3); > + attrs->gamma4 = intel_de_read(display, OGAMC4); > + attrs->gamma5 = intel_de_read(display, OGAMC5); > } > } else { > if (attrs->brightness < -128 || attrs->brightness > 127) > @@ -1321,7 +1323,7 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > update_reg_attrs(overlay, overlay->regs); > > if (attrs->flags & I915_OVERLAY_UPDATE_GAMMA) { > - if (DISPLAY_VER(dev_priv) == 2) > + if (DISPLAY_VER(display) == 2) > goto out_unlock; > > if (overlay->active) { > @@ -1333,12 +1335,12 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > if (ret) > goto out_unlock; > > - intel_de_write(dev_priv, OGAMC0, attrs->gamma0); > - intel_de_write(dev_priv, OGAMC1, attrs->gamma1); > - intel_de_write(dev_priv, OGAMC2, attrs->gamma2); > - intel_de_write(dev_priv, OGAMC3, attrs->gamma3); > - intel_de_write(dev_priv, OGAMC4, attrs->gamma4); > - intel_de_write(dev_priv, OGAMC5, attrs->gamma5); > + intel_de_write(display, OGAMC0, attrs->gamma0); > + intel_de_write(display, OGAMC1, attrs->gamma1); > + intel_de_write(display, OGAMC2, attrs->gamma2); > + intel_de_write(display, OGAMC3, attrs->gamma3); > + intel_de_write(display, OGAMC4, attrs->gamma4); > + intel_de_write(display, OGAMC5, attrs->gamma5); > } > } > overlay->color_key_enabled = (attrs->flags & I915_OVERLAY_DISABLE_DEST_COLORKEY) == 0; > @@ -1352,12 +1354,13 @@ int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > > static int get_registers(struct intel_overlay *overlay, bool use_phys) > { > - struct drm_i915_private *i915 = overlay->i915; > + struct intel_display *display = overlay->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > struct drm_i915_gem_object *obj = ERR_PTR(-ENODEV); > struct i915_vma *vma; > int err; > > - if (!IS_METEORLAKE(i915)) /* Wa_22018444074 */ > + if (!display->platform.meteorlake) /* Wa_22018444074 */ > obj = i915_gem_object_create_stolen(i915, PAGE_SIZE); > if (IS_ERR(obj)) > obj = i915_gem_object_create_internal(i915, PAGE_SIZE); > @@ -1390,13 +1393,14 @@ static int get_registers(struct intel_overlay *overlay, bool use_phys) > return err; > } > > -void intel_overlay_setup(struct drm_i915_private *dev_priv) > +void intel_overlay_setup(struct intel_display *display) > { > + struct drm_i915_private *dev_priv = to_i915(display->drm); > struct intel_overlay *overlay; > struct intel_engine_cs *engine; > int ret; > > - if (!HAS_OVERLAY(dev_priv)) > + if (!HAS_OVERLAY(display)) > return; > > engine = to_gt(dev_priv)->engine[RCS0]; > @@ -1407,7 +1411,7 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) > if (!overlay) > return; > > - overlay->i915 = dev_priv; > + overlay->display = display; > overlay->context = engine->kernel_context; > overlay->color_key = 0x0101fe; > overlay->color_key_enabled = true; > @@ -1418,7 +1422,7 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) > i915_active_init(&overlay->last_flip, > NULL, intel_overlay_last_flip_retire, 0); > > - ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(dev_priv)); > + ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(display)); I thought that you were converting the macros separately... but if this is working, no hard feelings Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > if (ret) > goto out_free; > > @@ -1426,19 +1430,19 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) > update_polyphase_filter(overlay->regs); > update_reg_attrs(overlay, overlay->regs); > > - dev_priv->display.overlay = overlay; > - drm_info(&dev_priv->drm, "Initialized overlay support.\n"); > + display->overlay = overlay; > + drm_info(display->drm, "Initialized overlay support.\n"); > return; > > out_free: > kfree(overlay); > } > > -void intel_overlay_cleanup(struct drm_i915_private *dev_priv) > +void intel_overlay_cleanup(struct intel_display *display) > { > struct intel_overlay *overlay; > > - overlay = fetch_and_zero(&dev_priv->display.overlay); > + overlay = fetch_and_zero(&display->overlay); > if (!overlay) > return; > > @@ -1447,7 +1451,7 @@ void intel_overlay_cleanup(struct drm_i915_private *dev_priv) > * Furthermore modesetting teardown happens beforehand so the > * hardware should be off already. > */ > - drm_WARN_ON(&dev_priv->drm, overlay->active); > + drm_WARN_ON(display->drm, overlay->active); > > i915_gem_object_put(overlay->reg_bo); > i915_active_fini(&overlay->last_flip); > @@ -1467,8 +1471,7 @@ struct intel_overlay_snapshot { > struct intel_overlay_snapshot * > intel_overlay_snapshot_capture(struct intel_display *display) > { > - struct drm_i915_private *dev_priv = to_i915(display->drm); > - struct intel_overlay *overlay = dev_priv->display.overlay; > + struct intel_overlay *overlay = display->overlay; > struct intel_overlay_snapshot *error; > > if (!overlay || !overlay->active) > @@ -1478,8 +1481,8 @@ intel_overlay_snapshot_capture(struct intel_display *display) > if (error == NULL) > return NULL; > > - error->dovsta = intel_de_read(dev_priv, DOVSTA); > - error->isr = intel_de_read(dev_priv, GEN2_ISR); > + error->dovsta = intel_de_read(display, DOVSTA); > + error->isr = intel_de_read(display, GEN2_ISR); > error->base = overlay->flip_addr; > > memcpy_fromio(&error->regs, overlay->regs, sizeof(error->regs)); > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.h b/drivers/gpu/drm/i915/display/intel_overlay.h > index eafac24d1de8..dc885edf39e6 100644 > --- a/drivers/gpu/drm/i915/display/intel_overlay.h > +++ b/drivers/gpu/drm/i915/display/intel_overlay.h > @@ -17,19 +17,19 @@ struct intel_overlay; > struct intel_overlay_snapshot; > > #ifdef I915 > -void intel_overlay_setup(struct drm_i915_private *dev_priv); > -void intel_overlay_cleanup(struct drm_i915_private *dev_priv); > +void intel_overlay_setup(struct intel_display *display); > +void intel_overlay_cleanup(struct intel_display *display); > int intel_overlay_switch_off(struct intel_overlay *overlay); > int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv); > int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv); > -void intel_overlay_reset(struct drm_i915_private *dev_priv); > +void intel_overlay_reset(struct intel_display *display); > #else > -static inline void intel_overlay_setup(struct drm_i915_private *dev_priv) > +static inline void intel_overlay_setup(struct intel_display *display) > { > } > -static inline void intel_overlay_cleanup(struct drm_i915_private *dev_priv) > +static inline void intel_overlay_cleanup(struct intel_display *display) > { > } > static inline int intel_overlay_switch_off(struct intel_overlay *overlay) > @@ -37,7 +37,7 @@ static inline int intel_overlay_switch_off(struct intel_overlay *overlay) > return 0; > } > static inline int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > - struct drm_file *file_priv) > + struct drm_file *file_priv) > { > return 0; > } > @@ -46,7 +46,7 @@ static inline int intel_overlay_attrs_ioctl(struct drm_device *dev, void *data, > { > return 0; > } > -static inline void intel_overlay_reset(struct drm_i915_private *dev_priv) > +static inline void intel_overlay_reset(struct intel_display *display) > { > } > #endif > diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c > index f42f21632306..c2fe3fc78e76 100644 > --- a/drivers/gpu/drm/i915/gt/intel_reset.c > +++ b/drivers/gpu/drm/i915/gt/intel_reset.c > @@ -1198,6 +1198,7 @@ void intel_gt_reset(struct intel_gt *gt, > intel_engine_mask_t stalled_mask, > const char *reason) > { > + struct intel_display *display = >->i915->display; > intel_engine_mask_t awake; > int ret; > > @@ -1243,7 +1244,7 @@ void intel_gt_reset(struct intel_gt *gt, > if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display) > intel_irq_resume(gt->i915); > > - intel_overlay_reset(gt->i915); > + intel_overlay_reset(display); > > /* sanitize uC after engine reset */ > if (!intel_uc_uses_guc_submission(>->uc)) > -- > 2.39.5 > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 1/5] drm/i915/overlay: convert to struct intel_display 2024-11-12 20:40 ` Rodrigo Vivi @ 2024-11-13 8:26 ` Jani Nikula 0 siblings, 0 replies; 25+ messages in thread From: Jani Nikula @ 2024-11-13 8:26 UTC (permalink / raw) To: Rodrigo Vivi; +Cc: intel-gfx, intel-xe On Tue, 12 Nov 2024, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > On Mon, Nov 11, 2024 at 07:53:30PM +0200, Jani Nikula wrote: >> @@ -1418,7 +1422,7 @@ void intel_overlay_setup(struct drm_i915_private *dev_priv) >> i915_active_init(&overlay->last_flip, >> NULL, intel_overlay_last_flip_retire, 0); >> >> - ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(dev_priv)); >> + ret = get_registers(overlay, OVERLAY_NEEDS_PHYSICAL(display)); > > I thought that you were converting the macros separately... > but if this is working, no hard feelings I only converted the ones that actually needed dev_priv, and couldn't use generics. They now accept display only. This one uses generics and can take either. > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Thanks, Jani. -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula 2024-11-11 17:53 ` [PATCH 1/5] drm/i915/overlay: convert to struct intel_display Jani Nikula @ 2024-11-11 17:53 ` Jani Nikula 2024-11-14 17:51 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display Jani Nikula ` (11 subsequent siblings) 13 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula Avoid accessing struct intel_display members directly from i915_getparam_ioctl(). Add intel_overlay_available() function to provide the information for I915_PARAM_HAS_OVERLAY. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/display/intel_overlay.c | 5 +++++ drivers/gpu/drm/i915/display/intel_overlay.h | 5 +++++ drivers/gpu/drm/i915/i915_getparam.c | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c index 57eaf81651c4..ca30fff61876 100644 --- a/drivers/gpu/drm/i915/display/intel_overlay.c +++ b/drivers/gpu/drm/i915/display/intel_overlay.c @@ -1438,6 +1438,11 @@ void intel_overlay_setup(struct intel_display *display) kfree(overlay); } +bool intel_overlay_available(struct intel_display *display) +{ + return display->overlay; +} + void intel_overlay_cleanup(struct intel_display *display) { struct intel_overlay *overlay; diff --git a/drivers/gpu/drm/i915/display/intel_overlay.h b/drivers/gpu/drm/i915/display/intel_overlay.h index dc885edf39e6..45a42fce754e 100644 --- a/drivers/gpu/drm/i915/display/intel_overlay.h +++ b/drivers/gpu/drm/i915/display/intel_overlay.h @@ -18,6 +18,7 @@ struct intel_overlay_snapshot; #ifdef I915 void intel_overlay_setup(struct intel_display *display); +bool intel_overlay_available(struct intel_display *display); void intel_overlay_cleanup(struct intel_display *display); int intel_overlay_switch_off(struct intel_overlay *overlay); int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, @@ -29,6 +30,10 @@ void intel_overlay_reset(struct intel_display *display); static inline void intel_overlay_setup(struct intel_display *display) { } +static inline bool intel_overlay_available(struct intel_display *display) +{ + return false; +} static inline void intel_overlay_cleanup(struct intel_display *display) { } diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c index a62405787e77..be8149e46281 100644 --- a/drivers/gpu/drm/i915/i915_getparam.c +++ b/drivers/gpu/drm/i915/i915_getparam.c @@ -2,9 +2,9 @@ * SPDX-License-Identifier: MIT */ +#include "display/intel_overlay.h" #include "gem/i915_gem_mman.h" #include "gt/intel_engine_user.h" - #include "pxp/intel_pxp.h" #include "i915_cmd_parser.h" @@ -16,6 +16,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { struct drm_i915_private *i915 = to_i915(dev); + struct intel_display *display = &i915->display; struct pci_dev *pdev = to_pci_dev(dev->dev); const struct sseu_dev_info *sseu = &to_gt(i915)->info.sseu; drm_i915_getparam_t *param = data; @@ -38,7 +39,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, value = to_gt(i915)->ggtt->num_fences; break; case I915_PARAM_HAS_OVERLAY: - value = !!i915->display.overlay; + value = intel_overlay_available(display); break; case I915_PARAM_HAS_BSD: value = !!intel_engine_lookup_user(i915, -- 2.39.5 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it 2024-11-11 17:53 ` [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it Jani Nikula @ 2024-11-14 17:51 ` Rodrigo Vivi 0 siblings, 0 replies; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-14 17:51 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Mon, Nov 11, 2024 at 07:53:31PM +0200, Jani Nikula wrote: > Avoid accessing struct intel_display members directly from > i915_getparam_ioctl(). Add intel_overlay_available() function to provide > the information for I915_PARAM_HAS_OVERLAY. > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/display/intel_overlay.c | 5 +++++ > drivers/gpu/drm/i915/display/intel_overlay.h | 5 +++++ > drivers/gpu/drm/i915/i915_getparam.c | 5 +++-- > 3 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c > index 57eaf81651c4..ca30fff61876 100644 > --- a/drivers/gpu/drm/i915/display/intel_overlay.c > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c > @@ -1438,6 +1438,11 @@ void intel_overlay_setup(struct intel_display *display) > kfree(overlay); > } > > +bool intel_overlay_available(struct intel_display *display) > +{ > + return display->overlay; > +} > + > void intel_overlay_cleanup(struct intel_display *display) > { > struct intel_overlay *overlay; > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.h b/drivers/gpu/drm/i915/display/intel_overlay.h > index dc885edf39e6..45a42fce754e 100644 > --- a/drivers/gpu/drm/i915/display/intel_overlay.h > +++ b/drivers/gpu/drm/i915/display/intel_overlay.h > @@ -18,6 +18,7 @@ struct intel_overlay_snapshot; > > #ifdef I915 > void intel_overlay_setup(struct intel_display *display); > +bool intel_overlay_available(struct intel_display *display); > void intel_overlay_cleanup(struct intel_display *display); > int intel_overlay_switch_off(struct intel_overlay *overlay); > int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data, > @@ -29,6 +30,10 @@ void intel_overlay_reset(struct intel_display *display); > static inline void intel_overlay_setup(struct intel_display *display) > { > } > +static inline bool intel_overlay_available(struct intel_display *display) > +{ > + return false; > +} > static inline void intel_overlay_cleanup(struct intel_display *display) > { > } > diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c > index a62405787e77..be8149e46281 100644 > --- a/drivers/gpu/drm/i915/i915_getparam.c > +++ b/drivers/gpu/drm/i915/i915_getparam.c > @@ -2,9 +2,9 @@ > * SPDX-License-Identifier: MIT > */ > > +#include "display/intel_overlay.h" > #include "gem/i915_gem_mman.h" > #include "gt/intel_engine_user.h" > - > #include "pxp/intel_pxp.h" > > #include "i915_cmd_parser.h" > @@ -16,6 +16,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv) > { > struct drm_i915_private *i915 = to_i915(dev); > + struct intel_display *display = &i915->display; > struct pci_dev *pdev = to_pci_dev(dev->dev); > const struct sseu_dev_info *sseu = &to_gt(i915)->info.sseu; > drm_i915_getparam_t *param = data; > @@ -38,7 +39,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, > value = to_gt(i915)->ggtt->num_fences; > break; > case I915_PARAM_HAS_OVERLAY: > - value = !!i915->display.overlay; > + value = intel_overlay_available(display); > break; > case I915_PARAM_HAS_BSD: > value = !!intel_engine_lookup_user(i915, > -- > 2.39.5 > ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula 2024-11-11 17:53 ` [PATCH 1/5] drm/i915/overlay: convert to struct intel_display Jani Nikula 2024-11-11 17:53 ` [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it Jani Nikula @ 2024-11-11 17:53 ` Jani Nikula 2024-11-14 17:52 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access Jani Nikula ` (10 subsequent siblings) 13 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula struct intel_display replaces struct drm_i915_private as the main display device pointer. Convert initial plane setup to it, as much as possible. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- .../drm/i915/display/intel_display_driver.c | 2 +- .../drm/i915/display/intel_plane_initial.c | 56 ++++++++++--------- .../drm/i915/display/intel_plane_initial.h | 4 +- drivers/gpu/drm/xe/display/xe_plane_initial.c | 8 +-- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c index 5983570b510f..8daf48d2ba7d 100644 --- a/drivers/gpu/drm/i915/display/intel_display_driver.c +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c @@ -472,7 +472,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915) intel_acpi_assign_connector_fwnodes(display); drm_modeset_unlock_all(dev); - intel_initial_plane_config(i915); + intel_initial_plane_config(display); /* * Make sure hardware watermarks really match the state we read out. diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c index 62401f6a04e4..6789b7f14095 100644 --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c @@ -20,10 +20,10 @@ intel_reuse_initial_plane_obj(struct intel_crtc *this, struct drm_framebuffer **fb, struct i915_vma **vma) { - struct drm_i915_private *i915 = to_i915(this->base.dev); + struct intel_display *display = to_intel_display(this); struct intel_crtc *crtc; - for_each_intel_crtc(&i915->drm, crtc) { + for_each_intel_crtc(display->drm, crtc) { struct intel_plane *plane = to_intel_plane(crtc->base.primary); const struct intel_plane_state *plane_state = @@ -48,9 +48,10 @@ intel_reuse_initial_plane_obj(struct intel_crtc *this, } static bool -initial_plane_phys_lmem(struct drm_i915_private *i915, +initial_plane_phys_lmem(struct intel_display *display, struct intel_initial_plane_config *plane_config) { + struct drm_i915_private *i915 = to_i915(display->drm); gen8_pte_t __iomem *gte = to_gt(i915)->ggtt->gsm; struct intel_memory_region *mem; dma_addr_t dma_addr; @@ -63,7 +64,7 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, pte = ioread64(gte); if (!(pte & GEN12_GGTT_PTE_LM)) { - drm_err(&i915->drm, + drm_err(display->drm, "Initial plane programming missing PTE_LM bit\n"); return false; } @@ -75,7 +76,7 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, else mem = i915->mm.stolen_region; if (!mem) { - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "Initial plane memory region not initialized\n"); return false; } @@ -85,13 +86,13 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, * ever be placed in the stolen portion. */ if (dma_addr < mem->region.start || dma_addr > mem->region.end) { - drm_err(&i915->drm, + drm_err(display->drm, "Initial plane programming using invalid range, dma_addr=%pa (%s [%pa-%pa])\n", &dma_addr, mem->region.name, &mem->region.start, &mem->region.end); return false; } - drm_dbg(&i915->drm, + drm_dbg(display->drm, "Using dma_addr=%pa, based on initial plane programming\n", &dma_addr); @@ -102,9 +103,10 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, } static bool -initial_plane_phys_smem(struct drm_i915_private *i915, +initial_plane_phys_smem(struct intel_display *display, struct intel_initial_plane_config *plane_config) { + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_memory_region *mem; u32 base; @@ -112,7 +114,7 @@ initial_plane_phys_smem(struct drm_i915_private *i915, mem = i915->mm.stolen_region; if (!mem) { - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "Initial plane memory region not initialized\n"); return false; } @@ -125,19 +127,22 @@ initial_plane_phys_smem(struct drm_i915_private *i915, } static bool -initial_plane_phys(struct drm_i915_private *i915, +initial_plane_phys(struct intel_display *display, struct intel_initial_plane_config *plane_config) { + struct drm_i915_private *i915 = to_i915(display->drm); + if (IS_DGFX(i915) || HAS_LMEMBAR_SMEM_STOLEN(i915)) - return initial_plane_phys_lmem(i915, plane_config); + return initial_plane_phys_lmem(display, plane_config); else - return initial_plane_phys_smem(i915, plane_config); + return initial_plane_phys_smem(display, plane_config); } static struct i915_vma * -initial_plane_vma(struct drm_i915_private *i915, +initial_plane_vma(struct intel_display *display, struct intel_initial_plane_config *plane_config) { + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_memory_region *mem; struct drm_i915_gem_object *obj; struct drm_mm_node orig_mm = {}; @@ -149,7 +154,7 @@ initial_plane_vma(struct drm_i915_private *i915, if (plane_config->size == 0) return NULL; - if (!initial_plane_phys(i915, plane_config)) + if (!initial_plane_phys(display, plane_config)) return NULL; phys_base = plane_config->phys_base; @@ -168,7 +173,7 @@ initial_plane_vma(struct drm_i915_private *i915, if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && mem == i915->mm.stolen_region && size * 2 > i915->dsm.usable_size) { - drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); + drm_dbg_kms(display->drm, "Initial FB size exceeds half of stolen, discarding\n"); return NULL; } @@ -176,7 +181,7 @@ initial_plane_vma(struct drm_i915_private *i915, I915_BO_ALLOC_USER | I915_BO_PREALLOC); if (IS_ERR(obj)) { - drm_dbg_kms(&i915->drm, "Failed to preallocate initial FB in %s\n", + drm_dbg_kms(display->drm, "Failed to preallocate initial FB in %s\n", mem->region.name); return NULL; } @@ -254,7 +259,7 @@ initial_plane_vma(struct drm_i915_private *i915, if (drm_mm_node_allocated(&orig_mm)) drm_mm_remove_node(&orig_mm); - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "Initial plane fb bound to 0x%x in the ggtt (original 0x%x)\n", i915_ggtt_offset(vma), plane_config->base); @@ -271,8 +276,7 @@ static bool intel_alloc_initial_plane_obj(struct intel_crtc *crtc, struct intel_initial_plane_config *plane_config) { - struct drm_device *dev = crtc->base.dev; - struct drm_i915_private *dev_priv = to_i915(dev); + struct intel_display *display = to_intel_display(crtc); struct drm_mode_fb_cmd2 mode_cmd = {}; struct drm_framebuffer *fb = &plane_config->fb->base; struct i915_vma *vma; @@ -284,13 +288,13 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, case I915_FORMAT_MOD_4_TILED: break; default: - drm_dbg(&dev_priv->drm, + drm_dbg(display->drm, "Unsupported modifier for initial FB: 0x%llx\n", fb->modifier); return false; } - vma = initial_plane_vma(dev_priv, plane_config); + vma = initial_plane_vma(display, plane_config); if (!vma) return false; @@ -303,7 +307,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, if (intel_framebuffer_init(to_intel_framebuffer(fb), intel_bo_to_drm_bo(vma->obj), &mode_cmd)) { - drm_dbg_kms(&dev_priv->drm, "intel fb init failed\n"); + drm_dbg_kms(display->drm, "intel fb init failed\n"); goto err_vma; } @@ -410,12 +414,12 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) i915_vma_put(plane_config->vma); } -void intel_initial_plane_config(struct drm_i915_private *i915) +void intel_initial_plane_config(struct intel_display *display) { struct intel_initial_plane_config plane_configs[I915_MAX_PIPES] = {}; struct intel_crtc *crtc; - for_each_intel_crtc(&i915->drm, crtc) { + for_each_intel_crtc(display->drm, crtc) { struct intel_initial_plane_config *plane_config = &plane_configs[crtc->pipe]; @@ -429,7 +433,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) * can even allow for smooth boot transitions if the BIOS * fb is large enough for the active pipe configuration. */ - i915->display.funcs.display->get_initial_plane_config(crtc, plane_config); + display->funcs.display->get_initial_plane_config(crtc, plane_config); /* * If the fb is shared between multiple heads, we'll @@ -437,7 +441,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) */ intel_find_initial_plane_obj(crtc, plane_configs); - if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config)) + if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config)) intel_crtc_wait_for_next_vblank(crtc); plane_config_fini(plane_config); diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h index 64ab95239cd4..6c6aa717ed21 100644 --- a/drivers/gpu/drm/i915/display/intel_plane_initial.h +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h @@ -6,8 +6,8 @@ #ifndef __INTEL_PLANE_INITIAL_H__ #define __INTEL_PLANE_INITIAL_H__ -struct drm_i915_private; +struct intel_display; -void intel_initial_plane_config(struct drm_i915_private *i915); +void intel_initial_plane_config(struct intel_display *display); #endif diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c index 8c113463a3d5..2eb9633f163a 100644 --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c @@ -275,12 +275,12 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) } } -void intel_initial_plane_config(struct drm_i915_private *i915) +void intel_initial_plane_config(struct intel_display *display) { struct intel_initial_plane_config plane_configs[I915_MAX_PIPES] = {}; struct intel_crtc *crtc; - for_each_intel_crtc(&i915->drm, crtc) { + for_each_intel_crtc(display->drm, crtc) { struct intel_initial_plane_config *plane_config = &plane_configs[crtc->pipe]; @@ -294,7 +294,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) * can even allow for smooth boot transitions if the BIOS * fb is large enough for the active pipe configuration. */ - i915->display.funcs.display->get_initial_plane_config(crtc, plane_config); + display->funcs.display->get_initial_plane_config(crtc, plane_config); /* * If the fb is shared between multiple heads, we'll @@ -302,7 +302,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) */ intel_find_initial_plane_obj(crtc, plane_configs); - if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config)) + if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config)) intel_crtc_wait_for_next_vblank(crtc); plane_config_fini(plane_config); -- 2.39.5 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display 2024-11-11 17:53 ` [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display Jani Nikula @ 2024-11-14 17:52 ` Rodrigo Vivi 0 siblings, 0 replies; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-14 17:52 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Mon, Nov 11, 2024 at 07:53:32PM +0200, Jani Nikula wrote: > struct intel_display replaces struct drm_i915_private as the main > display device pointer. Convert initial plane setup to it, as much as > possible. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > .../drm/i915/display/intel_display_driver.c | 2 +- > .../drm/i915/display/intel_plane_initial.c | 56 ++++++++++--------- > .../drm/i915/display/intel_plane_initial.h | 4 +- > drivers/gpu/drm/xe/display/xe_plane_initial.c | 8 +-- > 4 files changed, 37 insertions(+), 33 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c > index 5983570b510f..8daf48d2ba7d 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_driver.c > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -472,7 +472,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915) > intel_acpi_assign_connector_fwnodes(display); > drm_modeset_unlock_all(dev); > > - intel_initial_plane_config(i915); > + intel_initial_plane_config(display); > > /* > * Make sure hardware watermarks really match the state we read out. > diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c > index 62401f6a04e4..6789b7f14095 100644 > --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c > +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c > @@ -20,10 +20,10 @@ intel_reuse_initial_plane_obj(struct intel_crtc *this, > struct drm_framebuffer **fb, > struct i915_vma **vma) > { > - struct drm_i915_private *i915 = to_i915(this->base.dev); > + struct intel_display *display = to_intel_display(this); > struct intel_crtc *crtc; > > - for_each_intel_crtc(&i915->drm, crtc) { > + for_each_intel_crtc(display->drm, crtc) { > struct intel_plane *plane = > to_intel_plane(crtc->base.primary); > const struct intel_plane_state *plane_state = > @@ -48,9 +48,10 @@ intel_reuse_initial_plane_obj(struct intel_crtc *this, > } > > static bool > -initial_plane_phys_lmem(struct drm_i915_private *i915, > +initial_plane_phys_lmem(struct intel_display *display, > struct intel_initial_plane_config *plane_config) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > gen8_pte_t __iomem *gte = to_gt(i915)->ggtt->gsm; > struct intel_memory_region *mem; > dma_addr_t dma_addr; > @@ -63,7 +64,7 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, > > pte = ioread64(gte); > if (!(pte & GEN12_GGTT_PTE_LM)) { > - drm_err(&i915->drm, > + drm_err(display->drm, > "Initial plane programming missing PTE_LM bit\n"); > return false; > } > @@ -75,7 +76,7 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, > else > mem = i915->mm.stolen_region; > if (!mem) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Initial plane memory region not initialized\n"); > return false; > } > @@ -85,13 +86,13 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, > * ever be placed in the stolen portion. > */ > if (dma_addr < mem->region.start || dma_addr > mem->region.end) { > - drm_err(&i915->drm, > + drm_err(display->drm, > "Initial plane programming using invalid range, dma_addr=%pa (%s [%pa-%pa])\n", > &dma_addr, mem->region.name, &mem->region.start, &mem->region.end); > return false; > } > > - drm_dbg(&i915->drm, > + drm_dbg(display->drm, > "Using dma_addr=%pa, based on initial plane programming\n", > &dma_addr); > > @@ -102,9 +103,10 @@ initial_plane_phys_lmem(struct drm_i915_private *i915, > } > > static bool > -initial_plane_phys_smem(struct drm_i915_private *i915, > +initial_plane_phys_smem(struct intel_display *display, > struct intel_initial_plane_config *plane_config) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_memory_region *mem; > u32 base; > > @@ -112,7 +114,7 @@ initial_plane_phys_smem(struct drm_i915_private *i915, > > mem = i915->mm.stolen_region; > if (!mem) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Initial plane memory region not initialized\n"); > return false; > } > @@ -125,19 +127,22 @@ initial_plane_phys_smem(struct drm_i915_private *i915, > } > > static bool > -initial_plane_phys(struct drm_i915_private *i915, > +initial_plane_phys(struct intel_display *display, > struct intel_initial_plane_config *plane_config) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > + > if (IS_DGFX(i915) || HAS_LMEMBAR_SMEM_STOLEN(i915)) > - return initial_plane_phys_lmem(i915, plane_config); > + return initial_plane_phys_lmem(display, plane_config); > else > - return initial_plane_phys_smem(i915, plane_config); > + return initial_plane_phys_smem(display, plane_config); > } > > static struct i915_vma * > -initial_plane_vma(struct drm_i915_private *i915, > +initial_plane_vma(struct intel_display *display, > struct intel_initial_plane_config *plane_config) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_memory_region *mem; > struct drm_i915_gem_object *obj; > struct drm_mm_node orig_mm = {}; > @@ -149,7 +154,7 @@ initial_plane_vma(struct drm_i915_private *i915, > if (plane_config->size == 0) > return NULL; > > - if (!initial_plane_phys(i915, plane_config)) > + if (!initial_plane_phys(display, plane_config)) > return NULL; > > phys_base = plane_config->phys_base; > @@ -168,7 +173,7 @@ initial_plane_vma(struct drm_i915_private *i915, > if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) && > mem == i915->mm.stolen_region && > size * 2 > i915->dsm.usable_size) { > - drm_dbg_kms(&i915->drm, "Initial FB size exceeds half of stolen, discarding\n"); > + drm_dbg_kms(display->drm, "Initial FB size exceeds half of stolen, discarding\n"); > return NULL; > } > > @@ -176,7 +181,7 @@ initial_plane_vma(struct drm_i915_private *i915, > I915_BO_ALLOC_USER | > I915_BO_PREALLOC); > if (IS_ERR(obj)) { > - drm_dbg_kms(&i915->drm, "Failed to preallocate initial FB in %s\n", > + drm_dbg_kms(display->drm, "Failed to preallocate initial FB in %s\n", > mem->region.name); > return NULL; > } > @@ -254,7 +259,7 @@ initial_plane_vma(struct drm_i915_private *i915, > if (drm_mm_node_allocated(&orig_mm)) > drm_mm_remove_node(&orig_mm); > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Initial plane fb bound to 0x%x in the ggtt (original 0x%x)\n", > i915_ggtt_offset(vma), plane_config->base); > > @@ -271,8 +276,7 @@ static bool > intel_alloc_initial_plane_obj(struct intel_crtc *crtc, > struct intel_initial_plane_config *plane_config) > { > - struct drm_device *dev = crtc->base.dev; > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct intel_display *display = to_intel_display(crtc); > struct drm_mode_fb_cmd2 mode_cmd = {}; > struct drm_framebuffer *fb = &plane_config->fb->base; > struct i915_vma *vma; > @@ -284,13 +288,13 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, > case I915_FORMAT_MOD_4_TILED: > break; > default: > - drm_dbg(&dev_priv->drm, > + drm_dbg(display->drm, > "Unsupported modifier for initial FB: 0x%llx\n", > fb->modifier); > return false; > } > > - vma = initial_plane_vma(dev_priv, plane_config); > + vma = initial_plane_vma(display, plane_config); > if (!vma) > return false; > > @@ -303,7 +307,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, > > if (intel_framebuffer_init(to_intel_framebuffer(fb), > intel_bo_to_drm_bo(vma->obj), &mode_cmd)) { > - drm_dbg_kms(&dev_priv->drm, "intel fb init failed\n"); > + drm_dbg_kms(display->drm, "intel fb init failed\n"); > goto err_vma; > } > > @@ -410,12 +414,12 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) > i915_vma_put(plane_config->vma); > } > > -void intel_initial_plane_config(struct drm_i915_private *i915) > +void intel_initial_plane_config(struct intel_display *display) > { > struct intel_initial_plane_config plane_configs[I915_MAX_PIPES] = {}; > struct intel_crtc *crtc; > > - for_each_intel_crtc(&i915->drm, crtc) { > + for_each_intel_crtc(display->drm, crtc) { > struct intel_initial_plane_config *plane_config = > &plane_configs[crtc->pipe]; > > @@ -429,7 +433,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) > * can even allow for smooth boot transitions if the BIOS > * fb is large enough for the active pipe configuration. > */ > - i915->display.funcs.display->get_initial_plane_config(crtc, plane_config); > + display->funcs.display->get_initial_plane_config(crtc, plane_config); > > /* > * If the fb is shared between multiple heads, we'll > @@ -437,7 +441,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) > */ > intel_find_initial_plane_obj(crtc, plane_configs); > > - if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config)) > + if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config)) > intel_crtc_wait_for_next_vblank(crtc); > > plane_config_fini(plane_config); > diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h > index 64ab95239cd4..6c6aa717ed21 100644 > --- a/drivers/gpu/drm/i915/display/intel_plane_initial.h > +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h > @@ -6,8 +6,8 @@ > #ifndef __INTEL_PLANE_INITIAL_H__ > #define __INTEL_PLANE_INITIAL_H__ > > -struct drm_i915_private; > +struct intel_display; > > -void intel_initial_plane_config(struct drm_i915_private *i915); > +void intel_initial_plane_config(struct intel_display *display); > > #endif > diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c > index 8c113463a3d5..2eb9633f163a 100644 > --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c > +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c > @@ -275,12 +275,12 @@ static void plane_config_fini(struct intel_initial_plane_config *plane_config) > } > } > > -void intel_initial_plane_config(struct drm_i915_private *i915) > +void intel_initial_plane_config(struct intel_display *display) > { > struct intel_initial_plane_config plane_configs[I915_MAX_PIPES] = {}; > struct intel_crtc *crtc; > > - for_each_intel_crtc(&i915->drm, crtc) { > + for_each_intel_crtc(display->drm, crtc) { > struct intel_initial_plane_config *plane_config = > &plane_configs[crtc->pipe]; > > @@ -294,7 +294,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) > * can even allow for smooth boot transitions if the BIOS > * fb is large enough for the active pipe configuration. > */ > - i915->display.funcs.display->get_initial_plane_config(crtc, plane_config); > + display->funcs.display->get_initial_plane_config(crtc, plane_config); > > /* > * If the fb is shared between multiple heads, we'll > @@ -302,7 +302,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915) > */ > intel_find_initial_plane_obj(crtc, plane_configs); > > - if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config)) > + if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config)) > intel_crtc_wait_for_next_vblank(crtc); > > plane_config_fini(plane_config); > -- > 2.39.5 > ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (2 preceding siblings ...) 2024-11-11 17:53 ` [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display Jani Nikula @ 2024-11-11 17:53 ` Jani Nikula 2024-11-14 17:55 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV Jani Nikula ` (9 subsequent siblings) 13 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula Move the check for display_irqs_enabled within vlv_display_irq_reset() and vlv_display_irq_postinstall() to avoid looking at struct intel_display members within i915 core irq code. Within display irq code, vlv_display_irq_reset() may need to be called with !display_irqs_enabled, so add a small wrapper. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/display/intel_display_irq.c | 15 ++++++++++++--- drivers/gpu/drm/i915/i915_irq.c | 12 ++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c index e1547ebce60e..d5458b0d976b 100644 --- a/drivers/gpu/drm/i915/display/intel_display_irq.c +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c @@ -1479,7 +1479,7 @@ void bdw_disable_vblank(struct drm_crtc *_crtc) schedule_work(&display->irq.vblank_dc_work); } -void vlv_display_irq_reset(struct drm_i915_private *dev_priv) +static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) { struct intel_uncore *uncore = &dev_priv->uncore; @@ -1497,6 +1497,12 @@ void vlv_display_irq_reset(struct drm_i915_private *dev_priv) dev_priv->irq_mask = ~0u; } +void vlv_display_irq_reset(struct drm_i915_private *dev_priv) +{ + if (dev_priv->display.irq.display_irqs_enabled) + _vlv_display_irq_reset(dev_priv); +} + void i9xx_display_irq_reset(struct drm_i915_private *i915) { if (I915_HAS_HOTPLUG(i915)) { @@ -1516,6 +1522,9 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) u32 enable_mask; enum pipe pipe; + if (!dev_priv->display.irq.display_irqs_enabled) + return; + pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; i915_enable_pipestat(dev_priv, PIPE_A, PIPE_GMBUS_INTERRUPT_STATUS); @@ -1694,7 +1703,7 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) dev_priv->display.irq.display_irqs_enabled = true; if (intel_irqs_enabled(dev_priv)) { - vlv_display_irq_reset(dev_priv); + _vlv_display_irq_reset(dev_priv); vlv_display_irq_postinstall(dev_priv); } } @@ -1709,7 +1718,7 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) dev_priv->display.irq.display_irqs_enabled = false; if (intel_irqs_enabled(dev_priv)) - vlv_display_irq_reset(dev_priv); + _vlv_display_irq_reset(dev_priv); } void ilk_de_irq_postinstall(struct drm_i915_private *i915) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index f75cbf5b8a1c..7920ad9585ae 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -658,8 +658,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv) gen5_gt_irq_reset(to_gt(dev_priv)); spin_lock_irq(&dev_priv->irq_lock); - if (dev_priv->display.irq.display_irqs_enabled) - vlv_display_irq_reset(dev_priv); + vlv_display_irq_reset(dev_priv); spin_unlock_irq(&dev_priv->irq_lock); } @@ -723,8 +722,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv) gen2_irq_reset(uncore, GEN8_PCU_IRQ_REGS); spin_lock_irq(&dev_priv->irq_lock); - if (dev_priv->display.irq.display_irqs_enabled) - vlv_display_irq_reset(dev_priv); + vlv_display_irq_reset(dev_priv); spin_unlock_irq(&dev_priv->irq_lock); } @@ -740,8 +738,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv) gen5_gt_irq_postinstall(to_gt(dev_priv)); spin_lock_irq(&dev_priv->irq_lock); - if (dev_priv->display.irq.display_irqs_enabled) - vlv_display_irq_postinstall(dev_priv); + vlv_display_irq_postinstall(dev_priv); spin_unlock_irq(&dev_priv->irq_lock); intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); @@ -794,8 +791,7 @@ static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv) gen8_gt_irq_postinstall(to_gt(dev_priv)); spin_lock_irq(&dev_priv->irq_lock); - if (dev_priv->display.irq.display_irqs_enabled) - vlv_display_irq_postinstall(dev_priv); + vlv_display_irq_postinstall(dev_priv); spin_unlock_irq(&dev_priv->irq_lock); intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL); -- 2.39.5 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access 2024-11-11 17:53 ` [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access Jani Nikula @ 2024-11-14 17:55 ` Rodrigo Vivi 2024-11-15 13:13 ` Jani Nikula 0 siblings, 1 reply; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-14 17:55 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Mon, Nov 11, 2024 at 07:53:33PM +0200, Jani Nikula wrote: > Move the check for display_irqs_enabled within vlv_display_irq_reset() > and vlv_display_irq_postinstall() to avoid looking at struct > intel_display members within i915 core irq code. > > Within display irq code, vlv_display_irq_reset() may need to be called > with !display_irqs_enabled, so add a small wrapper. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/display/intel_display_irq.c | 15 ++++++++++++--- > drivers/gpu/drm/i915/i915_irq.c | 12 ++++-------- > 2 files changed, 16 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c > index e1547ebce60e..d5458b0d976b 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_irq.c > +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c > @@ -1479,7 +1479,7 @@ void bdw_disable_vblank(struct drm_crtc *_crtc) > schedule_work(&display->irq.vblank_dc_work); > } > > -void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > +static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) > { > struct intel_uncore *uncore = &dev_priv->uncore; > > @@ -1497,6 +1497,12 @@ void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > dev_priv->irq_mask = ~0u; > } > > +void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > +{ > + if (dev_priv->display.irq.display_irqs_enabled) > + _vlv_display_irq_reset(dev_priv); > +} > + > void i9xx_display_irq_reset(struct drm_i915_private *i915) > { > if (I915_HAS_HOTPLUG(i915)) { > @@ -1516,6 +1522,9 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) > u32 enable_mask; > enum pipe pipe; > > + if (!dev_priv->display.irq.display_irqs_enabled) > + return; I got confused here. this likely deserves a separate patch? > + > pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; > > i915_enable_pipestat(dev_priv, PIPE_A, PIPE_GMBUS_INTERRUPT_STATUS); > @@ -1694,7 +1703,7 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) > dev_priv->display.irq.display_irqs_enabled = true; > > if (intel_irqs_enabled(dev_priv)) { > - vlv_display_irq_reset(dev_priv); > + _vlv_display_irq_reset(dev_priv); > vlv_display_irq_postinstall(dev_priv); > } > } > @@ -1709,7 +1718,7 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) > dev_priv->display.irq.display_irqs_enabled = false; > > if (intel_irqs_enabled(dev_priv)) > - vlv_display_irq_reset(dev_priv); > + _vlv_display_irq_reset(dev_priv); > } > > void ilk_de_irq_postinstall(struct drm_i915_private *i915) > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index f75cbf5b8a1c..7920ad9585ae 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -658,8 +658,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv) > gen5_gt_irq_reset(to_gt(dev_priv)); > > spin_lock_irq(&dev_priv->irq_lock); > - if (dev_priv->display.irq.display_irqs_enabled) > - vlv_display_irq_reset(dev_priv); > + vlv_display_irq_reset(dev_priv); > spin_unlock_irq(&dev_priv->irq_lock); > } > > @@ -723,8 +722,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv) > gen2_irq_reset(uncore, GEN8_PCU_IRQ_REGS); > > spin_lock_irq(&dev_priv->irq_lock); > - if (dev_priv->display.irq.display_irqs_enabled) > - vlv_display_irq_reset(dev_priv); > + vlv_display_irq_reset(dev_priv); > spin_unlock_irq(&dev_priv->irq_lock); > } > > @@ -740,8 +738,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv) > gen5_gt_irq_postinstall(to_gt(dev_priv)); > > spin_lock_irq(&dev_priv->irq_lock); > - if (dev_priv->display.irq.display_irqs_enabled) > - vlv_display_irq_postinstall(dev_priv); > + vlv_display_irq_postinstall(dev_priv); > spin_unlock_irq(&dev_priv->irq_lock); > > intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); > @@ -794,8 +791,7 @@ static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv) > gen8_gt_irq_postinstall(to_gt(dev_priv)); > > spin_lock_irq(&dev_priv->irq_lock); > - if (dev_priv->display.irq.display_irqs_enabled) > - vlv_display_irq_postinstall(dev_priv); > + vlv_display_irq_postinstall(dev_priv); > spin_unlock_irq(&dev_priv->irq_lock); > > intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL); > -- > 2.39.5 > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access 2024-11-14 17:55 ` Rodrigo Vivi @ 2024-11-15 13:13 ` Jani Nikula 2024-11-15 19:10 ` Rodrigo Vivi 0 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-15 13:13 UTC (permalink / raw) To: Rodrigo Vivi; +Cc: intel-gfx, intel-xe On Thu, 14 Nov 2024, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > On Mon, Nov 11, 2024 at 07:53:33PM +0200, Jani Nikula wrote: >> Move the check for display_irqs_enabled within vlv_display_irq_reset() >> and vlv_display_irq_postinstall() to avoid looking at struct >> intel_display members within i915 core irq code. >> >> Within display irq code, vlv_display_irq_reset() may need to be called >> with !display_irqs_enabled, so add a small wrapper. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> >> --- >> drivers/gpu/drm/i915/display/intel_display_irq.c | 15 ++++++++++++--- >> drivers/gpu/drm/i915/i915_irq.c | 12 ++++-------- >> 2 files changed, 16 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c >> index e1547ebce60e..d5458b0d976b 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c >> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c >> @@ -1479,7 +1479,7 @@ void bdw_disable_vblank(struct drm_crtc *_crtc) >> schedule_work(&display->irq.vblank_dc_work); >> } >> >> -void vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> +static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> { >> struct intel_uncore *uncore = &dev_priv->uncore; >> >> @@ -1497,6 +1497,12 @@ void vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> dev_priv->irq_mask = ~0u; >> } >> >> +void vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> +{ >> + if (dev_priv->display.irq.display_irqs_enabled) >> + _vlv_display_irq_reset(dev_priv); >> +} >> + >> void i9xx_display_irq_reset(struct drm_i915_private *i915) >> { >> if (I915_HAS_HOTPLUG(i915)) { >> @@ -1516,6 +1522,9 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) >> u32 enable_mask; >> enum pipe pipe; >> >> + if (!dev_priv->display.irq.display_irqs_enabled) >> + return; > > I got confused here. this likely deserves a separate patch? I thought I explained it in the commit message. The check is being moved from the callers to the callees. But for vlv_display_irq_reset() we also need to be able to call without the check, so that gets an additional wrapper. BR, Jani. > >> + >> pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; >> >> i915_enable_pipestat(dev_priv, PIPE_A, PIPE_GMBUS_INTERRUPT_STATUS); >> @@ -1694,7 +1703,7 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) >> dev_priv->display.irq.display_irqs_enabled = true; >> >> if (intel_irqs_enabled(dev_priv)) { >> - vlv_display_irq_reset(dev_priv); >> + _vlv_display_irq_reset(dev_priv); >> vlv_display_irq_postinstall(dev_priv); >> } >> } >> @@ -1709,7 +1718,7 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) >> dev_priv->display.irq.display_irqs_enabled = false; >> >> if (intel_irqs_enabled(dev_priv)) >> - vlv_display_irq_reset(dev_priv); >> + _vlv_display_irq_reset(dev_priv); >> } >> >> void ilk_de_irq_postinstall(struct drm_i915_private *i915) >> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c >> index f75cbf5b8a1c..7920ad9585ae 100644 >> --- a/drivers/gpu/drm/i915/i915_irq.c >> +++ b/drivers/gpu/drm/i915/i915_irq.c >> @@ -658,8 +658,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv) >> gen5_gt_irq_reset(to_gt(dev_priv)); >> >> spin_lock_irq(&dev_priv->irq_lock); >> - if (dev_priv->display.irq.display_irqs_enabled) >> - vlv_display_irq_reset(dev_priv); >> + vlv_display_irq_reset(dev_priv); >> spin_unlock_irq(&dev_priv->irq_lock); >> } >> >> @@ -723,8 +722,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv) >> gen2_irq_reset(uncore, GEN8_PCU_IRQ_REGS); >> >> spin_lock_irq(&dev_priv->irq_lock); >> - if (dev_priv->display.irq.display_irqs_enabled) >> - vlv_display_irq_reset(dev_priv); >> + vlv_display_irq_reset(dev_priv); >> spin_unlock_irq(&dev_priv->irq_lock); >> } >> >> @@ -740,8 +738,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv) >> gen5_gt_irq_postinstall(to_gt(dev_priv)); >> >> spin_lock_irq(&dev_priv->irq_lock); >> - if (dev_priv->display.irq.display_irqs_enabled) >> - vlv_display_irq_postinstall(dev_priv); >> + vlv_display_irq_postinstall(dev_priv); >> spin_unlock_irq(&dev_priv->irq_lock); >> >> intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); >> @@ -794,8 +791,7 @@ static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv) >> gen8_gt_irq_postinstall(to_gt(dev_priv)); >> >> spin_lock_irq(&dev_priv->irq_lock); >> - if (dev_priv->display.irq.display_irqs_enabled) >> - vlv_display_irq_postinstall(dev_priv); >> + vlv_display_irq_postinstall(dev_priv); >> spin_unlock_irq(&dev_priv->irq_lock); >> >> intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL); >> -- >> 2.39.5 >> -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access 2024-11-15 13:13 ` Jani Nikula @ 2024-11-15 19:10 ` Rodrigo Vivi 0 siblings, 0 replies; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-15 19:10 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Fri, Nov 15, 2024 at 03:13:31PM +0200, Jani Nikula wrote: > On Thu, 14 Nov 2024, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > > On Mon, Nov 11, 2024 at 07:53:33PM +0200, Jani Nikula wrote: > >> Move the check for display_irqs_enabled within vlv_display_irq_reset() > >> and vlv_display_irq_postinstall() to avoid looking at struct > >> intel_display members within i915 core irq code. > >> > >> Within display irq code, vlv_display_irq_reset() may need to be called > >> with !display_irqs_enabled, so add a small wrapper. > >> > >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> > >> --- > >> drivers/gpu/drm/i915/display/intel_display_irq.c | 15 ++++++++++++--- > >> drivers/gpu/drm/i915/i915_irq.c | 12 ++++-------- > >> 2 files changed, 16 insertions(+), 11 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c > >> index e1547ebce60e..d5458b0d976b 100644 > >> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c > >> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c > >> @@ -1479,7 +1479,7 @@ void bdw_disable_vblank(struct drm_crtc *_crtc) > >> schedule_work(&display->irq.vblank_dc_work); > >> } > >> > >> -void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> +static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> { > >> struct intel_uncore *uncore = &dev_priv->uncore; > >> > >> @@ -1497,6 +1497,12 @@ void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> dev_priv->irq_mask = ~0u; > >> } > >> > >> +void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> +{ > >> + if (dev_priv->display.irq.display_irqs_enabled) > >> + _vlv_display_irq_reset(dev_priv); > >> +} > >> + > >> void i9xx_display_irq_reset(struct drm_i915_private *i915) > >> { > >> if (I915_HAS_HOTPLUG(i915)) { > >> @@ -1516,6 +1522,9 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) > >> u32 enable_mask; > >> enum pipe pipe; > >> > >> + if (!dev_priv->display.irq.display_irqs_enabled) > >> + return; > > > > I got confused here. this likely deserves a separate patch? > > I thought I explained it in the commit message. The check is being moved > from the callers to the callees. But for vlv_display_irq_reset() we also > need to be able to call without the check, so that gets an additional > wrapper. doh! Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > BR, > Jani. > > > > >> + > >> pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; > >> > >> i915_enable_pipestat(dev_priv, PIPE_A, PIPE_GMBUS_INTERRUPT_STATUS); > >> @@ -1694,7 +1703,7 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) > >> dev_priv->display.irq.display_irqs_enabled = true; > >> > >> if (intel_irqs_enabled(dev_priv)) { > >> - vlv_display_irq_reset(dev_priv); > >> + _vlv_display_irq_reset(dev_priv); > >> vlv_display_irq_postinstall(dev_priv); > >> } > >> } > >> @@ -1709,7 +1718,7 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) > >> dev_priv->display.irq.display_irqs_enabled = false; > >> > >> if (intel_irqs_enabled(dev_priv)) > >> - vlv_display_irq_reset(dev_priv); > >> + _vlv_display_irq_reset(dev_priv); > >> } > >> > >> void ilk_de_irq_postinstall(struct drm_i915_private *i915) > >> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > >> index f75cbf5b8a1c..7920ad9585ae 100644 > >> --- a/drivers/gpu/drm/i915/i915_irq.c > >> +++ b/drivers/gpu/drm/i915/i915_irq.c > >> @@ -658,8 +658,7 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv) > >> gen5_gt_irq_reset(to_gt(dev_priv)); > >> > >> spin_lock_irq(&dev_priv->irq_lock); > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> - vlv_display_irq_reset(dev_priv); > >> + vlv_display_irq_reset(dev_priv); > >> spin_unlock_irq(&dev_priv->irq_lock); > >> } > >> > >> @@ -723,8 +722,7 @@ static void cherryview_irq_reset(struct drm_i915_private *dev_priv) > >> gen2_irq_reset(uncore, GEN8_PCU_IRQ_REGS); > >> > >> spin_lock_irq(&dev_priv->irq_lock); > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> - vlv_display_irq_reset(dev_priv); > >> + vlv_display_irq_reset(dev_priv); > >> spin_unlock_irq(&dev_priv->irq_lock); > >> } > >> > >> @@ -740,8 +738,7 @@ static void valleyview_irq_postinstall(struct drm_i915_private *dev_priv) > >> gen5_gt_irq_postinstall(to_gt(dev_priv)); > >> > >> spin_lock_irq(&dev_priv->irq_lock); > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> - vlv_display_irq_postinstall(dev_priv); > >> + vlv_display_irq_postinstall(dev_priv); > >> spin_unlock_irq(&dev_priv->irq_lock); > >> > >> intel_uncore_write(&dev_priv->uncore, VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); > >> @@ -794,8 +791,7 @@ static void cherryview_irq_postinstall(struct drm_i915_private *dev_priv) > >> gen8_gt_irq_postinstall(to_gt(dev_priv)); > >> > >> spin_lock_irq(&dev_priv->irq_lock); > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> - vlv_display_irq_postinstall(dev_priv); > >> + vlv_display_irq_postinstall(dev_priv); > >> spin_unlock_irq(&dev_priv->irq_lock); > >> > >> intel_uncore_write(&dev_priv->uncore, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL); > >> -- > >> 2.39.5 > >> > > -- > Jani Nikula, Intel ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (3 preceding siblings ...) 2024-11-11 17:53 ` [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access Jani Nikula @ 2024-11-11 17:53 ` Jani Nikula 2024-11-14 17:57 ` Rodrigo Vivi 2024-11-11 19:00 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups Patchwork ` (8 subsequent siblings) 13 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-11 17:53 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: jani.nikula Rename display_irqs_enabled to vlv_display_irqs_enabled, to emphasize it's really only about VLV/CHV. Only access it when running on VLV/CHV. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- .../gpu/drm/i915/display/intel_display_core.h | 9 ++++++- .../gpu/drm/i915/display/intel_display_irq.c | 26 ++++++------------- .../gpu/drm/i915/display/intel_hotplug_irq.c | 6 ++++- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h index 45b7c6900adc..5ad66df1a85e 100644 --- a/drivers/gpu/drm/i915/display/intel_display_core.h +++ b/drivers/gpu/drm/i915/display/intel_display_core.h @@ -453,7 +453,14 @@ struct intel_display { } ips; struct { - bool display_irqs_enabled; + /* + * Most platforms treat the display irq block as an always-on + * power domain. vlv/chv can disable it at runtime and need + * special care to avoid writing any of the display block + * registers outside of the power domain. We defer setting up + * the display irqs in this case to the runtime pm. + */ + bool vlv_display_irqs_enabled; /* For i915gm/i945gm vblank irq workaround */ u8 vblank_enabled; diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c index d5458b0d976b..50c1ca062b80 100644 --- a/drivers/gpu/drm/i915/display/intel_display_irq.c +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c @@ -434,7 +434,8 @@ void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv, spin_lock(&dev_priv->irq_lock); - if (!dev_priv->display.irq.display_irqs_enabled) { + if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) && + !dev_priv->display.irq.vlv_display_irqs_enabled) { spin_unlock(&dev_priv->irq_lock); return; } @@ -1499,7 +1500,7 @@ static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) void vlv_display_irq_reset(struct drm_i915_private *dev_priv) { - if (dev_priv->display.irq.display_irqs_enabled) + if (dev_priv->display.irq.vlv_display_irqs_enabled) _vlv_display_irq_reset(dev_priv); } @@ -1522,7 +1523,7 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) u32 enable_mask; enum pipe pipe; - if (!dev_priv->display.irq.display_irqs_enabled) + if (!dev_priv->display.irq.vlv_display_irqs_enabled) return; pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; @@ -1697,10 +1698,10 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) { lockdep_assert_held(&dev_priv->irq_lock); - if (dev_priv->display.irq.display_irqs_enabled) + if (dev_priv->display.irq.vlv_display_irqs_enabled) return; - dev_priv->display.irq.display_irqs_enabled = true; + dev_priv->display.irq.vlv_display_irqs_enabled = true; if (intel_irqs_enabled(dev_priv)) { _vlv_display_irq_reset(dev_priv); @@ -1712,10 +1713,10 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) { lockdep_assert_held(&dev_priv->irq_lock); - if (!dev_priv->display.irq.display_irqs_enabled) + if (!dev_priv->display.irq.vlv_display_irqs_enabled) return; - dev_priv->display.irq.display_irqs_enabled = false; + dev_priv->display.irq.vlv_display_irqs_enabled = false; if (intel_irqs_enabled(dev_priv)) _vlv_display_irq_reset(dev_priv); @@ -1911,17 +1912,6 @@ void intel_display_irq_init(struct drm_i915_private *i915) { i915->drm.vblank_disable_immediate = true; - /* - * Most platforms treat the display irq block as an always-on power - * domain. vlv/chv can disable it at runtime and need special care to - * avoid writing any of the display block registers outside of the power - * domain. We defer setting up the display irqs in this case to the - * runtime pm. - */ - i915->display.irq.display_irqs_enabled = true; - if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) - i915->display.irq.display_irqs_enabled = false; - intel_hotplug_irq_init(i915); INIT_WORK(&i915->display.irq.vblank_dc_work, diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c index cb64c6f0ad1b..476ac88087e0 100644 --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c @@ -1457,7 +1457,11 @@ void intel_hpd_enable_detection(struct intel_encoder *encoder) void intel_hpd_irq_setup(struct drm_i915_private *i915) { - if (i915->display.irq.display_irqs_enabled && i915->display.funcs.hotplug) + if ((IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) && + !i915->display.irq.vlv_display_irqs_enabled) + return; + + if (i915->display.funcs.hotplug) i915->display.funcs.hotplug->hpd_irq_setup(i915); } -- 2.39.5 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV 2024-11-11 17:53 ` [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV Jani Nikula @ 2024-11-14 17:57 ` Rodrigo Vivi 2024-11-15 13:15 ` Jani Nikula 0 siblings, 1 reply; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-14 17:57 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Mon, Nov 11, 2024 at 07:53:34PM +0200, Jani Nikula wrote: > Rename display_irqs_enabled to vlv_display_irqs_enabled, to emphasize > it's really only about VLV/CHV. Only access it when running on VLV/CHV. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > .../gpu/drm/i915/display/intel_display_core.h | 9 ++++++- > .../gpu/drm/i915/display/intel_display_irq.c | 26 ++++++------------- > .../gpu/drm/i915/display/intel_hotplug_irq.c | 6 ++++- > 3 files changed, 21 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h > index 45b7c6900adc..5ad66df1a85e 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_core.h > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h > @@ -453,7 +453,14 @@ struct intel_display { > } ips; > > struct { > - bool display_irqs_enabled; > + /* > + * Most platforms treat the display irq block as an always-on > + * power domain. vlv/chv can disable it at runtime and need > + * special care to avoid writing any of the display block > + * registers outside of the power domain. We defer setting up > + * the display irqs in this case to the runtime pm. > + */ > + bool vlv_display_irqs_enabled; > > /* For i915gm/i945gm vblank irq workaround */ > u8 vblank_enabled; > diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c > index d5458b0d976b..50c1ca062b80 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_irq.c > +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c > @@ -434,7 +434,8 @@ void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv, > > spin_lock(&dev_priv->irq_lock); > > - if (!dev_priv->display.irq.display_irqs_enabled) { > + if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) && > + !dev_priv->display.irq.vlv_display_irqs_enabled) { > spin_unlock(&dev_priv->irq_lock); > return; > } > @@ -1499,7 +1500,7 @@ static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) > > void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > { > - if (dev_priv->display.irq.display_irqs_enabled) > + if (dev_priv->display.irq.vlv_display_irqs_enabled) > _vlv_display_irq_reset(dev_priv); > } > > @@ -1522,7 +1523,7 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) > u32 enable_mask; > enum pipe pipe; > > - if (!dev_priv->display.irq.display_irqs_enabled) > + if (!dev_priv->display.irq.vlv_display_irqs_enabled) > return; > > pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; > @@ -1697,10 +1698,10 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) > { > lockdep_assert_held(&dev_priv->irq_lock); > > - if (dev_priv->display.irq.display_irqs_enabled) > + if (dev_priv->display.irq.vlv_display_irqs_enabled) > return; > > - dev_priv->display.irq.display_irqs_enabled = true; > + dev_priv->display.irq.vlv_display_irqs_enabled = true; > > if (intel_irqs_enabled(dev_priv)) { > _vlv_display_irq_reset(dev_priv); > @@ -1712,10 +1713,10 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) > { > lockdep_assert_held(&dev_priv->irq_lock); > > - if (!dev_priv->display.irq.display_irqs_enabled) > + if (!dev_priv->display.irq.vlv_display_irqs_enabled) > return; > > - dev_priv->display.irq.display_irqs_enabled = false; > + dev_priv->display.irq.vlv_display_irqs_enabled = false; > > if (intel_irqs_enabled(dev_priv)) > _vlv_display_irq_reset(dev_priv); > @@ -1911,17 +1912,6 @@ void intel_display_irq_init(struct drm_i915_private *i915) > { > i915->drm.vblank_disable_immediate = true; > > - /* > - * Most platforms treat the display irq block as an always-on power > - * domain. vlv/chv can disable it at runtime and need special care to > - * avoid writing any of the display block registers outside of the power > - * domain. We defer setting up the display irqs in this case to the > - * runtime pm. > - */ > - i915->display.irq.display_irqs_enabled = true; > - if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) > - i915->display.irq.display_irqs_enabled = false; > - > intel_hotplug_irq_init(i915); > > INIT_WORK(&i915->display.irq.vblank_dc_work, > diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > index cb64c6f0ad1b..476ac88087e0 100644 > --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > @@ -1457,7 +1457,11 @@ void intel_hpd_enable_detection(struct intel_encoder *encoder) > > void intel_hpd_irq_setup(struct drm_i915_private *i915) > { > - if (i915->display.irq.display_irqs_enabled && i915->display.funcs.hotplug) > + if ((IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) && I like the overal change, but it is not just a 'Rename' as the commit message tells if we are changing conditions. > + !i915->display.irq.vlv_display_irqs_enabled) > + return; > + > + if (i915->display.funcs.hotplug) > i915->display.funcs.hotplug->hpd_irq_setup(i915); > } > > -- > 2.39.5 > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV 2024-11-14 17:57 ` Rodrigo Vivi @ 2024-11-15 13:15 ` Jani Nikula 2024-11-15 19:11 ` Rodrigo Vivi 0 siblings, 1 reply; 25+ messages in thread From: Jani Nikula @ 2024-11-15 13:15 UTC (permalink / raw) To: Rodrigo Vivi; +Cc: intel-gfx, intel-xe On Thu, 14 Nov 2024, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > On Mon, Nov 11, 2024 at 07:53:34PM +0200, Jani Nikula wrote: >> Rename display_irqs_enabled to vlv_display_irqs_enabled, to emphasize >> it's really only about VLV/CHV. Only access it when running on VLV/CHV. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> >> --- >> .../gpu/drm/i915/display/intel_display_core.h | 9 ++++++- >> .../gpu/drm/i915/display/intel_display_irq.c | 26 ++++++------------- >> .../gpu/drm/i915/display/intel_hotplug_irq.c | 6 ++++- >> 3 files changed, 21 insertions(+), 20 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h >> index 45b7c6900adc..5ad66df1a85e 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display_core.h >> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h >> @@ -453,7 +453,14 @@ struct intel_display { >> } ips; >> >> struct { >> - bool display_irqs_enabled; >> + /* >> + * Most platforms treat the display irq block as an always-on >> + * power domain. vlv/chv can disable it at runtime and need >> + * special care to avoid writing any of the display block >> + * registers outside of the power domain. We defer setting up >> + * the display irqs in this case to the runtime pm. >> + */ >> + bool vlv_display_irqs_enabled; >> >> /* For i915gm/i945gm vblank irq workaround */ >> u8 vblank_enabled; >> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c >> index d5458b0d976b..50c1ca062b80 100644 >> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c >> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c >> @@ -434,7 +434,8 @@ void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv, >> >> spin_lock(&dev_priv->irq_lock); >> >> - if (!dev_priv->display.irq.display_irqs_enabled) { >> + if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) && >> + !dev_priv->display.irq.vlv_display_irqs_enabled) { >> spin_unlock(&dev_priv->irq_lock); >> return; >> } >> @@ -1499,7 +1500,7 @@ static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> >> void vlv_display_irq_reset(struct drm_i915_private *dev_priv) >> { >> - if (dev_priv->display.irq.display_irqs_enabled) >> + if (dev_priv->display.irq.vlv_display_irqs_enabled) >> _vlv_display_irq_reset(dev_priv); >> } >> >> @@ -1522,7 +1523,7 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) >> u32 enable_mask; >> enum pipe pipe; >> >> - if (!dev_priv->display.irq.display_irqs_enabled) >> + if (!dev_priv->display.irq.vlv_display_irqs_enabled) >> return; >> >> pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; >> @@ -1697,10 +1698,10 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) >> { >> lockdep_assert_held(&dev_priv->irq_lock); >> >> - if (dev_priv->display.irq.display_irqs_enabled) >> + if (dev_priv->display.irq.vlv_display_irqs_enabled) >> return; >> >> - dev_priv->display.irq.display_irqs_enabled = true; >> + dev_priv->display.irq.vlv_display_irqs_enabled = true; >> >> if (intel_irqs_enabled(dev_priv)) { >> _vlv_display_irq_reset(dev_priv); >> @@ -1712,10 +1713,10 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) >> { >> lockdep_assert_held(&dev_priv->irq_lock); >> >> - if (!dev_priv->display.irq.display_irqs_enabled) >> + if (!dev_priv->display.irq.vlv_display_irqs_enabled) >> return; >> >> - dev_priv->display.irq.display_irqs_enabled = false; >> + dev_priv->display.irq.vlv_display_irqs_enabled = false; >> >> if (intel_irqs_enabled(dev_priv)) >> _vlv_display_irq_reset(dev_priv); >> @@ -1911,17 +1912,6 @@ void intel_display_irq_init(struct drm_i915_private *i915) >> { >> i915->drm.vblank_disable_immediate = true; >> >> - /* >> - * Most platforms treat the display irq block as an always-on power >> - * domain. vlv/chv can disable it at runtime and need special care to >> - * avoid writing any of the display block registers outside of the power >> - * domain. We defer setting up the display irqs in this case to the >> - * runtime pm. >> - */ >> - i915->display.irq.display_irqs_enabled = true; >> - if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) >> - i915->display.irq.display_irqs_enabled = false; >> - >> intel_hotplug_irq_init(i915); >> >> INIT_WORK(&i915->display.irq.vblank_dc_work, >> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c >> index cb64c6f0ad1b..476ac88087e0 100644 >> --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c >> +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c >> @@ -1457,7 +1457,11 @@ void intel_hpd_enable_detection(struct intel_encoder *encoder) >> >> void intel_hpd_irq_setup(struct drm_i915_private *i915) >> { >> - if (i915->display.irq.display_irqs_enabled && i915->display.funcs.hotplug) >> + if ((IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) && > > I like the overal change, but it is not just a 'Rename' as the commit message > tells if we are changing conditions. The commit message does say, "Only access it when running on VLV/CHV.", but yeah, I could rephrase it. BR, Jani. > >> + !i915->display.irq.vlv_display_irqs_enabled) >> + return; >> + >> + if (i915->display.funcs.hotplug) >> i915->display.funcs.hotplug->hpd_irq_setup(i915); >> } >> >> -- >> 2.39.5 >> -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV 2024-11-15 13:15 ` Jani Nikula @ 2024-11-15 19:11 ` Rodrigo Vivi 0 siblings, 0 replies; 25+ messages in thread From: Rodrigo Vivi @ 2024-11-15 19:11 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, intel-xe On Fri, Nov 15, 2024 at 03:15:15PM +0200, Jani Nikula wrote: > On Thu, 14 Nov 2024, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote: > > On Mon, Nov 11, 2024 at 07:53:34PM +0200, Jani Nikula wrote: > >> Rename display_irqs_enabled to vlv_display_irqs_enabled, to emphasize > >> it's really only about VLV/CHV. Only access it when running on VLV/CHV. > >> > >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> > >> --- > >> .../gpu/drm/i915/display/intel_display_core.h | 9 ++++++- > >> .../gpu/drm/i915/display/intel_display_irq.c | 26 ++++++------------- > >> .../gpu/drm/i915/display/intel_hotplug_irq.c | 6 ++++- > >> 3 files changed, 21 insertions(+), 20 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h > >> index 45b7c6900adc..5ad66df1a85e 100644 > >> --- a/drivers/gpu/drm/i915/display/intel_display_core.h > >> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h > >> @@ -453,7 +453,14 @@ struct intel_display { > >> } ips; > >> > >> struct { > >> - bool display_irqs_enabled; > >> + /* > >> + * Most platforms treat the display irq block as an always-on > >> + * power domain. vlv/chv can disable it at runtime and need > >> + * special care to avoid writing any of the display block > >> + * registers outside of the power domain. We defer setting up > >> + * the display irqs in this case to the runtime pm. > >> + */ > >> + bool vlv_display_irqs_enabled; > >> > >> /* For i915gm/i945gm vblank irq workaround */ > >> u8 vblank_enabled; > >> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c > >> index d5458b0d976b..50c1ca062b80 100644 > >> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c > >> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c > >> @@ -434,7 +434,8 @@ void i9xx_pipestat_irq_ack(struct drm_i915_private *dev_priv, > >> > >> spin_lock(&dev_priv->irq_lock); > >> > >> - if (!dev_priv->display.irq.display_irqs_enabled) { > >> + if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) && > >> + !dev_priv->display.irq.vlv_display_irqs_enabled) { > >> spin_unlock(&dev_priv->irq_lock); > >> return; > >> } > >> @@ -1499,7 +1500,7 @@ static void _vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> > >> void vlv_display_irq_reset(struct drm_i915_private *dev_priv) > >> { > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> + if (dev_priv->display.irq.vlv_display_irqs_enabled) > >> _vlv_display_irq_reset(dev_priv); > >> } > >> > >> @@ -1522,7 +1523,7 @@ void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) > >> u32 enable_mask; > >> enum pipe pipe; > >> > >> - if (!dev_priv->display.irq.display_irqs_enabled) > >> + if (!dev_priv->display.irq.vlv_display_irqs_enabled) > >> return; > >> > >> pipestat_mask = PIPE_CRC_DONE_INTERRUPT_STATUS; > >> @@ -1697,10 +1698,10 @@ void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv) > >> { > >> lockdep_assert_held(&dev_priv->irq_lock); > >> > >> - if (dev_priv->display.irq.display_irqs_enabled) > >> + if (dev_priv->display.irq.vlv_display_irqs_enabled) > >> return; > >> > >> - dev_priv->display.irq.display_irqs_enabled = true; > >> + dev_priv->display.irq.vlv_display_irqs_enabled = true; > >> > >> if (intel_irqs_enabled(dev_priv)) { > >> _vlv_display_irq_reset(dev_priv); > >> @@ -1712,10 +1713,10 @@ void valleyview_disable_display_irqs(struct drm_i915_private *dev_priv) > >> { > >> lockdep_assert_held(&dev_priv->irq_lock); > >> > >> - if (!dev_priv->display.irq.display_irqs_enabled) > >> + if (!dev_priv->display.irq.vlv_display_irqs_enabled) > >> return; > >> > >> - dev_priv->display.irq.display_irqs_enabled = false; > >> + dev_priv->display.irq.vlv_display_irqs_enabled = false; > >> > >> if (intel_irqs_enabled(dev_priv)) > >> _vlv_display_irq_reset(dev_priv); > >> @@ -1911,17 +1912,6 @@ void intel_display_irq_init(struct drm_i915_private *i915) > >> { > >> i915->drm.vblank_disable_immediate = true; > >> > >> - /* > >> - * Most platforms treat the display irq block as an always-on power > >> - * domain. vlv/chv can disable it at runtime and need special care to > >> - * avoid writing any of the display block registers outside of the power > >> - * domain. We defer setting up the display irqs in this case to the > >> - * runtime pm. > >> - */ > >> - i915->display.irq.display_irqs_enabled = true; > >> - if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) > >> - i915->display.irq.display_irqs_enabled = false; > >> - > >> intel_hotplug_irq_init(i915); > >> > >> INIT_WORK(&i915->display.irq.vblank_dc_work, > >> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > >> index cb64c6f0ad1b..476ac88087e0 100644 > >> --- a/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > >> +++ b/drivers/gpu/drm/i915/display/intel_hotplug_irq.c > >> @@ -1457,7 +1457,11 @@ void intel_hpd_enable_detection(struct intel_encoder *encoder) > >> > >> void intel_hpd_irq_setup(struct drm_i915_private *i915) > >> { > >> - if (i915->display.irq.display_irqs_enabled && i915->display.funcs.hotplug) > >> + if ((IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) && > > > > I like the overal change, but it is not just a 'Rename' as the commit message > > tells if we are changing conditions. > > The commit message does say, "Only access it when running on VLV/CHV.", > but yeah, I could rephrase it. looking again and everything really looks good. My only problem is with the word 'Rename' in the commit message... Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > BR, > Jani. > > > > > > >> + !i915->display.irq.vlv_display_irqs_enabled) > >> + return; > >> + > >> + if (i915->display.funcs.hotplug) > >> i915->display.funcs.hotplug->hpd_irq_setup(i915); > >> } > >> > >> -- > >> 2.39.5 > >> > > -- > Jani Nikula, Intel ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (4 preceding siblings ...) 2024-11-11 17:53 ` [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV Jani Nikula @ 2024-11-11 19:00 ` Patchwork 2024-11-11 19:00 ` ✗ Fi.CI.SPARSE: " Patchwork ` (7 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-11 19:00 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim checkpatch failed 8c43f2b99cec drm/i915/overlay: convert to struct intel_display -:608: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #608: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:32: } +static inline void intel_overlay_cleanup(struct intel_display *display) -:626: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #626: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:49: } +static inline void intel_overlay_reset(struct intel_display *display) total: 0 errors, 0 warnings, 2 checks, 578 lines checked 3b4e013e3418 drm/i915/overlay: add intel_overlay_available() and use it -:44: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #44: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:33: } +static inline bool intel_overlay_available(struct intel_display *display) -:56: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #56: FILE: drivers/gpu/drm/i915/i915_getparam.c:2: * SPDX-License-Identifier: MIT total: 0 errors, 1 warnings, 1 checks, 53 lines checked 010264e35e1b drm/i915/plane: convert initial plane setup to struct intel_display 87290e739ca1 drm/i915/irq: hide display_irqs_enabled access 2bb2fb50ffd7 drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915: intel_display conversions, cleanups 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (5 preceding siblings ...) 2024-11-11 19:00 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups Patchwork @ 2024-11-11 19:00 ` Patchwork 2024-11-11 19:01 ` ✗ Fi.CI.BAT: failure " Patchwork ` (6 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-11 19:00 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim sparse failed Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: intel_display conversions, cleanups 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (6 preceding siblings ...) 2024-11-11 19:00 ` ✗ Fi.CI.SPARSE: " Patchwork @ 2024-11-11 19:01 ` Patchwork 2024-11-18 17:49 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev2) Patchwork ` (5 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-11 19:01 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 6763 bytes --] == Series Details == Series: drm/i915: intel_display conversions, cleanups URL : https://patchwork.freedesktop.org/series/141176/ State : failure == Summary == CI Bug Log - changes from CI_DRM_15674 -> Patchwork_141176v1 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_141176v1 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_141176v1, 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. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/index.html Participating hosts (46 -> 45) ------------------------------ Missing (1): fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_141176v1: ### IGT changes ### #### Possible regressions #### * igt@i915_selftest@live: - bat-dg2-14: [PASS][1] -> [DMESG-FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15674/bat-dg2-14/igt@i915_selftest@live.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-dg2-14/igt@i915_selftest@live.html Known issues ------------ Here are the changes found in Patchwork_141176v1 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@debugfs_test@basic-hwmon: - bat-rpls-4: NOTRUN -> [SKIP][3] ([i915#9318]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@debugfs_test@basic-hwmon.html * igt@gem_lmem_swapping@parallel-random-engines: - bat-rpls-4: NOTRUN -> [SKIP][4] ([i915#4613]) +3 other tests skip [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@gem_lmem_swapping@parallel-random-engines.html * igt@gem_tiled_pread_basic: - bat-rpls-4: NOTRUN -> [SKIP][5] ([i915#3282]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@gem_tiled_pread_basic.html * igt@i915_selftest@live@workarounds: - bat-dg2-14: [PASS][6] -> [DMESG-FAIL][7] ([i915#9500]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15674/bat-dg2-14/igt@i915_selftest@live@workarounds.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-dg2-14/igt@i915_selftest@live@workarounds.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - bat-rpls-4: NOTRUN -> [SKIP][8] ([i915#4103]) +1 other test skip [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_dsc@dsc-basic: - bat-rpls-4: NOTRUN -> [SKIP][9] ([i915#3555] / [i915#3840] / [i915#9886]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_dsc@dsc-basic.html * igt@kms_force_connector_basic@force-load-detect: - bat-rpls-4: NOTRUN -> [SKIP][10] [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_force_connector_basic@force-load-detect.html * igt@kms_pm_backlight@basic-brightness: - bat-rpls-4: NOTRUN -> [SKIP][11] ([i915#5354]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_pm_backlight@basic-brightness.html * igt@kms_psr@psr-primary-page-flip: - bat-rpls-4: NOTRUN -> [SKIP][12] ([i915#1072] / [i915#9732]) +3 other tests skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_psr@psr-primary-page-flip.html * igt@kms_setmode@basic-clone-single-crtc: - bat-rpls-4: NOTRUN -> [SKIP][13] ([i915#3555]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@kms_setmode@basic-clone-single-crtc.html * igt@prime_vgem@basic-read: - bat-rpls-4: NOTRUN -> [SKIP][14] ([i915#3708]) +2 other tests skip [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@prime_vgem@basic-read.html #### Possible fixes #### * igt@i915_module_load@load: - bat-rpls-4: [ABORT][15] -> [PASS][16] [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15674/bat-rpls-4/igt@i915_module_load@load.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-rpls-4/igt@i915_module_load@load.html - bat-adlp-6: [DMESG-WARN][17] ([i915#12253]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15674/bat-adlp-6/igt@i915_module_load@load.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-adlp-6/igt@i915_module_load@load.html * igt@i915_selftest@live@workarounds: - bat-adlp-6: [INCOMPLETE][19] ([i915#9413]) -> [PASS][20] +1 other test pass [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15674/bat-adlp-6/igt@i915_selftest@live@workarounds.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/bat-adlp-6/igt@i915_selftest@live@workarounds.html [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#12253]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12253 [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318 [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413 [i915#9500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9500 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886 Build changes ------------- * Linux: CI_DRM_15674 -> Patchwork_141176v1 CI-20190529: 20190529 CI_DRM_15674: 6d0fd3fb958e77717cedf35f49325c7c0dfa11c9 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8102: a05b40911bfb79c9bdf6ff7e8ab1a68948afbbf6 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_141176v1: 6d0fd3fb958e77717cedf35f49325c7c0dfa11c9 @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v1/index.html [-- Attachment #2: Type: text/html, Size: 7798 bytes --] ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev2) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (7 preceding siblings ...) 2024-11-11 19:01 ` ✗ Fi.CI.BAT: failure " Patchwork @ 2024-11-18 17:49 ` Patchwork 2024-11-18 17:49 ` ✗ Fi.CI.SPARSE: " Patchwork ` (4 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-18 17:49 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev2) URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim checkpatch failed b645721d453f drm/i915/overlay: convert to struct intel_display -:609: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #609: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:32: } +static inline void intel_overlay_cleanup(struct intel_display *display) -:627: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #627: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:49: } +static inline void intel_overlay_reset(struct intel_display *display) total: 0 errors, 0 warnings, 2 checks, 578 lines checked 04eb6c7b2e09 drm/i915/overlay: add intel_overlay_available() and use it -:45: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #45: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:33: } +static inline bool intel_overlay_available(struct intel_display *display) -:57: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #57: FILE: drivers/gpu/drm/i915/i915_getparam.c:2: * SPDX-License-Identifier: MIT total: 0 errors, 1 warnings, 1 checks, 53 lines checked e77ac58ee0a9 drm/i915/plane: convert initial plane setup to struct intel_display 4c3100f86e6e drm/i915/irq: hide display_irqs_enabled access 22cfe562a273 drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915: intel_display conversions, cleanups (rev2) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (8 preceding siblings ...) 2024-11-18 17:49 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev2) Patchwork @ 2024-11-18 17:49 ` Patchwork 2024-11-18 18:08 ` ✗ Fi.CI.BAT: failure " Patchwork ` (3 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-18 17:49 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev2) URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim sparse failed Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: intel_display conversions, cleanups (rev2) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (9 preceding siblings ...) 2024-11-18 17:49 ` ✗ Fi.CI.SPARSE: " Patchwork @ 2024-11-18 18:08 ` Patchwork 2024-11-19 13:15 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev3) Patchwork ` (2 subsequent siblings) 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-18 18:08 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 8729 bytes --] == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev2) URL : https://patchwork.freedesktop.org/series/141176/ State : failure == Summary == CI Bug Log - changes from CI_DRM_15715 -> Patchwork_141176v2 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_141176v2 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_141176v2, 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. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/index.html Participating hosts (46 -> 45) ------------------------------ Missing (1): fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_141176v2: ### IGT changes ### #### Possible regressions #### * igt@dmabuf@all-tests: - bat-apl-1: [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15715/bat-apl-1/igt@dmabuf@all-tests.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-apl-1/igt@dmabuf@all-tests.html * igt@i915_pm_rpm@module-reload: - bat-adls-6: [PASS][3] -> [FAIL][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15715/bat-adls-6/igt@i915_pm_rpm@module-reload.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-adls-6/igt@i915_pm_rpm@module-reload.html Known issues ------------ Here are the changes found in Patchwork_141176v2 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_mmap@basic: - bat-dg2-14: NOTRUN -> [SKIP][5] ([i915#4083]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@gem_mmap@basic.html * igt@gem_render_tiled_blits@basic: - bat-dg2-14: NOTRUN -> [SKIP][6] ([i915#4079]) +1 other test skip [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@gem_render_tiled_blits@basic.html * igt@gem_tiled_fence_blits@basic: - bat-dg2-14: NOTRUN -> [SKIP][7] ([i915#4077]) +2 other tests skip [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@gem_tiled_fence_blits@basic.html * igt@i915_pm_rps@basic-api: - bat-dg2-14: NOTRUN -> [SKIP][8] ([i915#11681] / [i915#6621]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@i915_pm_rps@basic-api.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - bat-dg2-14: NOTRUN -> [SKIP][9] ([i915#4212] / [i915#5190]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_addfb_basic@basic-y-tiled-legacy: - bat-dg2-14: NOTRUN -> [SKIP][10] ([i915#4212] / [i915#4215] / [i915#5190]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html * igt@kms_addfb_basic@tile-pitch-mismatch: - bat-dg2-14: NOTRUN -> [SKIP][11] ([i915#4212]) +7 other tests skip [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_addfb_basic@tile-pitch-mismatch.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - bat-dg2-14: NOTRUN -> [SKIP][12] ([i915#4103] / [i915#4213]) +1 other test skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_dsc@dsc-basic: - bat-dg2-14: NOTRUN -> [SKIP][13] ([i915#3555] / [i915#3840]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_dsc@dsc-basic.html * igt@kms_force_connector_basic@force-load-detect: - bat-dg2-14: NOTRUN -> [SKIP][14] [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_force_connector_basic@force-load-detect.html * igt@kms_force_connector_basic@prune-stale-modes: - bat-dg2-14: NOTRUN -> [SKIP][15] ([i915#5274]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_force_connector_basic@prune-stale-modes.html * igt@kms_pm_backlight@basic-brightness: - bat-dg2-14: NOTRUN -> [SKIP][16] ([i915#5354]) [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_pm_backlight@basic-brightness.html * igt@kms_psr@psr-sprite-plane-onoff: - bat-dg2-14: NOTRUN -> [SKIP][17] ([i915#1072] / [i915#9732]) +3 other tests skip [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_psr@psr-sprite-plane-onoff.html * igt@kms_setmode@basic-clone-single-crtc: - bat-dg2-14: NOTRUN -> [SKIP][18] ([i915#3555]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@kms_setmode@basic-clone-single-crtc.html * igt@prime_vgem@basic-fence-flip: - bat-dg2-14: NOTRUN -> [SKIP][19] ([i915#3708]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@prime_vgem@basic-fence-flip.html * igt@prime_vgem@basic-gtt: - bat-dg2-14: NOTRUN -> [SKIP][20] ([i915#3708] / [i915#4077]) +1 other test skip [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@prime_vgem@basic-gtt.html * igt@prime_vgem@basic-write: - bat-dg2-14: NOTRUN -> [SKIP][21] ([i915#3291] / [i915#3708]) +2 other tests skip [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-14/igt@prime_vgem@basic-write.html * igt@runner@aborted: - bat-dg2-13: NOTRUN -> [FAIL][22] ([i915#12658]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/bat-dg2-13/igt@runner@aborted.html #### Possible fixes #### * igt@dmabuf@all-tests@dma_fence_chain: - fi-bsw-nick: [INCOMPLETE][23] -> [PASS][24] +1 other test pass [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15715/fi-bsw-nick/igt@dmabuf@all-tests@dma_fence_chain.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/fi-bsw-nick/igt@dmabuf@all-tests@dma_fence_chain.html * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy: - fi-kbl-7567u: [DMESG-WARN][25] -> [PASS][26] [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15715/fi-kbl-7567u/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/fi-kbl-7567u/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072 [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681 [i915#12658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12658 [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291 [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555 [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708 [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840 [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077 [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079 [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083 [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103 [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212 [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213 [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215 [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190 [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274 [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354 [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621 [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732 Build changes ------------- * Linux: CI_DRM_15715 -> Patchwork_141176v2 CI-20190529: 20190529 CI_DRM_15715: 4f08eb8dc2721d6ab0d1df079c2b2ef34f322fed @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8114: 8114 Patchwork_141176v2: 4f08eb8dc2721d6ab0d1df079c2b2ef34f322fed @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v2/index.html [-- Attachment #2: Type: text/html, Size: 10423 bytes --] ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev3) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (10 preceding siblings ...) 2024-11-18 18:08 ` ✗ Fi.CI.BAT: failure " Patchwork @ 2024-11-19 13:15 ` Patchwork 2024-11-19 13:16 ` ✗ Fi.CI.SPARSE: " Patchwork 2024-11-19 13:31 ` ✗ Fi.CI.BAT: failure " Patchwork 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-19 13:15 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev3) URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim checkpatch failed d05fd1c38fb0 drm/i915/overlay: convert to struct intel_display -:609: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #609: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:32: } +static inline void intel_overlay_cleanup(struct intel_display *display) -:627: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #627: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:49: } +static inline void intel_overlay_reset(struct intel_display *display) total: 0 errors, 0 warnings, 2 checks, 578 lines checked 6377f2781c28 drm/i915/overlay: add intel_overlay_available() and use it -:45: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations #45: FILE: drivers/gpu/drm/i915/display/intel_overlay.h:33: } +static inline bool intel_overlay_available(struct intel_display *display) -:57: WARNING:SPDX_LICENSE_TAG: Misplaced SPDX-License-Identifier tag - use line 1 instead #57: FILE: drivers/gpu/drm/i915/i915_getparam.c:2: * SPDX-License-Identifier: MIT total: 0 errors, 1 warnings, 1 checks, 53 lines checked f430efa311a6 drm/i915/plane: convert initial plane setup to struct intel_display b1a2aab65cd3 drm/i915/irq: hide display_irqs_enabled access c3642b13af95 drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915: intel_display conversions, cleanups (rev3) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (11 preceding siblings ...) 2024-11-19 13:15 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev3) Patchwork @ 2024-11-19 13:16 ` Patchwork 2024-11-19 13:31 ` ✗ Fi.CI.BAT: failure " Patchwork 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-19 13:16 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev3) URL : https://patchwork.freedesktop.org/series/141176/ State : warning == Summary == Error: dim sparse failed Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. ^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: intel_display conversions, cleanups (rev3) 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula ` (12 preceding siblings ...) 2024-11-19 13:16 ` ✗ Fi.CI.SPARSE: " Patchwork @ 2024-11-19 13:31 ` Patchwork 13 siblings, 0 replies; 25+ messages in thread From: Patchwork @ 2024-11-19 13:31 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 4483 bytes --] == Series Details == Series: drm/i915: intel_display conversions, cleanups (rev3) URL : https://patchwork.freedesktop.org/series/141176/ State : failure == Summary == CI Bug Log - changes from CI_DRM_15719 -> Patchwork_141176v3 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_141176v3 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_141176v3, 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. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/index.html Participating hosts (46 -> 45) ------------------------------ Missing (1): fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_141176v3: ### IGT changes ### #### Possible regressions #### * igt@kms_busy@basic@modeset: - fi-kbl-7567u: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/fi-kbl-7567u/igt@kms_busy@basic@modeset.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/fi-kbl-7567u/igt@kms_busy@basic@modeset.html * igt@kms_flip@basic-flip-vs-wf_vblank@b-dp1: - bat-apl-1: [PASS][3] -> [DMESG-WARN][4] +1 other test dmesg-warn [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp1.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp1.html Known issues ------------ Here are the changes found in Patchwork_141176v3 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_rpm@module-reload: - bat-dg1-7: [PASS][5] -> [FAIL][6] ([i915#12903]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/bat-dg1-7/igt@i915_pm_rpm@module-reload.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-dg1-7/igt@i915_pm_rpm@module-reload.html * igt@i915_selftest@live: - bat-arlh-3: [PASS][7] -> [ABORT][8] ([i915#12829]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/bat-arlh-3/igt@i915_selftest@live.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-arlh-3/igt@i915_selftest@live.html - bat-twl-1: NOTRUN -> [ABORT][9] ([i915#12919]) +1 other test abort [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-twl-1/igt@i915_selftest@live.html * igt@i915_selftest@live@workarounds: - bat-arlh-3: [PASS][10] -> [ABORT][11] ([i915#12061]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/bat-arlh-3/igt@i915_selftest@live@workarounds.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-arlh-3/igt@i915_selftest@live@workarounds.html * igt@kms_flip@basic-flip-vs-wf_vblank: - bat-apl-1: [PASS][12] -> [DMESG-WARN][13] ([i915#1982]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15719/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12829]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12829 [i915#12903]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12903 [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919 [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982 Build changes ------------- * Linux: CI_DRM_15719 -> Patchwork_141176v3 CI-20190529: 20190529 CI_DRM_15719: 6af9eb4707b2f65024ac9412f3a9d76cc2516a9a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8116: 10a7dcaa598461073d6c7268704f32043af8722f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git Patchwork_141176v3: 6af9eb4707b2f65024ac9412f3a9d76cc2516a9a @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141176v3/index.html [-- Attachment #2: Type: text/html, Size: 5249 bytes --] ^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2024-11-19 13:31 UTC | newest] Thread overview: 25+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-11 17:53 [PATCH 0/5] drm/i915: intel_display conversions, cleanups Jani Nikula 2024-11-11 17:53 ` [PATCH 1/5] drm/i915/overlay: convert to struct intel_display Jani Nikula 2024-11-12 20:40 ` Rodrigo Vivi 2024-11-13 8:26 ` Jani Nikula 2024-11-11 17:53 ` [PATCH 2/5] drm/i915/overlay: add intel_overlay_available() and use it Jani Nikula 2024-11-14 17:51 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 3/5] drm/i915/plane: convert initial plane setup to struct intel_display Jani Nikula 2024-11-14 17:52 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 4/5] drm/i915/irq: hide display_irqs_enabled access Jani Nikula 2024-11-14 17:55 ` Rodrigo Vivi 2024-11-15 13:13 ` Jani Nikula 2024-11-15 19:10 ` Rodrigo Vivi 2024-11-11 17:53 ` [PATCH 5/5] drm/i915/irq: emphasize display_irqs_enabled is only about VLV/CHV Jani Nikula 2024-11-14 17:57 ` Rodrigo Vivi 2024-11-15 13:15 ` Jani Nikula 2024-11-15 19:11 ` Rodrigo Vivi 2024-11-11 19:00 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups Patchwork 2024-11-11 19:00 ` ✗ Fi.CI.SPARSE: " Patchwork 2024-11-11 19:01 ` ✗ Fi.CI.BAT: failure " Patchwork 2024-11-18 17:49 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev2) Patchwork 2024-11-18 17:49 ` ✗ Fi.CI.SPARSE: " Patchwork 2024-11-18 18:08 ` ✗ Fi.CI.BAT: failure " Patchwork 2024-11-19 13:15 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: intel_display conversions, cleanups (rev3) Patchwork 2024-11-19 13:16 ` ✗ Fi.CI.SPARSE: " Patchwork 2024-11-19 13:31 ` ✗ Fi.CI.BAT: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).