* [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values
@ 2018-11-19 14:41 Imre Deak
2018-11-19 14:41 ` [PATCH 2/3] drm/i915: Make EDP PSR flags " Imre Deak
` (6 more replies)
0 siblings, 7 replies; 19+ messages in thread
From: Imre Deak @ 2018-11-19 14:41 UTC (permalink / raw)
To: intel-gfx
Depending on the transcoder enum values to translate from transcoder
to pipe/transcoder register addresses can easily break if we add a new
transcoder. So remove the dependency by using named initializers.
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/i915_pci.c | 52 ++++++++++++++++++++++++++++++-----------
1 file changed, 38 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 983ae7fd8217..1b81d7cb209e 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -33,16 +33,30 @@
#define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1)
#define GEN_DEFAULT_PIPEOFFSETS \
- .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \
- PIPE_C_OFFSET, PIPE_EDP_OFFSET }, \
- .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \
- TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET }
+ .pipe_offsets = { \
+ [TRANSCODER_A] = PIPE_A_OFFSET, \
+ [TRANSCODER_B] = PIPE_B_OFFSET, \
+ [TRANSCODER_C] = PIPE_C_OFFSET, \
+ [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \
+ }, \
+ .trans_offsets = { \
+ [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
+ [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
+ [TRANSCODER_C] = TRANSCODER_C_OFFSET, \
+ [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \
+ }
#define GEN_CHV_PIPEOFFSETS \
- .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \
- CHV_PIPE_C_OFFSET }, \
- .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \
- CHV_TRANSCODER_C_OFFSET }
+ .pipe_offsets = { \
+ [TRANSCODER_A] = PIPE_A_OFFSET, \
+ [TRANSCODER_B] = PIPE_B_OFFSET, \
+ [TRANSCODER_C] = CHV_PIPE_C_OFFSET, \
+ }, \
+ .trans_offsets = { \
+ [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
+ [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
+ [TRANSCODER_C] = CHV_TRANSCODER_C_OFFSET, \
+ }
#define CURSOR_OFFSETS \
.cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET }
@@ -592,12 +606,22 @@ static const struct intel_device_info intel_cannonlake_info = {
#define GEN11_FEATURES \
GEN10_FEATURES, \
- .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \
- PIPE_C_OFFSET, PIPE_EDP_OFFSET, \
- PIPE_DSI0_OFFSET, PIPE_DSI1_OFFSET }, \
- .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \
- TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET, \
- TRANSCODER_DSI0_OFFSET, TRANSCODER_DSI1_OFFSET}, \
+ .pipe_offsets = { \
+ [TRANSCODER_A] = PIPE_A_OFFSET, \
+ [TRANSCODER_B] = PIPE_B_OFFSET, \
+ [TRANSCODER_C] = PIPE_C_OFFSET, \
+ [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \
+ [TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \
+ [TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \
+ }, \
+ .trans_offsets = { \
+ [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
+ [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
+ [TRANSCODER_C] = TRANSCODER_C_OFFSET, \
+ [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \
+ [TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \
+ [TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \
+ }, \
GEN(11), \
.ddb_size = 2048, \
.has_logical_ring_elsq = 1
--
2.13.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 2/3] drm/i915: Make EDP PSR flags not depend on enum values 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak @ 2018-11-19 14:41 ` Imre Deak 2018-11-19 20:46 ` [PATCH v2 " Imre Deak 2018-11-19 14:41 ` [PATCH " Imre Deak ` (5 subsequent siblings) 6 siblings, 1 reply; 19+ messages in thread From: Imre Deak @ 2018-11-19 14:41 UTC (permalink / raw) To: intel-gfx; +Cc: Lucas De Marchi Depending on the transcoder enum values to translate from transcoder to EDP PSR flags can easily break if we add a new transcoder. So remove the dependency by using an explicit mapping. While at it also add a WARN for unexpected trancoders. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 10 ++++-- drivers/gpu/drm/i915/intel_psr.c | 70 +++++++++++++++++++++++++++++----------- 2 files changed, 59 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index edb58af1e903..25b069175c2a 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4150,9 +4150,13 @@ enum { /* Bspec claims those aren't shifted but stay at 0x64800 */ #define EDP_PSR_IMR _MMIO(0x64834) #define EDP_PSR_IIR _MMIO(0x64838) -#define EDP_PSR_ERROR(trans) (1 << (((trans) * 8 + 10) & 31)) -#define EDP_PSR_POST_EXIT(trans) (1 << (((trans) * 8 + 9) & 31)) -#define EDP_PSR_PRE_ENTRY(trans) (1 << (((trans) * 8 + 8) & 31)) +#define _EDP_PSR_ERROR(idx) (1 << ((idx) * 8 + 2)) +#define _EDP_PSR_POST_EXIT(idx) (1 << ((idx) * 8 + 1)) +#define _EDP_PSR_PRE_ENTRY(idx) (1 << ((idx) * 8)) +#define _EDP_PSR_TRANSCODER_A_IDX 1 +#define _EDP_PSR_TRANSCODER_B_IDX 2 +#define _EDP_PSR_TRANSCODER_C_IDX 3 +#define _EDP_PSR_TRANSCODER_EDP_IDX 0 #define EDP_PSR_AUX_CTL _MMIO(dev_priv->psr_mmio_base + 0x10) #define EDP_PSR_AUX_CTL_TIME_OUT_MASK (3 << 26) diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index 48df16a02fac..5fdc2f196045 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -83,25 +83,59 @@ static bool intel_psr2_enabled(struct drm_i915_private *dev_priv, } } +static int edp_psr_transcoder_idx(enum transcoder trans) +{ + int trans_to_idx[] = { + [TRANSCODER_A] = _EDP_PSR_TRANSCODER_A_IDX, + [TRANSCODER_B] = _EDP_PSR_TRANSCODER_B_IDX, + [TRANSCODER_C] = _EDP_PSR_TRANSCODER_C_IDX, + [TRANSCODER_EDP] = _EDP_PSR_TRANSCODER_EDP_IDX, + }; + + switch (trans) { + case TRANSCODER_A: + case TRANSCODER_B: + case TRANSCODER_C: + case TRANSCODER_EDP: + return trans_to_idx[trans]; + default: + MISSING_CASE(trans); + return trans_to_idx[TRANSCODER_EDP]; + } +} + +static u32 edp_psr_error(enum transcoder trans) +{ + return _EDP_PSR_ERROR(edp_psr_transcoder_idx(trans)); +} + +static u32 edp_psr_post_exit(enum transcoder trans) +{ + return _EDP_PSR_POST_EXIT(edp_psr_transcoder_idx(trans)); +} + +static u32 edp_psr_pre_entry(enum transcoder trans) +{ + return _EDP_PSR_PRE_ENTRY(edp_psr_transcoder_idx(trans)); +} + void intel_psr_irq_control(struct drm_i915_private *dev_priv, u32 debug) { u32 debug_mask, mask; + enum transcoder cpu_transcoder; + u32 transcoders = BIT(TRANSCODER_EDP); - mask = EDP_PSR_ERROR(TRANSCODER_EDP); - debug_mask = EDP_PSR_POST_EXIT(TRANSCODER_EDP) | - EDP_PSR_PRE_ENTRY(TRANSCODER_EDP); - - if (INTEL_GEN(dev_priv) >= 8) { - mask |= EDP_PSR_ERROR(TRANSCODER_A) | - EDP_PSR_ERROR(TRANSCODER_B) | - EDP_PSR_ERROR(TRANSCODER_C); - - debug_mask |= EDP_PSR_POST_EXIT(TRANSCODER_A) | - EDP_PSR_PRE_ENTRY(TRANSCODER_A) | - EDP_PSR_POST_EXIT(TRANSCODER_B) | - EDP_PSR_PRE_ENTRY(TRANSCODER_B) | - EDP_PSR_POST_EXIT(TRANSCODER_C) | - EDP_PSR_PRE_ENTRY(TRANSCODER_C); + if (INTEL_GEN(dev_priv) >= 8) + transcoders |= BIT(TRANSCODER_A) | + BIT(TRANSCODER_B) | + BIT(TRANSCODER_C); + + debug_mask = 0; + mask = 0; + for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { + mask |= edp_psr_error(cpu_transcoder); + debug_mask |= edp_psr_post_exit(cpu_transcoder) | + edp_psr_pre_entry(cpu_transcoder); } if (debug & I915_PSR_DEBUG_IRQ) @@ -160,17 +194,17 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { /* FIXME: Exit PSR and link train manually when this happens. */ - if (psr_iir & EDP_PSR_ERROR(cpu_transcoder)) + if (psr_iir & edp_psr_error(cpu_transcoder)) DRM_DEBUG_KMS("[transcoder %s] PSR aux error\n", transcoder_name(cpu_transcoder)); - if (psr_iir & EDP_PSR_PRE_ENTRY(cpu_transcoder)) { + if (psr_iir & edp_psr_pre_entry(cpu_transcoder)) { dev_priv->psr.last_entry_attempt = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR entry attempt in 2 vblanks\n", transcoder_name(cpu_transcoder)); } - if (psr_iir & EDP_PSR_POST_EXIT(cpu_transcoder)) { + if (psr_iir & edp_psr_post_exit(cpu_transcoder)) { dev_priv->psr.last_exit = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", transcoder_name(cpu_transcoder)); -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 2/3] drm/i915: Make EDP PSR flags not depend on enum values 2018-11-19 14:41 ` [PATCH 2/3] drm/i915: Make EDP PSR flags " Imre Deak @ 2018-11-19 20:46 ` Imre Deak 2018-11-19 20:58 ` Ville Syrjälä 2018-11-19 21:56 ` [PATCH v3 " Imre Deak 0 siblings, 2 replies; 19+ messages in thread From: Imre Deak @ 2018-11-19 20:46 UTC (permalink / raw) To: intel-gfx; +Cc: Lucas De Marchi Depending on the transcoder enum values to translate from transcoder to EDP PSR flags can easily break if we add a new transcoder. So remove the dependency by using an explicit mapping. While at it also add a WARN for unexpected trancoders. v2: - Simplify things by defining flag shift values instead of indices. - s/trans/cpu_transcoder/ (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 10 +++++--- drivers/gpu/drm/i915/intel_psr.c | 55 +++++++++++++++++++++++++++------------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index edb58af1e903..f80b16e3ff33 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4150,9 +4150,13 @@ enum { /* Bspec claims those aren't shifted but stay at 0x64800 */ #define EDP_PSR_IMR _MMIO(0x64834) #define EDP_PSR_IIR _MMIO(0x64838) -#define EDP_PSR_ERROR(trans) (1 << (((trans) * 8 + 10) & 31)) -#define EDP_PSR_POST_EXIT(trans) (1 << (((trans) * 8 + 9) & 31)) -#define EDP_PSR_PRE_ENTRY(trans) (1 << (((trans) * 8 + 8) & 31)) +#define EDP_PSR_ERROR(shift) (4 << (shift)) +#define EDP_PSR_POST_EXIT(shift) (2 << (shift)) +#define EDP_PSR_PRE_ENTRY(shift) (1 << (shift)) +#define EDP_PSR_TRANSCODER_C_SHIFT 24 +#define EDP_PSR_TRANSCODER_B_SHIFT 16 +#define EDP_PSR_TRANSCODER_A_SHIFT 8 +#define EDP_PSR_TRANSCODER_EDP_SHIFT 0 #define EDP_PSR_AUX_CTL _MMIO(dev_priv->psr_mmio_base + 0x10) #define EDP_PSR_AUX_CTL_TIME_OUT_MASK (3 << 26) diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index 48df16a02fac..26292961d693 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -83,25 +83,42 @@ static bool intel_psr2_enabled(struct drm_i915_private *dev_priv, } } +static int edp_psr_shift(enum transcoder cpu_transcoder) +{ + switch (cpu_transcoder) { + case TRANSCODER_A: + return EDP_PSR_TRANSCODER_A_SHIFT; + case TRANSCODER_B: + return EDP_PSR_TRANSCODER_B_SHIFT; + case TRANSCODER_C: + return EDP_PSR_TRANSCODER_C_SHIFT; + default: + MISSING_CASE(cpu_transcoder); + /* fallthrough */ + case TRANSCODER_EDP: + return EDP_PSR_TRANSCODER_EDP_SHIFT; + } +} + void intel_psr_irq_control(struct drm_i915_private *dev_priv, u32 debug) { u32 debug_mask, mask; + enum transcoder cpu_transcoder; + u32 transcoders = BIT(TRANSCODER_EDP); - mask = EDP_PSR_ERROR(TRANSCODER_EDP); - debug_mask = EDP_PSR_POST_EXIT(TRANSCODER_EDP) | - EDP_PSR_PRE_ENTRY(TRANSCODER_EDP); - - if (INTEL_GEN(dev_priv) >= 8) { - mask |= EDP_PSR_ERROR(TRANSCODER_A) | - EDP_PSR_ERROR(TRANSCODER_B) | - EDP_PSR_ERROR(TRANSCODER_C); - - debug_mask |= EDP_PSR_POST_EXIT(TRANSCODER_A) | - EDP_PSR_PRE_ENTRY(TRANSCODER_A) | - EDP_PSR_POST_EXIT(TRANSCODER_B) | - EDP_PSR_PRE_ENTRY(TRANSCODER_B) | - EDP_PSR_POST_EXIT(TRANSCODER_C) | - EDP_PSR_PRE_ENTRY(TRANSCODER_C); + if (INTEL_GEN(dev_priv) >= 8) + transcoders |= BIT(TRANSCODER_A) | + BIT(TRANSCODER_B) | + BIT(TRANSCODER_C); + + debug_mask = 0; + mask = 0; + for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { + int shift = edp_psr_shift(cpu_transcoder); + + mask |= EDP_PSR_ERROR(shift); + debug_mask |= EDP_PSR_POST_EXIT(shift) | + EDP_PSR_PRE_ENTRY(shift); } if (debug & I915_PSR_DEBUG_IRQ) @@ -159,18 +176,20 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) BIT(TRANSCODER_C); for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { + int shift = edp_psr_shift(cpu_transcoder); + /* FIXME: Exit PSR and link train manually when this happens. */ - if (psr_iir & EDP_PSR_ERROR(cpu_transcoder)) + if (psr_iir & EDP_PSR_ERROR(shift)) DRM_DEBUG_KMS("[transcoder %s] PSR aux error\n", transcoder_name(cpu_transcoder)); - if (psr_iir & EDP_PSR_PRE_ENTRY(cpu_transcoder)) { + if (psr_iir & EDP_PSR_PRE_ENTRY(shift)) { dev_priv->psr.last_entry_attempt = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR entry attempt in 2 vblanks\n", transcoder_name(cpu_transcoder)); } - if (psr_iir & EDP_PSR_POST_EXIT(cpu_transcoder)) { + if (psr_iir & EDP_PSR_POST_EXIT(shift)) { dev_priv->psr.last_exit = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", transcoder_name(cpu_transcoder)); -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 2/3] drm/i915: Make EDP PSR flags not depend on enum values 2018-11-19 20:46 ` [PATCH v2 " Imre Deak @ 2018-11-19 20:58 ` Ville Syrjälä 2018-11-19 21:56 ` [PATCH v3 " Imre Deak 1 sibling, 0 replies; 19+ messages in thread From: Ville Syrjälä @ 2018-11-19 20:58 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 10:46:37PM +0200, Imre Deak wrote: > Depending on the transcoder enum values to translate from transcoder > to EDP PSR flags can easily break if we add a new transcoder. So remove > the dependency by using an explicit mapping. > > While at it also add a WARN for unexpected trancoders. > > v2: > - Simplify things by defining flag shift values instead of indices. > - s/trans/cpu_transcoder/ (Ville) > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > Cc: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/i915_reg.h | 10 +++++--- > drivers/gpu/drm/i915/intel_psr.c | 55 +++++++++++++++++++++++++++------------- > 2 files changed, 44 insertions(+), 21 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index edb58af1e903..f80b16e3ff33 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -4150,9 +4150,13 @@ enum { > /* Bspec claims those aren't shifted but stay at 0x64800 */ > #define EDP_PSR_IMR _MMIO(0x64834) > #define EDP_PSR_IIR _MMIO(0x64838) > -#define EDP_PSR_ERROR(trans) (1 << (((trans) * 8 + 10) & 31)) > -#define EDP_PSR_POST_EXIT(trans) (1 << (((trans) * 8 + 9) & 31)) > -#define EDP_PSR_PRE_ENTRY(trans) (1 << (((trans) * 8 + 8) & 31)) > +#define EDP_PSR_ERROR(shift) (4 << (shift)) > +#define EDP_PSR_POST_EXIT(shift) (2 << (shift)) > +#define EDP_PSR_PRE_ENTRY(shift) (1 << (shift)) The 1,2,4 suggest that these are values for the same bitfield, which they are not. So I would prefer 1<<((shift)+n) etc. instead. Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > +#define EDP_PSR_TRANSCODER_C_SHIFT 24 > +#define EDP_PSR_TRANSCODER_B_SHIFT 16 > +#define EDP_PSR_TRANSCODER_A_SHIFT 8 > +#define EDP_PSR_TRANSCODER_EDP_SHIFT 0 > > #define EDP_PSR_AUX_CTL _MMIO(dev_priv->psr_mmio_base + 0x10) > #define EDP_PSR_AUX_CTL_TIME_OUT_MASK (3 << 26) > diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c > index 48df16a02fac..26292961d693 100644 > --- a/drivers/gpu/drm/i915/intel_psr.c > +++ b/drivers/gpu/drm/i915/intel_psr.c > @@ -83,25 +83,42 @@ static bool intel_psr2_enabled(struct drm_i915_private *dev_priv, > } > } > > +static int edp_psr_shift(enum transcoder cpu_transcoder) > +{ > + switch (cpu_transcoder) { > + case TRANSCODER_A: > + return EDP_PSR_TRANSCODER_A_SHIFT; > + case TRANSCODER_B: > + return EDP_PSR_TRANSCODER_B_SHIFT; > + case TRANSCODER_C: > + return EDP_PSR_TRANSCODER_C_SHIFT; > + default: > + MISSING_CASE(cpu_transcoder); > + /* fallthrough */ > + case TRANSCODER_EDP: > + return EDP_PSR_TRANSCODER_EDP_SHIFT; > + } > +} > + > void intel_psr_irq_control(struct drm_i915_private *dev_priv, u32 debug) > { > u32 debug_mask, mask; > + enum transcoder cpu_transcoder; > + u32 transcoders = BIT(TRANSCODER_EDP); > > - mask = EDP_PSR_ERROR(TRANSCODER_EDP); > - debug_mask = EDP_PSR_POST_EXIT(TRANSCODER_EDP) | > - EDP_PSR_PRE_ENTRY(TRANSCODER_EDP); > - > - if (INTEL_GEN(dev_priv) >= 8) { > - mask |= EDP_PSR_ERROR(TRANSCODER_A) | > - EDP_PSR_ERROR(TRANSCODER_B) | > - EDP_PSR_ERROR(TRANSCODER_C); > - > - debug_mask |= EDP_PSR_POST_EXIT(TRANSCODER_A) | > - EDP_PSR_PRE_ENTRY(TRANSCODER_A) | > - EDP_PSR_POST_EXIT(TRANSCODER_B) | > - EDP_PSR_PRE_ENTRY(TRANSCODER_B) | > - EDP_PSR_POST_EXIT(TRANSCODER_C) | > - EDP_PSR_PRE_ENTRY(TRANSCODER_C); > + if (INTEL_GEN(dev_priv) >= 8) > + transcoders |= BIT(TRANSCODER_A) | > + BIT(TRANSCODER_B) | > + BIT(TRANSCODER_C); > + > + debug_mask = 0; > + mask = 0; > + for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { > + int shift = edp_psr_shift(cpu_transcoder); > + > + mask |= EDP_PSR_ERROR(shift); > + debug_mask |= EDP_PSR_POST_EXIT(shift) | > + EDP_PSR_PRE_ENTRY(shift); > } > > if (debug & I915_PSR_DEBUG_IRQ) > @@ -159,18 +176,20 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) > BIT(TRANSCODER_C); > > for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { > + int shift = edp_psr_shift(cpu_transcoder); > + > /* FIXME: Exit PSR and link train manually when this happens. */ > - if (psr_iir & EDP_PSR_ERROR(cpu_transcoder)) > + if (psr_iir & EDP_PSR_ERROR(shift)) > DRM_DEBUG_KMS("[transcoder %s] PSR aux error\n", > transcoder_name(cpu_transcoder)); > > - if (psr_iir & EDP_PSR_PRE_ENTRY(cpu_transcoder)) { > + if (psr_iir & EDP_PSR_PRE_ENTRY(shift)) { > dev_priv->psr.last_entry_attempt = time_ns; > DRM_DEBUG_KMS("[transcoder %s] PSR entry attempt in 2 vblanks\n", > transcoder_name(cpu_transcoder)); > } > > - if (psr_iir & EDP_PSR_POST_EXIT(cpu_transcoder)) { > + if (psr_iir & EDP_PSR_POST_EXIT(shift)) { > dev_priv->psr.last_exit = time_ns; > DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", > transcoder_name(cpu_transcoder)); > -- > 2.13.2 -- 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] 19+ messages in thread
* [PATCH v3 2/3] drm/i915: Make EDP PSR flags not depend on enum values 2018-11-19 20:46 ` [PATCH v2 " Imre Deak 2018-11-19 20:58 ` Ville Syrjälä @ 2018-11-19 21:56 ` Imre Deak 2018-11-19 21:56 ` [PATCH v2 3/3] drm/i915: Add code comment on assumption of pipe==transcoder Imre Deak 1 sibling, 1 reply; 19+ messages in thread From: Imre Deak @ 2018-11-19 21:56 UTC (permalink / raw) To: intel-gfx; +Cc: Lucas De Marchi Depending on the transcoder enum values to translate from transcoder to EDP PSR flags can easily break if we add a new transcoder. So remove the dependency by using an explicit mapping. While at it also add a WARN for unexpected trancoders. v2: - Simplify things by defining flag shift values instead of indices. - s/trans/cpu_transcoder/ (Ville) v3: - Define flags to look like seperate bits instead of the values of the same bitfield. (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 10 +++++--- drivers/gpu/drm/i915/intel_psr.c | 55 +++++++++++++++++++++++++++------------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index edb58af1e903..e6b371e986ee 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4150,9 +4150,13 @@ enum { /* Bspec claims those aren't shifted but stay at 0x64800 */ #define EDP_PSR_IMR _MMIO(0x64834) #define EDP_PSR_IIR _MMIO(0x64838) -#define EDP_PSR_ERROR(trans) (1 << (((trans) * 8 + 10) & 31)) -#define EDP_PSR_POST_EXIT(trans) (1 << (((trans) * 8 + 9) & 31)) -#define EDP_PSR_PRE_ENTRY(trans) (1 << (((trans) * 8 + 8) & 31)) +#define EDP_PSR_ERROR(shift) (1 << ((shift) + 2)) +#define EDP_PSR_POST_EXIT(shift) (1 << ((shift) + 1)) +#define EDP_PSR_PRE_ENTRY(shift) (1 << (shift)) +#define EDP_PSR_TRANSCODER_C_SHIFT 24 +#define EDP_PSR_TRANSCODER_B_SHIFT 16 +#define EDP_PSR_TRANSCODER_A_SHIFT 8 +#define EDP_PSR_TRANSCODER_EDP_SHIFT 0 #define EDP_PSR_AUX_CTL _MMIO(dev_priv->psr_mmio_base + 0x10) #define EDP_PSR_AUX_CTL_TIME_OUT_MASK (3 << 26) diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index 48df16a02fac..26292961d693 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -83,25 +83,42 @@ static bool intel_psr2_enabled(struct drm_i915_private *dev_priv, } } +static int edp_psr_shift(enum transcoder cpu_transcoder) +{ + switch (cpu_transcoder) { + case TRANSCODER_A: + return EDP_PSR_TRANSCODER_A_SHIFT; + case TRANSCODER_B: + return EDP_PSR_TRANSCODER_B_SHIFT; + case TRANSCODER_C: + return EDP_PSR_TRANSCODER_C_SHIFT; + default: + MISSING_CASE(cpu_transcoder); + /* fallthrough */ + case TRANSCODER_EDP: + return EDP_PSR_TRANSCODER_EDP_SHIFT; + } +} + void intel_psr_irq_control(struct drm_i915_private *dev_priv, u32 debug) { u32 debug_mask, mask; + enum transcoder cpu_transcoder; + u32 transcoders = BIT(TRANSCODER_EDP); - mask = EDP_PSR_ERROR(TRANSCODER_EDP); - debug_mask = EDP_PSR_POST_EXIT(TRANSCODER_EDP) | - EDP_PSR_PRE_ENTRY(TRANSCODER_EDP); - - if (INTEL_GEN(dev_priv) >= 8) { - mask |= EDP_PSR_ERROR(TRANSCODER_A) | - EDP_PSR_ERROR(TRANSCODER_B) | - EDP_PSR_ERROR(TRANSCODER_C); - - debug_mask |= EDP_PSR_POST_EXIT(TRANSCODER_A) | - EDP_PSR_PRE_ENTRY(TRANSCODER_A) | - EDP_PSR_POST_EXIT(TRANSCODER_B) | - EDP_PSR_PRE_ENTRY(TRANSCODER_B) | - EDP_PSR_POST_EXIT(TRANSCODER_C) | - EDP_PSR_PRE_ENTRY(TRANSCODER_C); + if (INTEL_GEN(dev_priv) >= 8) + transcoders |= BIT(TRANSCODER_A) | + BIT(TRANSCODER_B) | + BIT(TRANSCODER_C); + + debug_mask = 0; + mask = 0; + for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { + int shift = edp_psr_shift(cpu_transcoder); + + mask |= EDP_PSR_ERROR(shift); + debug_mask |= EDP_PSR_POST_EXIT(shift) | + EDP_PSR_PRE_ENTRY(shift); } if (debug & I915_PSR_DEBUG_IRQ) @@ -159,18 +176,20 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) BIT(TRANSCODER_C); for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) { + int shift = edp_psr_shift(cpu_transcoder); + /* FIXME: Exit PSR and link train manually when this happens. */ - if (psr_iir & EDP_PSR_ERROR(cpu_transcoder)) + if (psr_iir & EDP_PSR_ERROR(shift)) DRM_DEBUG_KMS("[transcoder %s] PSR aux error\n", transcoder_name(cpu_transcoder)); - if (psr_iir & EDP_PSR_PRE_ENTRY(cpu_transcoder)) { + if (psr_iir & EDP_PSR_PRE_ENTRY(shift)) { dev_priv->psr.last_entry_attempt = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR entry attempt in 2 vblanks\n", transcoder_name(cpu_transcoder)); } - if (psr_iir & EDP_PSR_POST_EXIT(cpu_transcoder)) { + if (psr_iir & EDP_PSR_POST_EXIT(shift)) { dev_priv->psr.last_exit = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", transcoder_name(cpu_transcoder)); -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 21:56 ` [PATCH v3 " Imre Deak @ 2018-11-19 21:56 ` Imre Deak 0 siblings, 0 replies; 19+ messages in thread From: Imre Deak @ 2018-11-19 21:56 UTC (permalink / raw) To: intel-gfx; +Cc: Lucas De Marchi Add a comment to the pipe and transcoder enum definitions about our assumption in the code about enum values for pipes and transcoders with a 1:1 transcoder->pipe mapping. v2: - Clarify more what are the assumptions about the enum values. (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h index 43eb4ebbcc35..846f63d056fb 100644 --- a/drivers/gpu/drm/i915/intel_display.h +++ b/drivers/gpu/drm/i915/intel_display.h @@ -43,6 +43,11 @@ enum i915_gpio { GPIOM, }; +/* + * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the + * rest have consecutive values and match the enum values of transcoders + * with a 1:1 transcoder->pipe mapping. + */ enum pipe { INVALID_PIPE = -1, @@ -57,9 +62,20 @@ enum pipe { #define pipe_name(p) ((p) + 'A') enum transcoder { + /* + * The following transcoders have a 1:1 transcoder->pipe mapping, keep + * their values fixed: the code assumes that TRANSCODER_A=0, the rest + * have consecutive values and match the enum values of the pipes they + * map to. + */ TRANSCODER_A = 0, TRANSCODER_B, TRANSCODER_C, + + /* + * The following transcoders can map to any pipe, their enum value + * doesn't need to stay fixed. + */ TRANSCODER_EDP, TRANSCODER_DSI_0, TRANSCODER_DSI_1, -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak 2018-11-19 14:41 ` [PATCH 2/3] drm/i915: Make EDP PSR flags " Imre Deak @ 2018-11-19 14:41 ` Imre Deak 2018-11-19 15:51 ` Ville Syrjälä 2018-11-19 15:11 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Patchwork ` (4 subsequent siblings) 6 siblings, 1 reply; 19+ messages in thread From: Imre Deak @ 2018-11-19 14:41 UTC (permalink / raw) To: intel-gfx; +Cc: Lucas De Marchi Add a comment to the pipe and transcoder enum definitions about our assumption in the code that pipe==transcoder for PIPE_A-C / TRANSCODER_A-C. This means we have to keep the values for these pipe/transcoder enums fixed. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lucas De Marchi <lucas.demarchi@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> --- drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h index 43eb4ebbcc35..cbb5d79d6a4c 100644 --- a/drivers/gpu/drm/i915/intel_display.h +++ b/drivers/gpu/drm/i915/intel_display.h @@ -43,6 +43,10 @@ enum i915_gpio { GPIOM, }; +/* + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for + * these pipes. + */ enum pipe { INVALID_PIPE = -1, @@ -56,6 +60,10 @@ enum pipe { #define pipe_name(p) ((p) + 'A') +/* + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for + * these transcoders. + */ enum transcoder { TRANSCODER_A = 0, TRANSCODER_B, -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 14:41 ` [PATCH " Imre Deak @ 2018-11-19 15:51 ` Ville Syrjälä 2018-11-19 18:43 ` Imre Deak 0 siblings, 1 reply; 19+ messages in thread From: Ville Syrjälä @ 2018-11-19 15:51 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 04:41:09PM +0200, Imre Deak wrote: > Add a comment to the pipe and transcoder enum definitions about our > assumption in the code that pipe==transcoder for PIPE_A-C / > TRANSCODER_A-C. This means we have to keep the values for these > pipe/transcoder enums fixed. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > Cc: Mika Kahola <mika.kahola@intel.com> > Signed-off-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h > index 43eb4ebbcc35..cbb5d79d6a4c 100644 > --- a/drivers/gpu/drm/i915/intel_display.h > +++ b/drivers/gpu/drm/i915/intel_display.h > @@ -43,6 +43,10 @@ enum i915_gpio { > GPIOM, > }; > > +/* > + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for > + * these pipes. > + */ I suspect the A-C part is going to bitrot. Also I'm sure we make more assupmtions about these values (PIPE_A == 0, PIPE_N+1 == n+1, etc.). We should probably try to spell it all out here. > enum pipe { > INVALID_PIPE = -1, > > @@ -56,6 +60,10 @@ enum pipe { > > #define pipe_name(p) ((p) + 'A') > > +/* > + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for > + * these transcoders. > + */ Same issue with the A-C part perhaps. > enum transcoder { > TRANSCODER_A = 0, > TRANSCODER_B, > -- > 2.13.2 -- 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] 19+ messages in thread
* Re: [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 15:51 ` Ville Syrjälä @ 2018-11-19 18:43 ` Imre Deak 2018-11-19 18:55 ` Ville Syrjälä 2018-11-19 22:06 ` Lucas De Marchi 0 siblings, 2 replies; 19+ messages in thread From: Imre Deak @ 2018-11-19 18:43 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 05:51:31PM +0200, Ville Syrjälä wrote: > On Mon, Nov 19, 2018 at 04:41:09PM +0200, Imre Deak wrote: > > Add a comment to the pipe and transcoder enum definitions about our > > assumption in the code that pipe==transcoder for PIPE_A-C / > > TRANSCODER_A-C. This means we have to keep the values for these > > pipe/transcoder enums fixed. > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > > Cc: Mika Kahola <mika.kahola@intel.com> > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > --- > > drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h > > index 43eb4ebbcc35..cbb5d79d6a4c 100644 > > --- a/drivers/gpu/drm/i915/intel_display.h > > +++ b/drivers/gpu/drm/i915/intel_display.h > > @@ -43,6 +43,10 @@ enum i915_gpio { > > GPIOM, > > }; > > > > +/* > > + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for > > + * these pipes. > > + */ > > I suspect the A-C part is going to bitrot. Also I'm sure we > make more assupmtions about these values (PIPE_A == 0, > PIPE_N+1 == n+1, etc.). We should probably try to spell it > all out here. Ok, can add instead: /* * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the * rest have consecutive values and match the enum values of transcoders * with a 1:1 transcoder->pipe mapping. */ > > > enum pipe { > > INVALID_PIPE = -1, > > > > @@ -56,6 +60,10 @@ enum pipe { > > > > #define pipe_name(p) ((p) + 'A') > > > > +/* > > + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for > > + * these transcoders. > > + */ > > Same issue with the A-C part perhaps. and here: > > > enum transcoder { /* * The following transcoders have a 1:1 transcoder->pipe mapping, keep * their values fixed: the code assumes that TRANSCODER_A=0, the rest * have consecutive values and match the enum values of the pipes they map * to. */ > > TRANSCODER_A = 0, > > TRANSCODER_B, > > TRANSCODER_C, /* * The following transcoders can map to any pipe, their enum value * doesn't need to stay fixed. */ > > TRANSCODER_EDP, > > TRANSCODER_DSI_0, > > TRANSCODER_DSI_1, > > -- > > 2.13.2 > > -- > 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] 19+ messages in thread
* Re: [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 18:43 ` Imre Deak @ 2018-11-19 18:55 ` Ville Syrjälä 2018-11-19 22:06 ` Lucas De Marchi 1 sibling, 0 replies; 19+ messages in thread From: Ville Syrjälä @ 2018-11-19 18:55 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 08:43:27PM +0200, Imre Deak wrote: > On Mon, Nov 19, 2018 at 05:51:31PM +0200, Ville Syrjälä wrote: > > On Mon, Nov 19, 2018 at 04:41:09PM +0200, Imre Deak wrote: > > > Add a comment to the pipe and transcoder enum definitions about our > > > assumption in the code that pipe==transcoder for PIPE_A-C / > > > TRANSCODER_A-C. This means we have to keep the values for these > > > pipe/transcoder enums fixed. > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > > > Cc: Mika Kahola <mika.kahola@intel.com> > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > > --- > > > drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h > > > index 43eb4ebbcc35..cbb5d79d6a4c 100644 > > > --- a/drivers/gpu/drm/i915/intel_display.h > > > +++ b/drivers/gpu/drm/i915/intel_display.h > > > @@ -43,6 +43,10 @@ enum i915_gpio { > > > GPIOM, > > > }; > > > > > > +/* > > > + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for > > > + * these pipes. > > > + */ > > > > I suspect the A-C part is going to bitrot. Also I'm sure we > > make more assupmtions about these values (PIPE_A == 0, > > PIPE_N+1 == n+1, etc.). We should probably try to spell it > > all out here. > > Ok, can add instead: > > /* > * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the > * rest have consecutive values and match the enum values of transcoders > * with a 1:1 transcoder->pipe mapping. > */ > > > > > > enum pipe { > > > INVALID_PIPE = -1, > > > > > > @@ -56,6 +60,10 @@ enum pipe { > > > > > > #define pipe_name(p) ((p) + 'A') > > > > > > +/* > > > + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for > > > + * these transcoders. > > > + */ > > > > Same issue with the A-C part perhaps. > > and here: > > > > > > enum transcoder { > > /* > * The following transcoders have a 1:1 transcoder->pipe mapping, keep > * their values fixed: the code assumes that TRANSCODER_A=0, the rest > * have consecutive values and match the enum values of the pipes they map > * to. > */ > > > > > TRANSCODER_A = 0, > > > TRANSCODER_B, > > > TRANSCODER_C, > > /* > * The following transcoders can map to any pipe, their enum value > * doesn't need to stay fixed. > */ lgtm Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > TRANSCODER_EDP, > > > TRANSCODER_DSI_0, > > > TRANSCODER_DSI_1, > > > > > -- > > > 2.13.2 > > > > -- > > Ville Syrjälä > > Intel -- 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] 19+ messages in thread
* Re: [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 18:43 ` Imre Deak 2018-11-19 18:55 ` Ville Syrjälä @ 2018-11-19 22:06 ` Lucas De Marchi 2018-11-19 22:34 ` Imre Deak 1 sibling, 1 reply; 19+ messages in thread From: Lucas De Marchi @ 2018-11-19 22:06 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 08:43:27PM +0200, Imre Deak wrote: > On Mon, Nov 19, 2018 at 05:51:31PM +0200, Ville Syrjälä wrote: > > On Mon, Nov 19, 2018 at 04:41:09PM +0200, Imre Deak wrote: > > > Add a comment to the pipe and transcoder enum definitions about our > > > assumption in the code that pipe==transcoder for PIPE_A-C / > > > TRANSCODER_A-C. This means we have to keep the values for these > > > pipe/transcoder enums fixed. > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > > > Cc: Mika Kahola <mika.kahola@intel.com> > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > > --- > > > drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h > > > index 43eb4ebbcc35..cbb5d79d6a4c 100644 > > > --- a/drivers/gpu/drm/i915/intel_display.h > > > +++ b/drivers/gpu/drm/i915/intel_display.h > > > @@ -43,6 +43,10 @@ enum i915_gpio { > > > GPIOM, > > > }; > > > > > > +/* > > > + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for > > > + * these pipes. > > > + */ > > > > I suspect the A-C part is going to bitrot. Also I'm sure we > > make more assupmtions about these values (PIPE_A == 0, > > PIPE_N+1 == n+1, etc.). We should probably try to spell it > > all out here. > > Ok, can add instead: > > /* > * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the > * rest have consecutive values and match the enum values of transcoders > * with a 1:1 transcoder->pipe mapping. 1:1 transcoder <-> pipe mapping, so it doesn't look like it's a pointer :) > */ > > > > > > enum pipe { > > > INVALID_PIPE = -1, > > > > > > @@ -56,6 +60,10 @@ enum pipe { > > > > > > #define pipe_name(p) ((p) + 'A') > > > > > > +/* > > > + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for > > > + * these transcoders. > > > + */ > > > > Same issue with the A-C part perhaps. > > and here: > > > > > > enum transcoder { > > /* > * The following transcoders have a 1:1 transcoder->pipe mapping, keep > * their values fixed: the code assumes that TRANSCODER_A=0, the rest > * have consecutive values and match the enum values of the pipes they map > * to. > */ > > > > > TRANSCODER_A = 0, > > > TRANSCODER_B, > > > TRANSCODER_C, could we additionally do like below? TRANSCODER_A = PIPE_A, TRANSCODER_B = PIPE_B, TRANSCODER_C = PIPE_C, Or at least a BUILD_BUG_ON(TRANSCODER_A != PIPE_A || TRANSCODER_B != PIPE_B || TRANSCODER_C != PIPE_C) Lucas De Marchi > > /* > * The following transcoders can map to any pipe, their enum value > * doesn't need to stay fixed. > */ > > > > TRANSCODER_EDP, > > > TRANSCODER_DSI_0, > > > TRANSCODER_DSI_1, > > > > > -- > > > 2.13.2 > > > > -- > > Ville Syrjälä > > Intel > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 3/3] drm/i915: Add code comment on assumption of pipe==transcoder 2018-11-19 22:06 ` Lucas De Marchi @ 2018-11-19 22:34 ` Imre Deak 0 siblings, 0 replies; 19+ messages in thread From: Imre Deak @ 2018-11-19 22:34 UTC (permalink / raw) To: Lucas De Marchi; +Cc: intel-gfx, Lucas De Marchi On Mon, Nov 19, 2018 at 02:06:31PM -0800, Lucas De Marchi wrote: > On Mon, Nov 19, 2018 at 08:43:27PM +0200, Imre Deak wrote: > > On Mon, Nov 19, 2018 at 05:51:31PM +0200, Ville Syrjälä wrote: > > > On Mon, Nov 19, 2018 at 04:41:09PM +0200, Imre Deak wrote: > > > > Add a comment to the pipe and transcoder enum definitions about our > > > > assumption in the code that pipe==transcoder for PIPE_A-C / > > > > TRANSCODER_A-C. This means we have to keep the values for these > > > > pipe/transcoder enums fixed. > > > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > > > > Cc: Mika Kahola <mika.kahola@intel.com> > > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > > > --- > > > > drivers/gpu/drm/i915/intel_display.h | 8 ++++++++ > > > > 1 file changed, 8 insertions(+) > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_display.h b/drivers/gpu/drm/i915/intel_display.h > > > > index 43eb4ebbcc35..cbb5d79d6a4c 100644 > > > > --- a/drivers/gpu/drm/i915/intel_display.h > > > > +++ b/drivers/gpu/drm/i915/intel_display.h > > > > @@ -43,6 +43,10 @@ enum i915_gpio { > > > > GPIOM, > > > > }; > > > > > > > > +/* > > > > + * Keep the PIPE_A-C values fixed, we assume that pipe==transcoder for > > > > + * these pipes. > > > > + */ > > > > > > I suspect the A-C part is going to bitrot. Also I'm sure we > > > make more assupmtions about these values (PIPE_A == 0, > > > PIPE_N+1 == n+1, etc.). We should probably try to spell it > > > all out here. > > > > Ok, can add instead: > > > > /* > > * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the > > * rest have consecutive values and match the enum values of transcoders > > * with a 1:1 transcoder->pipe mapping. > > 1:1 transcoder <-> pipe mapping, so it doesn't look like it's a pointer :) You can only map from transcoder to pipe not the other way around (a pipe can always be connected to any transcoder). But will add spaces around '->'. > > > */ > > > > > > > > > enum pipe { > > > > INVALID_PIPE = -1, > > > > > > > > @@ -56,6 +60,10 @@ enum pipe { > > > > > > > > #define pipe_name(p) ((p) + 'A') > > > > > > > > +/* > > > > + * Keep the TRANSCODER_A-C values fixed, we assume that pipe==transcoder for > > > > + * these transcoders. > > > > + */ > > > > > > Same issue with the A-C part perhaps. > > > > and here: > > > > > > > > > enum transcoder { > > > > /* > > * The following transcoders have a 1:1 transcoder->pipe mapping, keep > > * their values fixed: the code assumes that TRANSCODER_A=0, the rest > > * have consecutive values and match the enum values of the pipes they map > > * to. > > */ > > > > > > > > TRANSCODER_A = 0, > > > > TRANSCODER_B, > > > > TRANSCODER_C, > > could we additionally do like below? > > TRANSCODER_A = PIPE_A, > TRANSCODER_B = PIPE_B, > TRANSCODER_C = PIPE_C, Good idea, will change it. > Or at least a BUILD_BUG_ON(TRANSCODER_A != PIPE_A || TRANSCODER_B != PIPE_B || TRANSCODER_C != PIPE_C) This could get stale. > > Lucas De Marchi > > > > > /* > > * The following transcoders can map to any pipe, their enum value > > * doesn't need to stay fixed. > > */ > > > > > > TRANSCODER_EDP, > > > > TRANSCODER_DSI_0, > > > > TRANSCODER_DSI_1, > > > > > > > > -- > > > > 2.13.2 > > > > > > -- > > > Ville Syrjälä > > > Intel > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak 2018-11-19 14:41 ` [PATCH 2/3] drm/i915: Make EDP PSR flags " Imre Deak 2018-11-19 14:41 ` [PATCH " Imre Deak @ 2018-11-19 15:11 ` Patchwork 2018-11-19 15:29 ` [PATCH 1/3] " Ville Syrjälä ` (3 subsequent siblings) 6 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2018-11-19 15:11 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values URL : https://patchwork.freedesktop.org/series/52693/ State : success == Summary == = CI Bug Log - changes from CI_DRM_5160 -> Patchwork_10847 = == Summary - SUCCESS == No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/52693/revisions/1/mbox/ == Possible new issues == Here are the unknown changes that may have been introduced in Patchwork_10847: === IGT changes === ==== Possible regressions ==== {igt@runner@aborted}: fi-icl-u: NOTRUN -> FAIL == Known issues == Here are the changes found in Patchwork_10847 that come from known issues: === IGT changes === ==== Issues hit ==== igt@gem_ctx_create@basic-files: fi-icl-u2: PASS -> DMESG-WARN (fdo#107724) igt@gem_exec_suspend@basic-s3: fi-cfl-8109u: PASS -> FAIL (fdo#103375) ==== Possible fixes ==== igt@gem_ctx_create@basic-files: fi-bsw-kefka: FAIL (fdo#108656) -> PASS igt@gem_exec_suspend@basic-s3: fi-icl-u2: DMESG-WARN (fdo#107724) -> PASS igt@gem_mmap_gtt@basic-small-copy: fi-glk-dsi: INCOMPLETE (fdo#103359, k.org#198133) -> PASS igt@kms_frontbuffer_tracking@basic: fi-icl-u: FAIL (fdo#103167) -> PASS igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence: fi-byt-clapper: FAIL (fdo#103191, fdo#107362) -> PASS ==== Warnings ==== igt@i915_selftest@live_contexts: fi-icl-u: DMESG-FAIL (fdo#108569) -> INCOMPLETE (fdo#108315) {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167 fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191 fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359 fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375 fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362 fdo#107724 https://bugs.freedesktop.org/show_bug.cgi?id=107724 fdo#108315 https://bugs.freedesktop.org/show_bug.cgi?id=108315 fdo#108569 https://bugs.freedesktop.org/show_bug.cgi?id=108569 fdo#108656 https://bugs.freedesktop.org/show_bug.cgi?id=108656 k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133 == Participating hosts (51 -> 47) == Additional (1): fi-pnv-d510 Missing (5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 == Build changes == * Linux: CI_DRM_5160 -> Patchwork_10847 CI_DRM_5160: 80350f0233d79937675bdc76d7864f51843ccc63 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10847: 799f685980adcac64afb2b90df4a0f38330553ff @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 799f685980ad drm/i915: Add code comment on assumption of pipe==transcoder 2dee3a985fdf drm/i915: Make EDP PSR flags not depend on enum values 15efd4a42d55 drm/i915: Make pipe/transcoder offsets not depend on enum values == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10847/issues.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak ` (2 preceding siblings ...) 2018-11-19 15:11 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Patchwork @ 2018-11-19 15:29 ` Ville Syrjälä 2018-11-19 18:54 ` Imre Deak 2018-11-19 19:33 ` ✓ Fi.CI.IGT: success for series starting with [1/3] " Patchwork ` (2 subsequent siblings) 6 siblings, 1 reply; 19+ messages in thread From: Ville Syrjälä @ 2018-11-19 15:29 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx On Mon, Nov 19, 2018 at 04:41:07PM +0200, Imre Deak wrote: > Depending on the transcoder enum values to translate from transcoder > to pipe/transcoder register addresses can easily break if we add a new > transcoder. So remove the dependency by using named initializers. > > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/i915_pci.c | 52 ++++++++++++++++++++++++++++++----------- > 1 file changed, 38 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c > index 983ae7fd8217..1b81d7cb209e 100644 > --- a/drivers/gpu/drm/i915/i915_pci.c > +++ b/drivers/gpu/drm/i915/i915_pci.c > @@ -33,16 +33,30 @@ > #define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1) > > #define GEN_DEFAULT_PIPEOFFSETS \ > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > - PIPE_C_OFFSET, PIPE_EDP_OFFSET }, \ > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET } > + .pipe_offsets = { \ > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ Hmm. We do define this as int pipe_offsets[I915_MAX_TRANSCODERS], and PIPECONF/TRANSCONF is per-transcoder so I suppose using TRANSCODER_foo here make sense. Couple of things that came to mind while thinking about this: - pipe_offsets[] & co. could probably be u32 since we don't need negative values - _PIPE_EDP could be removed, which would maybe shrink a few arrays based on I915_MAX_PIPES Patch is Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > + }, \ > + .trans_offsets = { \ > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > + } > > #define GEN_CHV_PIPEOFFSETS \ > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > - CHV_PIPE_C_OFFSET }, \ > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > - CHV_TRANSCODER_C_OFFSET } > + .pipe_offsets = { \ > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > + [TRANSCODER_C] = CHV_PIPE_C_OFFSET, \ > + }, \ > + .trans_offsets = { \ > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > + [TRANSCODER_C] = CHV_TRANSCODER_C_OFFSET, \ > + } > > #define CURSOR_OFFSETS \ > .cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET } > @@ -592,12 +606,22 @@ static const struct intel_device_info intel_cannonlake_info = { > > #define GEN11_FEATURES \ > GEN10_FEATURES, \ > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > - PIPE_C_OFFSET, PIPE_EDP_OFFSET, \ > - PIPE_DSI0_OFFSET, PIPE_DSI1_OFFSET }, \ > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET, \ > - TRANSCODER_DSI0_OFFSET, TRANSCODER_DSI1_OFFSET}, \ > + .pipe_offsets = { \ > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ > + [TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \ > + [TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \ > + }, \ > + .trans_offsets = { \ > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > + [TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \ > + [TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \ > + }, \ > GEN(11), \ > .ddb_size = 2048, \ > .has_logical_ring_elsq = 1 > -- > 2.13.2 -- 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] 19+ messages in thread
* Re: [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values 2018-11-19 15:29 ` [PATCH 1/3] " Ville Syrjälä @ 2018-11-19 18:54 ` Imre Deak 2018-11-20 2:38 ` Zhenyu Wang 0 siblings, 1 reply; 19+ messages in thread From: Imre Deak @ 2018-11-19 18:54 UTC (permalink / raw) To: Ville Syrjälä, Zhi Wang, Zhenyu Wang; +Cc: intel-gfx On Mon, Nov 19, 2018 at 05:29:26PM +0200, Ville Syrjälä wrote: > On Mon, Nov 19, 2018 at 04:41:07PM +0200, Imre Deak wrote: > > Depending on the transcoder enum values to translate from transcoder > > to pipe/transcoder register addresses can easily break if we add a new > > transcoder. So remove the dependency by using named initializers. > > > > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > --- > > drivers/gpu/drm/i915/i915_pci.c | 52 ++++++++++++++++++++++++++++++----------- > > 1 file changed, 38 insertions(+), 14 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c > > index 983ae7fd8217..1b81d7cb209e 100644 > > --- a/drivers/gpu/drm/i915/i915_pci.c > > +++ b/drivers/gpu/drm/i915/i915_pci.c > > @@ -33,16 +33,30 @@ > > #define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1) > > > > #define GEN_DEFAULT_PIPEOFFSETS \ > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > - PIPE_C_OFFSET, PIPE_EDP_OFFSET }, \ > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET } > > + .pipe_offsets = { \ > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ > > Hmm. We do define this as int pipe_offsets[I915_MAX_TRANSCODERS], and > PIPECONF/TRANSCONF is per-transcoder so I suppose using TRANSCODER_foo > here make sense. > > Couple of things that came to mind while thinking about this: > - pipe_offsets[] & co. could probably be u32 since we don't > need negative values Ok, can follow up with that. > - _PIPE_EDP could be removed, which would maybe shrink a few > arrays based on I915_MAX_PIPES Agreed. Looks like all the users are in gvt: - PIPECONF(_PIPE_EDP) should use PIPECONF(TRANSCODER_EDP) instead. The current code would also break if we added a new transcoder. - AFAICS PIPEDSL(_PIPE_EDP) PIPESTAT(_PIPE_EDP) PIPE_FRMCOUNT_G4X(_PIPE_EDP) PIPE_FLIPCOUNT_G4X(_PIPE_EDP) are bogus, since these registers don't exist. Adding gvt folks for these. > > Patch is > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > + }, \ > > + .trans_offsets = { \ > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > > + } > > > > #define GEN_CHV_PIPEOFFSETS \ > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > - CHV_PIPE_C_OFFSET }, \ > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > - CHV_TRANSCODER_C_OFFSET } > > + .pipe_offsets = { \ > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > + [TRANSCODER_C] = CHV_PIPE_C_OFFSET, \ > > + }, \ > > + .trans_offsets = { \ > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > + [TRANSCODER_C] = CHV_TRANSCODER_C_OFFSET, \ > > + } > > > > #define CURSOR_OFFSETS \ > > .cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET } > > @@ -592,12 +606,22 @@ static const struct intel_device_info intel_cannonlake_info = { > > > > #define GEN11_FEATURES \ > > GEN10_FEATURES, \ > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > - PIPE_C_OFFSET, PIPE_EDP_OFFSET, \ > > - PIPE_DSI0_OFFSET, PIPE_DSI1_OFFSET }, \ > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET, \ > > - TRANSCODER_DSI0_OFFSET, TRANSCODER_DSI1_OFFSET}, \ > > + .pipe_offsets = { \ > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ > > + [TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \ > > + [TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \ > > + }, \ > > + .trans_offsets = { \ > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > > + [TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \ > > + [TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \ > > + }, \ > > GEN(11), \ > > .ddb_size = 2048, \ > > .has_logical_ring_elsq = 1 > > -- > > 2.13.2 > > -- > 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] 19+ messages in thread
* Re: [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values 2018-11-19 18:54 ` Imre Deak @ 2018-11-20 2:38 ` Zhenyu Wang 0 siblings, 0 replies; 19+ messages in thread From: Zhenyu Wang @ 2018-11-20 2:38 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx [-- Attachment #1.1: Type: text/plain, Size: 5178 bytes --] On 2018.11.19 20:54:30 +0200, Imre Deak wrote: > On Mon, Nov 19, 2018 at 05:29:26PM +0200, Ville Syrjälä wrote: > > On Mon, Nov 19, 2018 at 04:41:07PM +0200, Imre Deak wrote: > > > Depending on the transcoder enum values to translate from transcoder > > > to pipe/transcoder register addresses can easily break if we add a new > > > transcoder. So remove the dependency by using named initializers. > > > > > > Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > > --- > > > drivers/gpu/drm/i915/i915_pci.c | 52 ++++++++++++++++++++++++++++++----------- > > > 1 file changed, 38 insertions(+), 14 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c > > > index 983ae7fd8217..1b81d7cb209e 100644 > > > --- a/drivers/gpu/drm/i915/i915_pci.c > > > +++ b/drivers/gpu/drm/i915/i915_pci.c > > > @@ -33,16 +33,30 @@ > > > #define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1) > > > > > > #define GEN_DEFAULT_PIPEOFFSETS \ > > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > > - PIPE_C_OFFSET, PIPE_EDP_OFFSET }, \ > > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET } > > > + .pipe_offsets = { \ > > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > > > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ > > > > Hmm. We do define this as int pipe_offsets[I915_MAX_TRANSCODERS], and > > PIPECONF/TRANSCONF is per-transcoder so I suppose using TRANSCODER_foo > > here make sense. > > > > Couple of things that came to mind while thinking about this: > > - pipe_offsets[] & co. could probably be u32 since we don't > > need negative values > > Ok, can follow up with that. > > > - _PIPE_EDP could be removed, which would maybe shrink a few > > arrays based on I915_MAX_PIPES > > Agreed. Looks like all the users are in gvt: > > - PIPECONF(_PIPE_EDP) should use PIPECONF(TRANSCODER_EDP) instead. The > current code would also break if we added a new transcoder. yeah, agreed. > - AFAICS > PIPEDSL(_PIPE_EDP) > PIPESTAT(_PIPE_EDP) > PIPE_FRMCOUNT_G4X(_PIPE_EDP) > PIPE_FLIPCOUNT_G4X(_PIPE_EDP) > are bogus, since these registers don't exist. > Thanks for pointing this out, looks they were added in very beginning, will remove those after double check. thanks > Adding gvt folks for these. > > > > > Patch is > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > + }, \ > > > + .trans_offsets = { \ > > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > > > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > > > + } > > > > > > #define GEN_CHV_PIPEOFFSETS \ > > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > > - CHV_PIPE_C_OFFSET }, \ > > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > > - CHV_TRANSCODER_C_OFFSET } > > > + .pipe_offsets = { \ > > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > > + [TRANSCODER_C] = CHV_PIPE_C_OFFSET, \ > > > + }, \ > > > + .trans_offsets = { \ > > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > > + [TRANSCODER_C] = CHV_TRANSCODER_C_OFFSET, \ > > > + } > > > > > > #define CURSOR_OFFSETS \ > > > .cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET } > > > @@ -592,12 +606,22 @@ static const struct intel_device_info intel_cannonlake_info = { > > > > > > #define GEN11_FEATURES \ > > > GEN10_FEATURES, \ > > > - .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ > > > - PIPE_C_OFFSET, PIPE_EDP_OFFSET, \ > > > - PIPE_DSI0_OFFSET, PIPE_DSI1_OFFSET }, \ > > > - .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ > > > - TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET, \ > > > - TRANSCODER_DSI0_OFFSET, TRANSCODER_DSI1_OFFSET}, \ > > > + .pipe_offsets = { \ > > > + [TRANSCODER_A] = PIPE_A_OFFSET, \ > > > + [TRANSCODER_B] = PIPE_B_OFFSET, \ > > > + [TRANSCODER_C] = PIPE_C_OFFSET, \ > > > + [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \ > > > + [TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \ > > > + [TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \ > > > + }, \ > > > + .trans_offsets = { \ > > > + [TRANSCODER_A] = TRANSCODER_A_OFFSET, \ > > > + [TRANSCODER_B] = TRANSCODER_B_OFFSET, \ > > > + [TRANSCODER_C] = TRANSCODER_C_OFFSET, \ > > > + [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \ > > > + [TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \ > > > + [TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \ > > > + }, \ > > > GEN(11), \ > > > .ddb_size = 2048, \ > > > .has_logical_ring_elsq = 1 > > > -- > > > 2.13.2 > > > > -- > > Ville Syrjälä > > Intel -- Open Source Technology Center, Intel ltd. $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827 [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak ` (3 preceding siblings ...) 2018-11-19 15:29 ` [PATCH 1/3] " Ville Syrjälä @ 2018-11-19 19:33 ` Patchwork 2018-11-19 21:09 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev2) Patchwork 2018-11-19 22:32 ` ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev4) Patchwork 6 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2018-11-19 19:33 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values URL : https://patchwork.freedesktop.org/series/52693/ State : success == Summary == = CI Bug Log - changes from CI_DRM_5160_full -> Patchwork_10847_full = == Summary - SUCCESS == No regressions found. == Possible new issues == Here are the unknown changes that may have been introduced in Patchwork_10847_full: === IGT changes === ==== Possible regressions ==== igt@pm_rpm@pc8-residency: {shard-iclb}: SKIP -> INCOMPLETE ==== Warnings ==== igt@tools_test@tools_test: {shard-iclb}: PASS -> SKIP == Known issues == Here are the changes found in Patchwork_10847_full that come from known issues: === IGT changes === ==== Issues hit ==== igt@gem_exec_schedule@pi-ringfull-bsd1: shard-kbl: NOTRUN -> FAIL (fdo#103158) igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b: {shard-iclb}: PASS -> DMESG-WARN (fdo#107956) igt@kms_busy@extended-pageflip-hang-newfb-render-b: shard-glk: PASS -> DMESG-WARN (fdo#107956) igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-a: shard-snb: NOTRUN -> DMESG-WARN (fdo#107956) +1 shard-apl: PASS -> DMESG-WARN (fdo#107956) igt@kms_color@pipe-a-ctm-max: shard-apl: PASS -> FAIL (fdo#108147) igt@kms_cursor_crc@cursor-64x21-random: {shard-iclb}: NOTRUN -> FAIL (fdo#103232) igt@kms_cursor_crc@cursor-64x21-sliding: shard-apl: PASS -> FAIL (fdo#103232) igt@kms_cursor_crc@cursor-size-change: shard-glk: PASS -> FAIL (fdo#103232) igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled: shard-skl: PASS -> FAIL (fdo#103184) igt@kms_fbcon_fbt@psr: {shard-iclb}: NOTRUN -> FAIL (fdo#107882) igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite: shard-apl: PASS -> FAIL (fdo#103167) +1 igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move: {shard-iclb}: PASS -> FAIL (fdo#103167) igt@kms_hdmi_inject@inject-audio: {shard-iclb}: NOTRUN -> FAIL (fdo#102370) igt@kms_pipe_crc_basic@read-crc-pipe-b: shard-skl: NOTRUN -> FAIL (fdo#107362) igt@kms_plane@plane-position-covered-pipe-c-planes: shard-glk: PASS -> FAIL (fdo#103166) +1 igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max: shard-glk: PASS -> FAIL (fdo#108145) +1 igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: shard-skl: PASS -> FAIL (fdo#107815) igt@kms_plane_multiple@atomic-pipe-c-tiling-y: shard-apl: PASS -> FAIL (fdo#103166) igt@kms_plane_multiple@atomic-pipe-c-tiling-yf: {shard-iclb}: PASS -> FAIL (fdo#103166) +1 igt@kms_plane_scaling@pipe-b-scaler-with-rotation: {shard-iclb}: NOTRUN -> DMESG-WARN (fdo#107724) igt@kms_setmode@basic: shard-apl: PASS -> FAIL (fdo#99912) igt@pm_rpm@debugfs-read: shard-skl: PASS -> INCOMPLETE (fdo#107807) +1 igt@prime_vgem@busy-bsd: shard-apl: PASS -> INCOMPLETE (fdo#103927) ==== Possible fixes ==== igt@gem_eio@in-flight-10ms: shard-glk: FAIL (fdo#107799) -> PASS igt@gem_exec_whisper@normal: shard-skl: TIMEOUT (fdo#108592) -> PASS igt@gem_render_copy_redux@normal: shard-kbl: INCOMPLETE (fdo#106650, fdo#103665) -> PASS igt@kms_atomic_transition@1x-modeset-transitions-nonblocking: shard-skl: FAIL (fdo#108470, fdo#108228) -> PASS igt@kms_available_modes_crc@available_mode_test_crc: shard-apl: FAIL (fdo#106641) -> PASS igt@kms_color@pipe-c-degamma: shard-apl: FAIL (fdo#104782) -> PASS igt@kms_color@pipe-c-gamma: shard-skl: FAIL (fdo#104782, fdo#108228) -> PASS igt@kms_cursor_crc@cursor-128x128-random: shard-apl: FAIL (fdo#103232) -> PASS +5 igt@kms_cursor_crc@cursor-256x256-dpms: shard-skl: FAIL (fdo#103232) -> PASS +1 igt@kms_cursor_crc@cursor-64x21-onscreen: shard-glk: FAIL (fdo#103232) -> PASS +1 igt@kms_cursor_crc@cursor-64x64-suspend: shard-apl: FAIL (fdo#103232, fdo#103191) -> PASS +1 igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-xtiled: shard-skl: FAIL (fdo#103184) -> PASS igt@kms_draw_crc@draw-method-xrgb8888-mmap-gtt-xtiled: {shard-iclb}: WARN (fdo#108336) -> PASS +3 igt@kms_flip@flip-vs-expired-vblank: shard-skl: FAIL (fdo#105363) -> PASS shard-glk: FAIL (fdo#105363) -> PASS igt@kms_flip_tiling@flip-changes-tiling: {shard-iclb}: DMESG-WARN (fdo#107724, fdo#108336) -> PASS +12 igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-render: shard-apl: FAIL (fdo#103167) -> PASS +1 igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-cpu: shard-skl: FAIL (fdo#103167) -> PASS +6 igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt: {shard-iclb}: DMESG-FAIL (fdo#107724) -> PASS +5 igt@kms_plane@plane-position-covered-pipe-a-planes: shard-glk: FAIL (fdo#103166) -> PASS igt@kms_plane@plane-position-covered-pipe-c-planes: shard-apl: FAIL (fdo#103166) -> PASS +1 igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: shard-skl: FAIL (fdo#107815, fdo#108145) -> PASS igt@kms_plane_multiple@atomic-pipe-b-tiling-yf: {shard-iclb}: FAIL (fdo#103166) -> PASS igt@kms_psr@sprite_mmap_gtt: {shard-iclb}: DMESG-WARN (fdo#107724) -> PASS +22 igt@pm_rpm@universal-planes: shard-skl: INCOMPLETE (fdo#107807) -> PASS ==== Warnings ==== igt@i915_suspend@shrink: shard-skl: DMESG-WARN (fdo#108784) -> INCOMPLETE (fdo#106886) igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-cpu: {shard-iclb}: DMESG-FAIL (fdo#107724) -> FAIL (fdo#103167) {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). fdo#102370 https://bugs.freedesktop.org/show_bug.cgi?id=102370 fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158 fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166 fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167 fdo#103184 https://bugs.freedesktop.org/show_bug.cgi?id=103184 fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191 fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232 fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665 fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927 fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782 fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363 fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641 fdo#106650 https://bugs.freedesktop.org/show_bug.cgi?id=106650 fdo#106886 https://bugs.freedesktop.org/show_bug.cgi?id=106886 fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362 fdo#107724 https://bugs.freedesktop.org/show_bug.cgi?id=107724 fdo#107799 https://bugs.freedesktop.org/show_bug.cgi?id=107799 fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807 fdo#107815 https://bugs.freedesktop.org/show_bug.cgi?id=107815 fdo#107882 https://bugs.freedesktop.org/show_bug.cgi?id=107882 fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956 fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145 fdo#108147 https://bugs.freedesktop.org/show_bug.cgi?id=108147 fdo#108228 https://bugs.freedesktop.org/show_bug.cgi?id=108228 fdo#108336 https://bugs.freedesktop.org/show_bug.cgi?id=108336 fdo#108470 https://bugs.freedesktop.org/show_bug.cgi?id=108470 fdo#108592 https://bugs.freedesktop.org/show_bug.cgi?id=108592 fdo#108784 https://bugs.freedesktop.org/show_bug.cgi?id=108784 fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912 == Participating hosts (7 -> 7) == No changes in participating hosts == Build changes == * Linux: CI_DRM_5160 -> Patchwork_10847 CI_DRM_5160: 80350f0233d79937675bdc76d7864f51843ccc63 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10847: 799f685980adcac64afb2b90df4a0f38330553ff @ 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_10847/shards.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev2) 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak ` (4 preceding siblings ...) 2018-11-19 19:33 ` ✓ Fi.CI.IGT: success for series starting with [1/3] " Patchwork @ 2018-11-19 21:09 ` Patchwork 2018-11-19 22:32 ` ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev4) Patchwork 6 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2018-11-19 21:09 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev2) URL : https://patchwork.freedesktop.org/series/52693/ State : success == Summary == = CI Bug Log - changes from CI_DRM_5165 -> Patchwork_10853 = == Summary - SUCCESS == No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/52693/revisions/2/mbox/ == Known issues == Here are the changes found in Patchwork_10853 that come from known issues: === IGT changes === ==== Issues hit ==== igt@gem_exec_suspend@basic-s3: fi-icl-u: NOTRUN -> INCOMPLETE (fdo#107713) igt@i915_selftest@live_coherency: fi-gdg-551: PASS -> DMESG-FAIL (fdo#107164) igt@kms_pipe_crc_basic@hang-read-crc-pipe-b: fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191) ==== Possible fixes ==== igt@gem_ctx_create@basic-files: fi-icl-u2: DMESG-WARN (fdo#107724) -> PASS igt@kms_pipe_crc_basic@read-crc-pipe-a: fi-byt-clapper: FAIL (fdo#107362) -> PASS igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a: fi-byt-clapper: FAIL (fdo#107362, fdo#103191) -> PASS fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191 fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164 fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362 fdo#107713 https://bugs.freedesktop.org/show_bug.cgi?id=107713 fdo#107724 https://bugs.freedesktop.org/show_bug.cgi?id=107724 == Participating hosts (53 -> 47) == Additional (1): fi-icl-u Missing (7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-icl-u3 == Build changes == * Linux: CI_DRM_5165 -> Patchwork_10853 CI_DRM_5165: 1715a40008b3d4d47ed0171925063b07ab0012f7 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10853: 6df0f6ae34ea980b362f0595b578dc9e9e0e0b16 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 6df0f6ae34ea drm/i915: Add code comment on assumption of pipe==transcoder 3ad600726483 drm/i915: Make EDP PSR flags not depend on enum values 189055c6a3c6 drm/i915: Make pipe/transcoder offsets not depend on enum values == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10853/issues.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev4) 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak ` (5 preceding siblings ...) 2018-11-19 21:09 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev2) Patchwork @ 2018-11-19 22:32 ` Patchwork 6 siblings, 0 replies; 19+ messages in thread From: Patchwork @ 2018-11-19 22:32 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev4) URL : https://patchwork.freedesktop.org/series/52693/ State : failure == Summary == Applying: drm/i915: Make pipe/transcoder offsets not depend on enum values Applying: drm/i915: Add code comment on assumption of pipe==transcoder Applying: drm/i915: Add code comment on assumption of pipe==transcoder Using index info to reconstruct a base tree... M drivers/gpu/drm/i915/intel_display.h Falling back to patching base and 3-way merge... Auto-merging drivers/gpu/drm/i915/intel_display.h CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/intel_display.h error: Failed to merge in the changes. Patch failed at 0003 drm/i915: Add code comment on assumption of pipe==transcoder Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2018-11-20 2:48 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-11-19 14:41 [PATCH 1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Imre Deak 2018-11-19 14:41 ` [PATCH 2/3] drm/i915: Make EDP PSR flags " Imre Deak 2018-11-19 20:46 ` [PATCH v2 " Imre Deak 2018-11-19 20:58 ` Ville Syrjälä 2018-11-19 21:56 ` [PATCH v3 " Imre Deak 2018-11-19 21:56 ` [PATCH v2 3/3] drm/i915: Add code comment on assumption of pipe==transcoder Imre Deak 2018-11-19 14:41 ` [PATCH " Imre Deak 2018-11-19 15:51 ` Ville Syrjälä 2018-11-19 18:43 ` Imre Deak 2018-11-19 18:55 ` Ville Syrjälä 2018-11-19 22:06 ` Lucas De Marchi 2018-11-19 22:34 ` Imre Deak 2018-11-19 15:11 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values Patchwork 2018-11-19 15:29 ` [PATCH 1/3] " Ville Syrjälä 2018-11-19 18:54 ` Imre Deak 2018-11-20 2:38 ` Zhenyu Wang 2018-11-19 19:33 ` ✓ Fi.CI.IGT: success for series starting with [1/3] " Patchwork 2018-11-19 21:09 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev2) Patchwork 2018-11-19 22:32 ` ✗ Fi.CI.BAT: failure for series starting with [1/3] drm/i915: Make pipe/transcoder offsets not depend on enum values (rev4) Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox