* [PATCH] drm/i915: Switch to per-crtc vblank vfuncs
@ 2019-06-18 8:58 Ville Syrjala
2019-06-18 9:41 ` ✗ Fi.CI.SPARSE: warning for " Patchwork
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Ville Syrjala @ 2019-06-18 8:58 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Switch from the driver-wide vblank vfuncs to the per-crtc ones so that
we don't have so many platform specific vfuncs in the driver struct.
We still need to do something about the rest fo the irq vfuncs...
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 104 ++++++++++++++++---
drivers/gpu/drm/i915/i915_irq.c | 93 +++++++----------
drivers/gpu/drm/i915/i915_irq.h | 14 +++
3 files changed, 143 insertions(+), 68 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 8d7e4c8b60bc..dc602a8a52fe 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -13556,7 +13556,7 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc)
if (!vblank->max_vblank_count)
return (u32)drm_crtc_accurate_vblank_count(&crtc->base);
- return dev->driver->get_vblank_counter(dev, crtc->pipe);
+ return crtc->base.funcs->get_vblank_counter(&crtc->base);
}
static void intel_update_crtc(struct drm_crtc *crtc,
@@ -14094,18 +14094,6 @@ static int intel_atomic_commit(struct drm_device *dev,
return 0;
}
-static const struct drm_crtc_funcs intel_crtc_funcs = {
- .gamma_set = drm_atomic_helper_legacy_gamma_set,
- .set_config = drm_atomic_helper_set_config,
- .destroy = intel_crtc_destroy,
- .page_flip = drm_atomic_helper_page_flip,
- .atomic_duplicate_state = intel_crtc_duplicate_state,
- .atomic_destroy_state = intel_crtc_destroy_state,
- .set_crc_source = intel_crtc_set_crc_source,
- .verify_crc_source = intel_crtc_verify_crc_source,
- .get_crc_sources = intel_crtc_get_crc_sources,
-};
-
struct wait_rps_boost {
struct wait_queue_entry wait;
@@ -14899,8 +14887,76 @@ static void intel_crtc_init_scalers(struct intel_crtc *crtc,
scaler_state->scaler_id = -1;
}
+#define INTEL_CRTC_FUNCS \
+ .gamma_set = drm_atomic_helper_legacy_gamma_set, \
+ .set_config = drm_atomic_helper_set_config, \
+ .destroy = intel_crtc_destroy, \
+ .page_flip = drm_atomic_helper_page_flip, \
+ .atomic_duplicate_state = intel_crtc_duplicate_state, \
+ .atomic_destroy_state = intel_crtc_destroy_state, \
+ .set_crc_source = intel_crtc_set_crc_source, \
+ .verify_crc_source = intel_crtc_verify_crc_source, \
+ .get_crc_sources = intel_crtc_get_crc_sources
+
+static const struct drm_crtc_funcs bdw_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = g4x_get_vblank_counter,
+ .enable_vblank = bdw_enable_vblank,
+ .disable_vblank = bdw_disable_vblank,
+};
+
+static const struct drm_crtc_funcs ilk_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = g4x_get_vblank_counter,
+ .enable_vblank = ilk_enable_vblank,
+ .disable_vblank = ilk_disable_vblank,
+};
+
+static const struct drm_crtc_funcs g4x_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = g4x_get_vblank_counter,
+ .enable_vblank = i965_enable_vblank,
+ .disable_vblank = i965_disable_vblank,
+};
+
+static const struct drm_crtc_funcs i965_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = i915_get_vblank_counter,
+ .enable_vblank = i965_enable_vblank,
+ .disable_vblank = i965_disable_vblank,
+};
+
+static const struct drm_crtc_funcs i945gm_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = i915_get_vblank_counter,
+ .enable_vblank = i945gm_enable_vblank,
+ .disable_vblank = i945gm_disable_vblank,
+};
+
+static const struct drm_crtc_funcs i915_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ .get_vblank_counter = i915_get_vblank_counter,
+ .enable_vblank = i8xx_enable_vblank,
+ .disable_vblank = i8xx_disable_vblank,
+};
+
+static const struct drm_crtc_funcs i8xx_crtc_funcs = {
+ INTEL_CRTC_FUNCS,
+
+ /* no hw vblank counter */
+ .enable_vblank = i8xx_enable_vblank,
+ .disable_vblank = i8xx_disable_vblank,
+};
+
static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe)
{
+ const struct drm_crtc_funcs *funcs;
struct intel_crtc *intel_crtc;
struct intel_crtc_state *crtc_state = NULL;
struct intel_plane *primary = NULL;
@@ -14944,10 +15000,28 @@ static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe)
}
intel_crtc->plane_ids_mask |= BIT(cursor->id);
+ if (HAS_GMCH(dev_priv)) {
+ if (IS_CHERRYVIEW(dev_priv) ||
+ IS_VALLEYVIEW(dev_priv) || IS_G4X(dev_priv))
+ funcs = &g4x_crtc_funcs;
+ else if (IS_GEN(dev_priv, 4))
+ funcs = &i965_crtc_funcs;
+ else if (IS_I945GM(dev_priv))
+ funcs = &i945gm_crtc_funcs;
+ else if (INTEL_GEN(dev_priv) >= 3)
+ funcs = &i915_crtc_funcs;
+ else
+ funcs = &i8xx_crtc_funcs;
+ } else {
+ if (INTEL_GEN(dev_priv) >= 8)
+ funcs = &bdw_crtc_funcs;
+ else
+ funcs = &ilk_crtc_funcs;
+ }
+
ret = drm_crtc_init_with_planes(&dev_priv->drm, &intel_crtc->base,
&primary->base, &cursor->base,
- &intel_crtc_funcs,
- "pipe %c", pipe_name(pipe));
+ funcs, "pipe %c", pipe_name(pipe));
if (ret)
goto fail;
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 2aeb0431c432..1cc27eeae3de 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -918,11 +918,12 @@ static void i915_enable_asle_pipestat(struct drm_i915_private *dev_priv)
/* Called from drm generic code, passed a 'crtc', which
* we use as a pipe index
*/
-static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe)
+u32 i915_get_vblank_counter(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
- struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[drm_crtc_index(crtc)];
const struct drm_display_mode *mode = &vblank->hwmode;
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
i915_reg_t high_frame, low_frame;
u32 high1, high2, low, pixel, vbl_start, hsync_start, htotal;
unsigned long irqflags;
@@ -983,9 +984,10 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe)
return (((high1 << 8) | low) + (pixel >= vbl_start)) & 0xffffff;
}
-static u32 g4x_get_vblank_counter(struct drm_device *dev, unsigned int pipe)
+u32 g4x_get_vblank_counter(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
return I915_READ(PIPE_FRMCOUNT_G4X(pipe));
}
@@ -3234,9 +3236,10 @@ static irqreturn_t gen11_irq_handler(int irq, void *arg)
/* Called from drm generic code, passed 'crtc' which
* we use as a pipe index
*/
-static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe)
+int i8xx_enable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3246,19 +3249,20 @@ static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe)
return 0;
}
-static int i945gm_enable_vblank(struct drm_device *dev, unsigned int pipe)
+int i945gm_enable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
if (dev_priv->i945gm_vblank.enabled++ == 0)
schedule_work(&dev_priv->i945gm_vblank.work);
- return i8xx_enable_vblank(dev, pipe);
+ return i8xx_enable_vblank(crtc);
}
-static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe)
+int i965_enable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3269,9 +3273,10 @@ static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe)
return 0;
}
-static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe)
+int ilk_enable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
u32 bit = INTEL_GEN(dev_priv) >= 7 ?
DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe);
@@ -3284,14 +3289,15 @@ static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe)
* PSR is active as no frames are generated.
*/
if (HAS_PSR(dev_priv))
- drm_vblank_restore(dev, pipe);
+ drm_crtc_vblank_restore(crtc);
return 0;
}
-static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe)
+int bdw_enable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3302,7 +3308,7 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe)
* PSR is active as no frames are generated, so check only for PSR.
*/
if (HAS_PSR(dev_priv))
- drm_vblank_restore(dev, pipe);
+ drm_crtc_vblank_restore(crtc);
return 0;
}
@@ -3310,9 +3316,10 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe)
/* Called from drm generic code, passed 'crtc' which
* we use as a pipe index
*/
-static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe)
+void i8xx_disable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3320,19 +3327,20 @@ static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe)
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
}
-static void i945gm_disable_vblank(struct drm_device *dev, unsigned int pipe)
+void i945gm_disable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
- i8xx_disable_vblank(dev, pipe);
+ i8xx_disable_vblank(crtc);
if (--dev_priv->i945gm_vblank.enabled == 0)
schedule_work(&dev_priv->i945gm_vblank.work);
}
-static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe)
+void i965_disable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3341,9 +3349,10 @@ static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe)
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
}
-static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe)
+void ilk_disable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
u32 bit = INTEL_GEN(dev_priv) >= 7 ?
DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe);
@@ -3353,9 +3362,10 @@ static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe)
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
}
-static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe)
+void bdw_disable_vblank(struct drm_crtc *crtc)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_i915_private *dev_priv = to_i915(crtc->dev);
+ enum pipe pipe = to_intel_crtc(crtc)->pipe;
unsigned long irqflags;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
@@ -3363,7 +3373,7 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe)
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
}
-static void i945gm_vblank_work_func(struct work_struct *work)
+void i945gm_vblank_work_func(struct work_struct *work)
{
struct drm_i915_private *dev_priv =
container_of(work, struct drm_i915_private, i945gm_vblank.work);
@@ -4796,11 +4806,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
if (INTEL_GEN(dev_priv) >= 8)
rps->pm_intrmsk_mbz |= GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC;
- if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
- dev->driver->get_vblank_counter = g4x_get_vblank_counter;
- else if (INTEL_GEN(dev_priv) >= 3)
- dev->driver->get_vblank_counter = i915_get_vblank_counter;
-
dev->vblank_disable_immediate = true;
/* Most platforms treat the display irq block as an always-on
@@ -4830,32 +4835,24 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
dev->driver->irq_preinstall = cherryview_irq_reset;
dev->driver->irq_postinstall = cherryview_irq_postinstall;
dev->driver->irq_uninstall = cherryview_irq_reset;
- dev->driver->enable_vblank = i965_enable_vblank;
- dev->driver->disable_vblank = i965_disable_vblank;
dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup;
} else if (IS_VALLEYVIEW(dev_priv)) {
dev->driver->irq_handler = valleyview_irq_handler;
dev->driver->irq_preinstall = valleyview_irq_reset;
dev->driver->irq_postinstall = valleyview_irq_postinstall;
dev->driver->irq_uninstall = valleyview_irq_reset;
- dev->driver->enable_vblank = i965_enable_vblank;
- dev->driver->disable_vblank = i965_disable_vblank;
dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup;
} else if (INTEL_GEN(dev_priv) >= 11) {
dev->driver->irq_handler = gen11_irq_handler;
dev->driver->irq_preinstall = gen11_irq_reset;
dev->driver->irq_postinstall = gen11_irq_postinstall;
dev->driver->irq_uninstall = gen11_irq_reset;
- dev->driver->enable_vblank = gen8_enable_vblank;
- dev->driver->disable_vblank = gen8_disable_vblank;
dev_priv->display.hpd_irq_setup = gen11_hpd_irq_setup;
} else if (INTEL_GEN(dev_priv) >= 8) {
dev->driver->irq_handler = gen8_irq_handler;
dev->driver->irq_preinstall = gen8_irq_reset;
dev->driver->irq_postinstall = gen8_irq_postinstall;
dev->driver->irq_uninstall = gen8_irq_reset;
- dev->driver->enable_vblank = gen8_enable_vblank;
- dev->driver->disable_vblank = gen8_disable_vblank;
if (IS_GEN9_LP(dev_priv))
dev_priv->display.hpd_irq_setup = bxt_hpd_irq_setup;
else if (INTEL_PCH_TYPE(dev_priv) >= PCH_SPT)
@@ -4867,8 +4864,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
dev->driver->irq_preinstall = ironlake_irq_reset;
dev->driver->irq_postinstall = ironlake_irq_postinstall;
dev->driver->irq_uninstall = ironlake_irq_reset;
- dev->driver->enable_vblank = ironlake_enable_vblank;
- dev->driver->disable_vblank = ironlake_disable_vblank;
dev_priv->display.hpd_irq_setup = ilk_hpd_irq_setup;
} else {
if (IS_GEN(dev_priv, 2)) {
@@ -4876,29 +4871,21 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
dev->driver->irq_postinstall = i8xx_irq_postinstall;
dev->driver->irq_handler = i8xx_irq_handler;
dev->driver->irq_uninstall = i8xx_irq_reset;
- dev->driver->enable_vblank = i8xx_enable_vblank;
- dev->driver->disable_vblank = i8xx_disable_vblank;
} else if (IS_I945GM(dev_priv)) {
dev->driver->irq_preinstall = i915_irq_reset;
dev->driver->irq_postinstall = i915_irq_postinstall;
dev->driver->irq_uninstall = i915_irq_reset;
dev->driver->irq_handler = i915_irq_handler;
- dev->driver->enable_vblank = i945gm_enable_vblank;
- dev->driver->disable_vblank = i945gm_disable_vblank;
} else if (IS_GEN(dev_priv, 3)) {
dev->driver->irq_preinstall = i915_irq_reset;
dev->driver->irq_postinstall = i915_irq_postinstall;
dev->driver->irq_uninstall = i915_irq_reset;
dev->driver->irq_handler = i915_irq_handler;
- dev->driver->enable_vblank = i8xx_enable_vblank;
- dev->driver->disable_vblank = i8xx_disable_vblank;
} else {
dev->driver->irq_preinstall = i965_irq_reset;
dev->driver->irq_postinstall = i965_irq_postinstall;
dev->driver->irq_uninstall = i965_irq_reset;
dev->driver->irq_handler = i965_irq_handler;
- dev->driver->enable_vblank = i965_enable_vblank;
- dev->driver->disable_vblank = i965_disable_vblank;
}
if (I915_HAS_HOTPLUG(dev_priv))
dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup;
diff --git a/drivers/gpu/drm/i915/i915_irq.h b/drivers/gpu/drm/i915/i915_irq.h
index cb25dd213308..ef782e5ab240 100644
--- a/drivers/gpu/drm/i915/i915_irq.h
+++ b/drivers/gpu/drm/i915/i915_irq.h
@@ -114,4 +114,18 @@ void gen11_reset_guc_interrupts(struct drm_i915_private *i915);
void gen11_enable_guc_interrupts(struct drm_i915_private *i915);
void gen11_disable_guc_interrupts(struct drm_i915_private *i915);
+u32 i915_get_vblank_counter(struct drm_crtc *crtc);
+u32 g4x_get_vblank_counter(struct drm_crtc *crtc);
+
+int i8xx_enable_vblank(struct drm_crtc *crtc);
+int i945gm_enable_vblank(struct drm_crtc *crtc);
+int i965_enable_vblank(struct drm_crtc *crtc);
+int ilk_enable_vblank(struct drm_crtc *crtc);
+int bdw_enable_vblank(struct drm_crtc *crtc);
+void i8xx_disable_vblank(struct drm_crtc *crtc);
+void i945gm_disable_vblank(struct drm_crtc *crtc);
+void i965_disable_vblank(struct drm_crtc *crtc);
+void ilk_disable_vblank(struct drm_crtc *crtc);
+void bdw_disable_vblank(struct drm_crtc *crtc);
+
#endif /* __I915_IRQ_H__ */
--
2.21.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 6+ messages in thread* ✗ Fi.CI.SPARSE: warning for drm/i915: Switch to per-crtc vblank vfuncs 2019-06-18 8:58 [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Ville Syrjala @ 2019-06-18 9:41 ` Patchwork 2019-06-18 9:57 ` ✓ Fi.CI.BAT: success " Patchwork ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2019-06-18 9:41 UTC (permalink / raw) To: Ville Syrjala; +Cc: intel-gfx == Series Details == Series: drm/i915: Switch to per-crtc vblank vfuncs URL : https://patchwork.freedesktop.org/series/62287/ State : warning == Summary == $ dim sparse origin/drm-tip Sparse version: v0.5.2 Commit: drm/i915: Switch to per-crtc vblank vfuncs +drivers/gpu/drm/i915/i915_irq.c:3385:6: warning: symbol 'i945gm_vblank_work_func' was not declared. Should it be static? _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Switch to per-crtc vblank vfuncs 2019-06-18 8:58 [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Ville Syrjala 2019-06-18 9:41 ` ✗ Fi.CI.SPARSE: warning for " Patchwork @ 2019-06-18 9:57 ` Patchwork 2019-06-18 12:55 ` [PATCH] " Jani Nikula 2019-06-18 20:58 ` ✗ Fi.CI.IGT: failure for " Patchwork 3 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2019-06-18 9:57 UTC (permalink / raw) To: Ville Syrjala; +Cc: intel-gfx == Series Details == Series: drm/i915: Switch to per-crtc vblank vfuncs URL : https://patchwork.freedesktop.org/series/62287/ State : success == Summary == CI Bug Log - changes from CI_DRM_6290 -> Patchwork_13321 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/ Known issues ------------ Here are the changes found in Patchwork_13321 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_basic@bad-close: - fi-icl-u3: [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/fi-icl-u3/igt@gem_basic@bad-close.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/fi-icl-u3/igt@gem_basic@bad-close.html * igt@gem_ctx_switch@basic-default: - fi-icl-y: [PASS][3] -> [INCOMPLETE][4] ([fdo#107713] / [fdo#108569]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/fi-icl-y/igt@gem_ctx_switch@basic-default.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/fi-icl-y/igt@gem_ctx_switch@basic-default.html #### Possible fixes #### * igt@gem_render_tiled_blits@basic: - fi-icl-u3: [DMESG-WARN][5] ([fdo#107724]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/fi-icl-u3/igt@gem_render_tiled_blits@basic.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/fi-icl-u3/igt@gem_render_tiled_blits@basic.html * igt@kms_frontbuffer_tracking@basic: - fi-hsw-peppy: [DMESG-WARN][7] ([fdo#102614]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 Participating hosts (51 -> 38) ------------------------------ Additional (1): fi-icl-u2 Missing (14): fi-kbl-soraka fi-cml-u2 fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-whl-u fi-kbl-x1275 fi-skl-iommu fi-kbl-8809g fi-byt-clapper fi-bdw-samus fi-cml-u Build changes ------------- * Linux: CI_DRM_6290 -> Patchwork_13321 CI_DRM_6290: a0fa10b5d68fd65375029dd8b61d6c8c6aa1413f @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5059: 1f67ee0d09d6513f487f2be74aae9700e755258a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13321: 0bb011a0f3818ba3df011187e2883ec6380c6882 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 0bb011a0f381 drm/i915: Switch to per-crtc vblank vfuncs == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Switch to per-crtc vblank vfuncs 2019-06-18 8:58 [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Ville Syrjala 2019-06-18 9:41 ` ✗ Fi.CI.SPARSE: warning for " Patchwork 2019-06-18 9:57 ` ✓ Fi.CI.BAT: success " Patchwork @ 2019-06-18 12:55 ` Jani Nikula 2019-06-18 13:34 ` Ville Syrjälä 2019-06-18 20:58 ` ✗ Fi.CI.IGT: failure for " Patchwork 3 siblings, 1 reply; 6+ messages in thread From: Jani Nikula @ 2019-06-18 12:55 UTC (permalink / raw) To: Ville Syrjala, intel-gfx On Tue, 18 Jun 2019, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Switch from the driver-wide vblank vfuncs to the per-crtc ones so that > we don't have so many platform specific vfuncs in the driver struct. > > We still need to do something about the rest fo the irq vfuncs... We'll also need to do something about having all of this in intel_display.c. Would intel_crtc.[ch] be too close to intel_crt.[ch]? Also, intel_encoder.[ch]? Or, move everything *else* out of intel_display.c? Not part of this patch, obviously. Some comments inline. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_display.c | 104 ++++++++++++++++--- > drivers/gpu/drm/i915/i915_irq.c | 93 +++++++---------- > drivers/gpu/drm/i915/i915_irq.h | 14 +++ > 3 files changed, 143 insertions(+), 68 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 8d7e4c8b60bc..dc602a8a52fe 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -13556,7 +13556,7 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc) > if (!vblank->max_vblank_count) > return (u32)drm_crtc_accurate_vblank_count(&crtc->base); > > - return dev->driver->get_vblank_counter(dev, crtc->pipe); > + return crtc->base.funcs->get_vblank_counter(&crtc->base); > } > > static void intel_update_crtc(struct drm_crtc *crtc, > @@ -14094,18 +14094,6 @@ static int intel_atomic_commit(struct drm_device *dev, > return 0; > } > > -static const struct drm_crtc_funcs intel_crtc_funcs = { > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > - .set_config = drm_atomic_helper_set_config, > - .destroy = intel_crtc_destroy, > - .page_flip = drm_atomic_helper_page_flip, > - .atomic_duplicate_state = intel_crtc_duplicate_state, > - .atomic_destroy_state = intel_crtc_destroy_state, > - .set_crc_source = intel_crtc_set_crc_source, > - .verify_crc_source = intel_crtc_verify_crc_source, > - .get_crc_sources = intel_crtc_get_crc_sources, > -}; > - > struct wait_rps_boost { > struct wait_queue_entry wait; > > @@ -14899,8 +14887,76 @@ static void intel_crtc_init_scalers(struct intel_crtc *crtc, > scaler_state->scaler_id = -1; > } > > +#define INTEL_CRTC_FUNCS \ > + .gamma_set = drm_atomic_helper_legacy_gamma_set, \ > + .set_config = drm_atomic_helper_set_config, \ > + .destroy = intel_crtc_destroy, \ > + .page_flip = drm_atomic_helper_page_flip, \ > + .atomic_duplicate_state = intel_crtc_duplicate_state, \ > + .atomic_destroy_state = intel_crtc_destroy_state, \ > + .set_crc_source = intel_crtc_set_crc_source, \ > + .verify_crc_source = intel_crtc_verify_crc_source, \ > + .get_crc_sources = intel_crtc_get_crc_sources > + > +static const struct drm_crtc_funcs bdw_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = g4x_get_vblank_counter, > + .enable_vblank = bdw_enable_vblank, > + .disable_vblank = bdw_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs ilk_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = g4x_get_vblank_counter, > + .enable_vblank = ilk_enable_vblank, > + .disable_vblank = ilk_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs g4x_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = g4x_get_vblank_counter, > + .enable_vblank = i965_enable_vblank, > + .disable_vblank = i965_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs i965_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = i915_get_vblank_counter, > + .enable_vblank = i965_enable_vblank, > + .disable_vblank = i965_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs i945gm_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = i915_get_vblank_counter, > + .enable_vblank = i945gm_enable_vblank, > + .disable_vblank = i945gm_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs i915_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + .get_vblank_counter = i915_get_vblank_counter, > + .enable_vblank = i8xx_enable_vblank, > + .disable_vblank = i8xx_disable_vblank, > +}; > + > +static const struct drm_crtc_funcs i8xx_crtc_funcs = { > + INTEL_CRTC_FUNCS, > + > + /* no hw vblank counter */ > + .enable_vblank = i8xx_enable_vblank, > + .disable_vblank = i8xx_disable_vblank, > +}; > + > static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe) > { > + const struct drm_crtc_funcs *funcs; > struct intel_crtc *intel_crtc; > struct intel_crtc_state *crtc_state = NULL; > struct intel_plane *primary = NULL; > @@ -14944,10 +15000,28 @@ static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe) > } > intel_crtc->plane_ids_mask |= BIT(cursor->id); > > + if (HAS_GMCH(dev_priv)) { > + if (IS_CHERRYVIEW(dev_priv) || > + IS_VALLEYVIEW(dev_priv) || IS_G4X(dev_priv)) > + funcs = &g4x_crtc_funcs; > + else if (IS_GEN(dev_priv, 4)) > + funcs = &i965_crtc_funcs; > + else if (IS_I945GM(dev_priv)) > + funcs = &i945gm_crtc_funcs; > + else if (INTEL_GEN(dev_priv) >= 3) > + funcs = &i915_crtc_funcs; > + else > + funcs = &i8xx_crtc_funcs; > + } else { > + if (INTEL_GEN(dev_priv) >= 8) > + funcs = &bdw_crtc_funcs; > + else > + funcs = &ilk_crtc_funcs; > + } > + That's a kind of odd ordering wrt everything else we have. I guess it's CHV that messes up the regular order worst? > ret = drm_crtc_init_with_planes(&dev_priv->drm, &intel_crtc->base, > &primary->base, &cursor->base, > - &intel_crtc_funcs, > - "pipe %c", pipe_name(pipe)); > + funcs, "pipe %c", pipe_name(pipe)); > if (ret) > goto fail; > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 2aeb0431c432..1cc27eeae3de 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -918,11 +918,12 @@ static void i915_enable_asle_pipestat(struct drm_i915_private *dev_priv) > /* Called from drm generic code, passed a 'crtc', which > * we use as a pipe index > */ > -static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > +u32 i915_get_vblank_counter(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > - struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[drm_crtc_index(crtc)]; > const struct drm_display_mode *mode = &vblank->hwmode; > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > i915_reg_t high_frame, low_frame; > u32 high1, high2, low, pixel, vbl_start, hsync_start, htotal; > unsigned long irqflags; > @@ -983,9 +984,10 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > return (((high1 << 8) | low) + (pixel >= vbl_start)) & 0xffffff; > } > > -static u32 g4x_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > +u32 g4x_get_vblank_counter(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > return I915_READ(PIPE_FRMCOUNT_G4X(pipe)); > } > @@ -3234,9 +3236,10 @@ static irqreturn_t gen11_irq_handler(int irq, void *arg) > /* Called from drm generic code, passed 'crtc' which > * we use as a pipe index > */ > -static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe) > +int i8xx_enable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3246,19 +3249,20 @@ static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe) > return 0; > } > > -static int i945gm_enable_vblank(struct drm_device *dev, unsigned int pipe) > +int i945gm_enable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > if (dev_priv->i945gm_vblank.enabled++ == 0) > schedule_work(&dev_priv->i945gm_vblank.work); > > - return i8xx_enable_vblank(dev, pipe); > + return i8xx_enable_vblank(crtc); > } > > -static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe) > +int i965_enable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3269,9 +3273,10 @@ static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe) > return 0; > } > > -static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe) > +int ilk_enable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > u32 bit = INTEL_GEN(dev_priv) >= 7 ? > DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe); > @@ -3284,14 +3289,15 @@ static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe) > * PSR is active as no frames are generated. > */ > if (HAS_PSR(dev_priv)) > - drm_vblank_restore(dev, pipe); > + drm_crtc_vblank_restore(crtc); > > return 0; > } > > -static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > +int bdw_enable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3302,7 +3308,7 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > * PSR is active as no frames are generated, so check only for PSR. > */ > if (HAS_PSR(dev_priv)) > - drm_vblank_restore(dev, pipe); > + drm_crtc_vblank_restore(crtc); > > return 0; > } > @@ -3310,9 +3316,10 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > /* Called from drm generic code, passed 'crtc' which > * we use as a pipe index > */ > -static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe) > +void i8xx_disable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3320,19 +3327,20 @@ static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe) > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > } > > -static void i945gm_disable_vblank(struct drm_device *dev, unsigned int pipe) > +void i945gm_disable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > - i8xx_disable_vblank(dev, pipe); > + i8xx_disable_vblank(crtc); > > if (--dev_priv->i945gm_vblank.enabled == 0) > schedule_work(&dev_priv->i945gm_vblank.work); > } > > -static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe) > +void i965_disable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3341,9 +3349,10 @@ static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe) > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > } > > -static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe) > +void ilk_disable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > u32 bit = INTEL_GEN(dev_priv) >= 7 ? > DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe); > @@ -3353,9 +3362,10 @@ static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe) > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > } > > -static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) > +void bdw_disable_vblank(struct drm_crtc *crtc) > { > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > unsigned long irqflags; > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > @@ -3363,7 +3373,7 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > } > > -static void i945gm_vblank_work_func(struct work_struct *work) > +void i945gm_vblank_work_func(struct work_struct *work) > { > struct drm_i915_private *dev_priv = > container_of(work, struct drm_i915_private, i945gm_vblank.work); > @@ -4796,11 +4806,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > if (INTEL_GEN(dev_priv) >= 8) > rps->pm_intrmsk_mbz |= GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC; > > - if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) > - dev->driver->get_vblank_counter = g4x_get_vblank_counter; > - else if (INTEL_GEN(dev_priv) >= 3) > - dev->driver->get_vblank_counter = i915_get_vblank_counter; > - > dev->vblank_disable_immediate = true; > > /* Most platforms treat the display irq block as an always-on > @@ -4830,32 +4835,24 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > dev->driver->irq_preinstall = cherryview_irq_reset; > dev->driver->irq_postinstall = cherryview_irq_postinstall; > dev->driver->irq_uninstall = cherryview_irq_reset; > - dev->driver->enable_vblank = i965_enable_vblank; > - dev->driver->disable_vblank = i965_disable_vblank; > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } else if (IS_VALLEYVIEW(dev_priv)) { > dev->driver->irq_handler = valleyview_irq_handler; > dev->driver->irq_preinstall = valleyview_irq_reset; > dev->driver->irq_postinstall = valleyview_irq_postinstall; > dev->driver->irq_uninstall = valleyview_irq_reset; > - dev->driver->enable_vblank = i965_enable_vblank; > - dev->driver->disable_vblank = i965_disable_vblank; > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } else if (INTEL_GEN(dev_priv) >= 11) { > dev->driver->irq_handler = gen11_irq_handler; > dev->driver->irq_preinstall = gen11_irq_reset; > dev->driver->irq_postinstall = gen11_irq_postinstall; > dev->driver->irq_uninstall = gen11_irq_reset; > - dev->driver->enable_vblank = gen8_enable_vblank; > - dev->driver->disable_vblank = gen8_disable_vblank; > dev_priv->display.hpd_irq_setup = gen11_hpd_irq_setup; > } else if (INTEL_GEN(dev_priv) >= 8) { > dev->driver->irq_handler = gen8_irq_handler; > dev->driver->irq_preinstall = gen8_irq_reset; > dev->driver->irq_postinstall = gen8_irq_postinstall; > dev->driver->irq_uninstall = gen8_irq_reset; > - dev->driver->enable_vblank = gen8_enable_vblank; > - dev->driver->disable_vblank = gen8_disable_vblank; > if (IS_GEN9_LP(dev_priv)) > dev_priv->display.hpd_irq_setup = bxt_hpd_irq_setup; > else if (INTEL_PCH_TYPE(dev_priv) >= PCH_SPT) > @@ -4867,8 +4864,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > dev->driver->irq_preinstall = ironlake_irq_reset; > dev->driver->irq_postinstall = ironlake_irq_postinstall; > dev->driver->irq_uninstall = ironlake_irq_reset; > - dev->driver->enable_vblank = ironlake_enable_vblank; > - dev->driver->disable_vblank = ironlake_disable_vblank; > dev_priv->display.hpd_irq_setup = ilk_hpd_irq_setup; > } else { > if (IS_GEN(dev_priv, 2)) { > @@ -4876,29 +4871,21 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > dev->driver->irq_postinstall = i8xx_irq_postinstall; > dev->driver->irq_handler = i8xx_irq_handler; > dev->driver->irq_uninstall = i8xx_irq_reset; > - dev->driver->enable_vblank = i8xx_enable_vblank; > - dev->driver->disable_vblank = i8xx_disable_vblank; > } else if (IS_I945GM(dev_priv)) { > dev->driver->irq_preinstall = i915_irq_reset; > dev->driver->irq_postinstall = i915_irq_postinstall; > dev->driver->irq_uninstall = i915_irq_reset; > dev->driver->irq_handler = i915_irq_handler; > - dev->driver->enable_vblank = i945gm_enable_vblank; > - dev->driver->disable_vblank = i945gm_disable_vblank; > } else if (IS_GEN(dev_priv, 3)) { > dev->driver->irq_preinstall = i915_irq_reset; > dev->driver->irq_postinstall = i915_irq_postinstall; > dev->driver->irq_uninstall = i915_irq_reset; > dev->driver->irq_handler = i915_irq_handler; > - dev->driver->enable_vblank = i8xx_enable_vblank; > - dev->driver->disable_vblank = i8xx_disable_vblank; > } else { > dev->driver->irq_preinstall = i965_irq_reset; > dev->driver->irq_postinstall = i965_irq_postinstall; > dev->driver->irq_uninstall = i965_irq_reset; > dev->driver->irq_handler = i965_irq_handler; > - dev->driver->enable_vblank = i965_enable_vblank; > - dev->driver->disable_vblank = i965_disable_vblank; > } > if (I915_HAS_HOTPLUG(dev_priv)) > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > diff --git a/drivers/gpu/drm/i915/i915_irq.h b/drivers/gpu/drm/i915/i915_irq.h > index cb25dd213308..ef782e5ab240 100644 > --- a/drivers/gpu/drm/i915/i915_irq.h > +++ b/drivers/gpu/drm/i915/i915_irq.h > @@ -114,4 +114,18 @@ void gen11_reset_guc_interrupts(struct drm_i915_private *i915); > void gen11_enable_guc_interrupts(struct drm_i915_private *i915); > void gen11_disable_guc_interrupts(struct drm_i915_private *i915); > > +u32 i915_get_vblank_counter(struct drm_crtc *crtc); > +u32 g4x_get_vblank_counter(struct drm_crtc *crtc); > + > +int i8xx_enable_vblank(struct drm_crtc *crtc); > +int i945gm_enable_vblank(struct drm_crtc *crtc); > +int i965_enable_vblank(struct drm_crtc *crtc); > +int ilk_enable_vblank(struct drm_crtc *crtc); > +int bdw_enable_vblank(struct drm_crtc *crtc); > +void i8xx_disable_vblank(struct drm_crtc *crtc); > +void i945gm_disable_vblank(struct drm_crtc *crtc); > +void i965_disable_vblank(struct drm_crtc *crtc); > +void ilk_disable_vblank(struct drm_crtc *crtc); > +void bdw_disable_vblank(struct drm_crtc *crtc); *cringe* at exposing so many platform specific functions from i915_irq.c. BR, Jani. > + > #endif /* __I915_IRQ_H__ */ -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Switch to per-crtc vblank vfuncs 2019-06-18 12:55 ` [PATCH] " Jani Nikula @ 2019-06-18 13:34 ` Ville Syrjälä 0 siblings, 0 replies; 6+ messages in thread From: Ville Syrjälä @ 2019-06-18 13:34 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx On Tue, Jun 18, 2019 at 03:55:07PM +0300, Jani Nikula wrote: > On Tue, 18 Jun 2019, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Switch from the driver-wide vblank vfuncs to the per-crtc ones so that > > we don't have so many platform specific vfuncs in the driver struct. > > > > We still need to do something about the rest fo the irq vfuncs... > > We'll also need to do something about having all of this in > intel_display.c. Would intel_crtc.[ch] be too close to intel_crt.[ch]? > > Also, intel_encoder.[ch]? > > Or, move everything *else* out of intel_display.c? I think intel_crtc.c would be ok as a name. Or intel_pipe.c if the crt it too close. Just not at all sure what to move there. Moving plane stuff from intel_display.c,intel_sprite.c,intel_atomic_plane.c to intel_plane.c,i9xx_plane.c,skl_plane.c,intel_cursor.c (or something along those lines) might be a good way to go. intel_frambuffer.c or some such thing might be a good extraction candicate too. Those are probably how I'd start at least. > > Not part of this patch, obviously. Some comments inline. > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_display.c | 104 ++++++++++++++++--- > > drivers/gpu/drm/i915/i915_irq.c | 93 +++++++---------- > > drivers/gpu/drm/i915/i915_irq.h | 14 +++ > > 3 files changed, 143 insertions(+), 68 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > > index 8d7e4c8b60bc..dc602a8a52fe 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display.c > > +++ b/drivers/gpu/drm/i915/display/intel_display.c > > @@ -13556,7 +13556,7 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc) > > if (!vblank->max_vblank_count) > > return (u32)drm_crtc_accurate_vblank_count(&crtc->base); > > > > - return dev->driver->get_vblank_counter(dev, crtc->pipe); > > + return crtc->base.funcs->get_vblank_counter(&crtc->base); > > } > > > > static void intel_update_crtc(struct drm_crtc *crtc, > > @@ -14094,18 +14094,6 @@ static int intel_atomic_commit(struct drm_device *dev, > > return 0; > > } > > > > -static const struct drm_crtc_funcs intel_crtc_funcs = { > > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > > - .set_config = drm_atomic_helper_set_config, > > - .destroy = intel_crtc_destroy, > > - .page_flip = drm_atomic_helper_page_flip, > > - .atomic_duplicate_state = intel_crtc_duplicate_state, > > - .atomic_destroy_state = intel_crtc_destroy_state, > > - .set_crc_source = intel_crtc_set_crc_source, > > - .verify_crc_source = intel_crtc_verify_crc_source, > > - .get_crc_sources = intel_crtc_get_crc_sources, > > -}; > > - > > struct wait_rps_boost { > > struct wait_queue_entry wait; > > > > @@ -14899,8 +14887,76 @@ static void intel_crtc_init_scalers(struct intel_crtc *crtc, > > scaler_state->scaler_id = -1; > > } > > > > +#define INTEL_CRTC_FUNCS \ > > + .gamma_set = drm_atomic_helper_legacy_gamma_set, \ > > + .set_config = drm_atomic_helper_set_config, \ > > + .destroy = intel_crtc_destroy, \ > > + .page_flip = drm_atomic_helper_page_flip, \ > > + .atomic_duplicate_state = intel_crtc_duplicate_state, \ > > + .atomic_destroy_state = intel_crtc_destroy_state, \ > > + .set_crc_source = intel_crtc_set_crc_source, \ > > + .verify_crc_source = intel_crtc_verify_crc_source, \ > > + .get_crc_sources = intel_crtc_get_crc_sources > > + > > +static const struct drm_crtc_funcs bdw_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = g4x_get_vblank_counter, > > + .enable_vblank = bdw_enable_vblank, > > + .disable_vblank = bdw_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs ilk_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = g4x_get_vblank_counter, > > + .enable_vblank = ilk_enable_vblank, > > + .disable_vblank = ilk_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs g4x_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = g4x_get_vblank_counter, > > + .enable_vblank = i965_enable_vblank, > > + .disable_vblank = i965_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs i965_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = i915_get_vblank_counter, > > + .enable_vblank = i965_enable_vblank, > > + .disable_vblank = i965_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs i945gm_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = i915_get_vblank_counter, > > + .enable_vblank = i945gm_enable_vblank, > > + .disable_vblank = i945gm_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs i915_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + .get_vblank_counter = i915_get_vblank_counter, > > + .enable_vblank = i8xx_enable_vblank, > > + .disable_vblank = i8xx_disable_vblank, > > +}; > > + > > +static const struct drm_crtc_funcs i8xx_crtc_funcs = { > > + INTEL_CRTC_FUNCS, > > + > > + /* no hw vblank counter */ > > + .enable_vblank = i8xx_enable_vblank, > > + .disable_vblank = i8xx_disable_vblank, > > +}; > > + > > static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe) > > { > > + const struct drm_crtc_funcs *funcs; > > struct intel_crtc *intel_crtc; > > struct intel_crtc_state *crtc_state = NULL; > > struct intel_plane *primary = NULL; > > @@ -14944,10 +15000,28 @@ static int intel_crtc_init(struct drm_i915_private *dev_priv, enum pipe pipe) > > } > > intel_crtc->plane_ids_mask |= BIT(cursor->id); > > > > + if (HAS_GMCH(dev_priv)) { > > + if (IS_CHERRYVIEW(dev_priv) || > > + IS_VALLEYVIEW(dev_priv) || IS_G4X(dev_priv)) > > + funcs = &g4x_crtc_funcs; > > + else if (IS_GEN(dev_priv, 4)) > > + funcs = &i965_crtc_funcs; > > + else if (IS_I945GM(dev_priv)) > > + funcs = &i945gm_crtc_funcs; > > + else if (INTEL_GEN(dev_priv) >= 3) > > + funcs = &i915_crtc_funcs; > > + else > > + funcs = &i8xx_crtc_funcs; > > + } else { > > + if (INTEL_GEN(dev_priv) >= 8) > > + funcs = &bdw_crtc_funcs; > > + else > > + funcs = &ilk_crtc_funcs; > > + } > > + > > That's a kind of odd ordering wrt everything else we have. I guess it's > CHV that messes up the regular order worst? I've started to use this gmch vs. not split elsewhere as well because trying to stuff them all into a single if ladder is just confusing. > > > > > ret = drm_crtc_init_with_planes(&dev_priv->drm, &intel_crtc->base, > > &primary->base, &cursor->base, > > - &intel_crtc_funcs, > > - "pipe %c", pipe_name(pipe)); > > + funcs, "pipe %c", pipe_name(pipe)); > > if (ret) > > goto fail; > > > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > > index 2aeb0431c432..1cc27eeae3de 100644 > > --- a/drivers/gpu/drm/i915/i915_irq.c > > +++ b/drivers/gpu/drm/i915/i915_irq.c > > @@ -918,11 +918,12 @@ static void i915_enable_asle_pipestat(struct drm_i915_private *dev_priv) > > /* Called from drm generic code, passed a 'crtc', which > > * we use as a pipe index > > */ > > -static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > > +u32 i915_get_vblank_counter(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > - struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[drm_crtc_index(crtc)]; > > const struct drm_display_mode *mode = &vblank->hwmode; > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > i915_reg_t high_frame, low_frame; > > u32 high1, high2, low, pixel, vbl_start, hsync_start, htotal; > > unsigned long irqflags; > > @@ -983,9 +984,10 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > > return (((high1 << 8) | low) + (pixel >= vbl_start)) & 0xffffff; > > } > > > > -static u32 g4x_get_vblank_counter(struct drm_device *dev, unsigned int pipe) > > +u32 g4x_get_vblank_counter(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > > > return I915_READ(PIPE_FRMCOUNT_G4X(pipe)); > > } > > @@ -3234,9 +3236,10 @@ static irqreturn_t gen11_irq_handler(int irq, void *arg) > > /* Called from drm generic code, passed 'crtc' which > > * we use as a pipe index > > */ > > -static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe) > > +int i8xx_enable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3246,19 +3249,20 @@ static int i8xx_enable_vblank(struct drm_device *dev, unsigned int pipe) > > return 0; > > } > > > > -static int i945gm_enable_vblank(struct drm_device *dev, unsigned int pipe) > > +int i945gm_enable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > > > if (dev_priv->i945gm_vblank.enabled++ == 0) > > schedule_work(&dev_priv->i945gm_vblank.work); > > > > - return i8xx_enable_vblank(dev, pipe); > > + return i8xx_enable_vblank(crtc); > > } > > > > -static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe) > > +int i965_enable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3269,9 +3273,10 @@ static int i965_enable_vblank(struct drm_device *dev, unsigned int pipe) > > return 0; > > } > > > > -static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe) > > +int ilk_enable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > u32 bit = INTEL_GEN(dev_priv) >= 7 ? > > DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe); > > @@ -3284,14 +3289,15 @@ static int ironlake_enable_vblank(struct drm_device *dev, unsigned int pipe) > > * PSR is active as no frames are generated. > > */ > > if (HAS_PSR(dev_priv)) > > - drm_vblank_restore(dev, pipe); > > + drm_crtc_vblank_restore(crtc); > > > > return 0; > > } > > > > -static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > > +int bdw_enable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3302,7 +3308,7 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > > * PSR is active as no frames are generated, so check only for PSR. > > */ > > if (HAS_PSR(dev_priv)) > > - drm_vblank_restore(dev, pipe); > > + drm_crtc_vblank_restore(crtc); > > > > return 0; > > } > > @@ -3310,9 +3316,10 @@ static int gen8_enable_vblank(struct drm_device *dev, unsigned int pipe) > > /* Called from drm generic code, passed 'crtc' which > > * we use as a pipe index > > */ > > -static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe) > > +void i8xx_disable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3320,19 +3327,20 @@ static void i8xx_disable_vblank(struct drm_device *dev, unsigned int pipe) > > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > > } > > > > -static void i945gm_disable_vblank(struct drm_device *dev, unsigned int pipe) > > +void i945gm_disable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > > > - i8xx_disable_vblank(dev, pipe); > > + i8xx_disable_vblank(crtc); > > > > if (--dev_priv->i945gm_vblank.enabled == 0) > > schedule_work(&dev_priv->i945gm_vblank.work); > > } > > > > -static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe) > > +void i965_disable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3341,9 +3349,10 @@ static void i965_disable_vblank(struct drm_device *dev, unsigned int pipe) > > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > > } > > > > -static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe) > > +void ilk_disable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > u32 bit = INTEL_GEN(dev_priv) >= 7 ? > > DE_PIPE_VBLANK_IVB(pipe) : DE_PIPE_VBLANK(pipe); > > @@ -3353,9 +3362,10 @@ static void ironlake_disable_vblank(struct drm_device *dev, unsigned int pipe) > > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > > } > > > > -static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) > > +void bdw_disable_vblank(struct drm_crtc *crtc) > > { > > - struct drm_i915_private *dev_priv = to_i915(dev); > > + struct drm_i915_private *dev_priv = to_i915(crtc->dev); > > + enum pipe pipe = to_intel_crtc(crtc)->pipe; > > unsigned long irqflags; > > > > spin_lock_irqsave(&dev_priv->irq_lock, irqflags); > > @@ -3363,7 +3373,7 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) > > spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); > > } > > > > -static void i945gm_vblank_work_func(struct work_struct *work) > > +void i945gm_vblank_work_func(struct work_struct *work) > > { > > struct drm_i915_private *dev_priv = > > container_of(work, struct drm_i915_private, i945gm_vblank.work); > > @@ -4796,11 +4806,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > > if (INTEL_GEN(dev_priv) >= 8) > > rps->pm_intrmsk_mbz |= GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC; > > > > - if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) > > - dev->driver->get_vblank_counter = g4x_get_vblank_counter; > > - else if (INTEL_GEN(dev_priv) >= 3) > > - dev->driver->get_vblank_counter = i915_get_vblank_counter; > > - > > dev->vblank_disable_immediate = true; > > > > /* Most platforms treat the display irq block as an always-on > > @@ -4830,32 +4835,24 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > > dev->driver->irq_preinstall = cherryview_irq_reset; > > dev->driver->irq_postinstall = cherryview_irq_postinstall; > > dev->driver->irq_uninstall = cherryview_irq_reset; > > - dev->driver->enable_vblank = i965_enable_vblank; > > - dev->driver->disable_vblank = i965_disable_vblank; > > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > > } else if (IS_VALLEYVIEW(dev_priv)) { > > dev->driver->irq_handler = valleyview_irq_handler; > > dev->driver->irq_preinstall = valleyview_irq_reset; > > dev->driver->irq_postinstall = valleyview_irq_postinstall; > > dev->driver->irq_uninstall = valleyview_irq_reset; > > - dev->driver->enable_vblank = i965_enable_vblank; > > - dev->driver->disable_vblank = i965_disable_vblank; > > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > > } else if (INTEL_GEN(dev_priv) >= 11) { > > dev->driver->irq_handler = gen11_irq_handler; > > dev->driver->irq_preinstall = gen11_irq_reset; > > dev->driver->irq_postinstall = gen11_irq_postinstall; > > dev->driver->irq_uninstall = gen11_irq_reset; > > - dev->driver->enable_vblank = gen8_enable_vblank; > > - dev->driver->disable_vblank = gen8_disable_vblank; > > dev_priv->display.hpd_irq_setup = gen11_hpd_irq_setup; > > } else if (INTEL_GEN(dev_priv) >= 8) { > > dev->driver->irq_handler = gen8_irq_handler; > > dev->driver->irq_preinstall = gen8_irq_reset; > > dev->driver->irq_postinstall = gen8_irq_postinstall; > > dev->driver->irq_uninstall = gen8_irq_reset; > > - dev->driver->enable_vblank = gen8_enable_vblank; > > - dev->driver->disable_vblank = gen8_disable_vblank; > > if (IS_GEN9_LP(dev_priv)) > > dev_priv->display.hpd_irq_setup = bxt_hpd_irq_setup; > > else if (INTEL_PCH_TYPE(dev_priv) >= PCH_SPT) > > @@ -4867,8 +4864,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > > dev->driver->irq_preinstall = ironlake_irq_reset; > > dev->driver->irq_postinstall = ironlake_irq_postinstall; > > dev->driver->irq_uninstall = ironlake_irq_reset; > > - dev->driver->enable_vblank = ironlake_enable_vblank; > > - dev->driver->disable_vblank = ironlake_disable_vblank; > > dev_priv->display.hpd_irq_setup = ilk_hpd_irq_setup; > > } else { > > if (IS_GEN(dev_priv, 2)) { > > @@ -4876,29 +4871,21 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > > dev->driver->irq_postinstall = i8xx_irq_postinstall; > > dev->driver->irq_handler = i8xx_irq_handler; > > dev->driver->irq_uninstall = i8xx_irq_reset; > > - dev->driver->enable_vblank = i8xx_enable_vblank; > > - dev->driver->disable_vblank = i8xx_disable_vblank; > > } else if (IS_I945GM(dev_priv)) { > > dev->driver->irq_preinstall = i915_irq_reset; > > dev->driver->irq_postinstall = i915_irq_postinstall; > > dev->driver->irq_uninstall = i915_irq_reset; > > dev->driver->irq_handler = i915_irq_handler; > > - dev->driver->enable_vblank = i945gm_enable_vblank; > > - dev->driver->disable_vblank = i945gm_disable_vblank; > > } else if (IS_GEN(dev_priv, 3)) { > > dev->driver->irq_preinstall = i915_irq_reset; > > dev->driver->irq_postinstall = i915_irq_postinstall; > > dev->driver->irq_uninstall = i915_irq_reset; > > dev->driver->irq_handler = i915_irq_handler; > > - dev->driver->enable_vblank = i8xx_enable_vblank; > > - dev->driver->disable_vblank = i8xx_disable_vblank; > > } else { > > dev->driver->irq_preinstall = i965_irq_reset; > > dev->driver->irq_postinstall = i965_irq_postinstall; > > dev->driver->irq_uninstall = i965_irq_reset; > > dev->driver->irq_handler = i965_irq_handler; > > - dev->driver->enable_vblank = i965_enable_vblank; > > - dev->driver->disable_vblank = i965_disable_vblank; > > } > > if (I915_HAS_HOTPLUG(dev_priv)) > > dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > > diff --git a/drivers/gpu/drm/i915/i915_irq.h b/drivers/gpu/drm/i915/i915_irq.h > > index cb25dd213308..ef782e5ab240 100644 > > --- a/drivers/gpu/drm/i915/i915_irq.h > > +++ b/drivers/gpu/drm/i915/i915_irq.h > > @@ -114,4 +114,18 @@ void gen11_reset_guc_interrupts(struct drm_i915_private *i915); > > void gen11_enable_guc_interrupts(struct drm_i915_private *i915); > > void gen11_disable_guc_interrupts(struct drm_i915_private *i915); > > > > +u32 i915_get_vblank_counter(struct drm_crtc *crtc); > > +u32 g4x_get_vblank_counter(struct drm_crtc *crtc); > > + > > +int i8xx_enable_vblank(struct drm_crtc *crtc); > > +int i945gm_enable_vblank(struct drm_crtc *crtc); > > +int i965_enable_vblank(struct drm_crtc *crtc); > > +int ilk_enable_vblank(struct drm_crtc *crtc); > > +int bdw_enable_vblank(struct drm_crtc *crtc); > > +void i8xx_disable_vblank(struct drm_crtc *crtc); > > +void i945gm_disable_vblank(struct drm_crtc *crtc); > > +void i965_disable_vblank(struct drm_crtc *crtc); > > +void ilk_disable_vblank(struct drm_crtc *crtc); > > +void bdw_disable_vblank(struct drm_crtc *crtc); > > *cringe* at exposing so many platform specific functions from > i915_irq.c. Yeah. OTOH I don't really want to move them out either because then they're too far from the irq handlers. -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
* ✗ Fi.CI.IGT: failure for drm/i915: Switch to per-crtc vblank vfuncs 2019-06-18 8:58 [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Ville Syrjala ` (2 preceding siblings ...) 2019-06-18 12:55 ` [PATCH] " Jani Nikula @ 2019-06-18 20:58 ` Patchwork 3 siblings, 0 replies; 6+ messages in thread From: Patchwork @ 2019-06-18 20:58 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx == Series Details == Series: drm/i915: Switch to per-crtc vblank vfuncs URL : https://patchwork.freedesktop.org/series/62287/ State : failure == Summary == CI Bug Log - changes from CI_DRM_6290_full -> Patchwork_13321_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_13321_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_13321_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_13321_full: ### IGT changes ### #### Possible regressions #### * igt@gem_ctx_shared@exec-shared-gtt-bsd1: - shard-apl: [PASS][1] -> [FAIL][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-apl4/igt@gem_ctx_shared@exec-shared-gtt-bsd1.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-apl8/igt@gem_ctx_shared@exec-shared-gtt-bsd1.html Known issues ------------ Here are the changes found in Patchwork_13321_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_isolation@vecs0-s3: - shard-apl: [PASS][3] -> [DMESG-WARN][4] ([fdo#108566]) +2 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-apl6/igt@gem_ctx_isolation@vecs0-s3.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-apl4/igt@gem_ctx_isolation@vecs0-s3.html * igt@gem_eio@unwedge-stress: - shard-kbl: [PASS][5] -> [DMESG-WARN][6] ([fdo#110913 ]) +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl6/igt@gem_eio@unwedge-stress.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl2/igt@gem_eio@unwedge-stress.html * igt@gem_exec_nop@basic-parallel: - shard-iclb: [PASS][7] -> [INCOMPLETE][8] ([fdo#107713]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb6/igt@gem_exec_nop@basic-parallel.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb7/igt@gem_exec_nop@basic-parallel.html * igt@gem_persistent_relocs@forked-faulting-reloc-thrashing: - shard-snb: [PASS][9] -> [DMESG-WARN][10] ([fdo#110789] / [fdo#110913 ]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-snb4/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-snb2/igt@gem_persistent_relocs@forked-faulting-reloc-thrashing.html * igt@gem_userptr_blits@sync-unmap-cycles: - shard-apl: [PASS][11] -> [DMESG-WARN][12] ([fdo#110913 ]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-apl2/igt@gem_userptr_blits@sync-unmap-cycles.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-apl2/igt@gem_userptr_blits@sync-unmap-cycles.html * igt@i915_selftest@live_hangcheck: - shard-snb: [PASS][13] -> [INCOMPLETE][14] ([fdo#105411]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-snb7/igt@i915_selftest@live_hangcheck.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-snb6/igt@i915_selftest@live_hangcheck.html * igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding: - shard-kbl: [PASS][15] -> [INCOMPLETE][16] ([fdo#103665]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl1/igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl2/igt@kms_cursor_crc@pipe-b-cursor-256x256-sliding.html * igt@kms_cursor_crc@pipe-b-cursor-64x21-sliding: - shard-skl: [PASS][17] -> [FAIL][18] ([fdo#103232]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl2/igt@kms_cursor_crc@pipe-b-cursor-64x21-sliding.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl4/igt@kms_cursor_crc@pipe-b-cursor-64x21-sliding.html * igt@kms_cursor_crc@pipe-b-cursor-suspend: - shard-skl: [PASS][19] -> [INCOMPLETE][20] ([fdo#110741]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl2/igt@kms_cursor_crc@pipe-b-cursor-suspend.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl6/igt@kms_cursor_crc@pipe-b-cursor-suspend.html * igt@kms_cursor_legacy@cursor-vs-flip-varying-size: - shard-hsw: [PASS][21] -> [FAIL][22] ([fdo#103355]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-hsw5/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-hsw8/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html * igt@kms_dp_dsc@basic-dsc-enable-edp: - shard-iclb: [PASS][23] -> [SKIP][24] ([fdo#109349]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb5/igt@kms_dp_dsc@basic-dsc-enable-edp.html * igt@kms_flip@2x-plain-flip-ts-check-interruptible: - shard-hsw: [PASS][25] -> [SKIP][26] ([fdo#109271]) +22 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-hsw5/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-hsw1/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html * igt@kms_flip@flip-vs-suspend: - shard-skl: [PASS][27] -> [INCOMPLETE][28] ([fdo#109507]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl1/igt@kms_flip@flip-vs-suspend.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl10/igt@kms_flip@flip-vs-suspend.html - shard-kbl: [PASS][29] -> [DMESG-WARN][30] ([fdo#108566]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl1/igt@kms_flip@flip-vs-suspend.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl2/igt@kms_flip@flip-vs-suspend.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render: - shard-iclb: [PASS][31] -> [FAIL][32] ([fdo#103167]) +7 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes: - shard-skl: [PASS][33] -> [INCOMPLETE][34] ([fdo#104108]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl8/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min: - shard-skl: [PASS][35] -> [FAIL][36] ([fdo#108145]) [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl9/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html * igt@kms_psr@psr2_primary_mmap_cpu: - shard-iclb: [PASS][37] -> [SKIP][38] ([fdo#109441]) [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb5/igt@kms_psr@psr2_primary_mmap_cpu.html * igt@kms_vblank@pipe-b-ts-continuation-suspend: - shard-snb: [PASS][39] -> [DMESG-WARN][40] ([fdo#102365]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-snb4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-snb4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html * igt@perf_pmu@rc6: - shard-kbl: [PASS][41] -> [SKIP][42] ([fdo#109271]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl2/igt@perf_pmu@rc6.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl7/igt@perf_pmu@rc6.html #### Possible fixes #### * igt@gem_persistent_relocs@forked: - shard-apl: [INCOMPLETE][43] ([fdo#103927]) -> [PASS][44] [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-apl5/igt@gem_persistent_relocs@forked.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-apl7/igt@gem_persistent_relocs@forked.html * igt@gem_softpin@noreloc-s3: - shard-kbl: [DMESG-WARN][45] ([fdo#108566]) -> [PASS][46] +1 similar issue [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl2/igt@gem_softpin@noreloc-s3.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl7/igt@gem_softpin@noreloc-s3.html * igt@gem_userptr_blits@map-fixed-invalidate-busy-gup: - shard-kbl: [DMESG-WARN][47] ([fdo#110913 ]) -> [PASS][48] +1 similar issue [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl1/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl1/igt@gem_userptr_blits@map-fixed-invalidate-busy-gup.html * igt@i915_pm_rpm@debugfs-read: - shard-iclb: [INCOMPLETE][49] ([fdo#107713] / [fdo#108840]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb2/igt@i915_pm_rpm@debugfs-read.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb4/igt@i915_pm_rpm@debugfs-read.html * igt@i915_selftest@live_evict: - shard-kbl: [INCOMPLETE][51] ([fdo#103665] / [fdo#110938]) -> [PASS][52] [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-kbl3/igt@i915_selftest@live_evict.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-kbl4/igt@i915_selftest@live_evict.html * igt@i915_selftest@live_hangcheck: - shard-iclb: [INCOMPLETE][53] ([fdo#107713] / [fdo#108569]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb4/igt@i915_selftest@live_hangcheck.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb6/igt@i915_selftest@live_hangcheck.html * igt@i915_suspend@fence-restore-untiled: - shard-apl: [DMESG-WARN][55] ([fdo#108566]) -> [PASS][56] [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-apl3/igt@i915_suspend@fence-restore-untiled.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-apl6/igt@i915_suspend@fence-restore-untiled.html * igt@kms_flip@2x-flip-vs-expired-vblank: - shard-glk: [FAIL][57] ([fdo#105363]) -> [PASS][58] +1 similar issue [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-glk4/igt@kms_flip@2x-flip-vs-expired-vblank.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank.html * igt@kms_flip@2x-plain-flip: - shard-hsw: [SKIP][59] ([fdo#109271]) -> [PASS][60] +20 similar issues [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-hsw1/igt@kms_flip@2x-plain-flip.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-hsw5/igt@kms_flip@2x-plain-flip.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render: - shard-iclb: [FAIL][61] ([fdo#103167]) -> [PASS][62] +9 similar issues [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render.html * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min: - shard-skl: [FAIL][63] ([fdo#108145]) -> [PASS][64] [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl6/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html * igt@kms_plane_lowres@pipe-a-tiling-y: - shard-iclb: [FAIL][65] ([fdo#103166]) -> [PASS][66] [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb5/igt@kms_plane_lowres@pipe-a-tiling-y.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb6/igt@kms_plane_lowres@pipe-a-tiling-y.html * igt@kms_psr@psr2_no_drrs: - shard-iclb: [SKIP][67] ([fdo#109441]) -> [PASS][68] +3 similar issues [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb5/igt@kms_psr@psr2_no_drrs.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb2/igt@kms_psr@psr2_no_drrs.html * igt@kms_sysfs_edid_timing: - shard-iclb: [FAIL][69] ([fdo#100047]) -> [PASS][70] [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-iclb3/igt@kms_sysfs_edid_timing.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-iclb8/igt@kms_sysfs_edid_timing.html #### Warnings #### * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt: - shard-skl: [FAIL][71] ([fdo#108040]) -> [FAIL][72] ([fdo#103167]) [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6290/shard-skl2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/shard-skl4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt.html [fdo#100047]: https://bugs.freedesktop.org/show_bug.cgi?id=100047 [fdo#102365]: https://bugs.freedesktop.org/show_bug.cgi?id=102365 [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927 [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411 [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713 [fdo#108040]: https://bugs.freedesktop.org/show_bug.cgi?id=108040 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108840]: https://bugs.freedesktop.org/show_bug.cgi?id=108840 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#109507]: https://bugs.freedesktop.org/show_bug.cgi?id=109507 [fdo#110741]: https://bugs.freedesktop.org/show_bug.cgi?id=110741 [fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789 [fdo#110913 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110913 [fdo#110938]: https://bugs.freedesktop.org/show_bug.cgi?id=110938 Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts Build changes ------------- * Linux: CI_DRM_6290 -> Patchwork_13321 CI_DRM_6290: a0fa10b5d68fd65375029dd8b61d6c8c6aa1413f @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5059: 1f67ee0d09d6513f487f2be74aae9700e755258a @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_13321: 0bb011a0f3818ba3df011187e2883ec6380c6882 @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13321/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-06-18 20:58 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-06-18 8:58 [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Ville Syrjala 2019-06-18 9:41 ` ✗ Fi.CI.SPARSE: warning for " Patchwork 2019-06-18 9:57 ` ✓ Fi.CI.BAT: success " Patchwork 2019-06-18 12:55 ` [PATCH] " Jani Nikula 2019-06-18 13:34 ` Ville Syrjälä 2019-06-18 20:58 ` ✗ Fi.CI.IGT: failure for " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox