* [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written
@ 2018-04-25 21:23 José Roberto de Souza
2018-04-25 21:23 ` [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit José Roberto de Souza
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: José Roberto de Souza @ 2018-04-25 21:23 UTC (permalink / raw)
To: intel-gfx; +Cc: Rodrigo Vivi
Any write in any display register was causing HW to exit PSR,
masking it to allow more power savings. Writes to pipe related
registers will still cause HW to exit PSR.
This is already masked for PSR2.
It also do not break the Display WA #0884, writes to CURSURFLIVE
are still causing hardware to exit PSR. This was tested in CNL machine
by triggering a write to CURSURFLIVE when a debugfs was read by user.
Bspec: 7721 and 8042
v4: Checked that it do not breaks WA #0884 and added this information
to the commit message.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
drivers/gpu/drm/i915/intel_psr.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 0d548292dd09..e35a3b94fa69 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -667,7 +667,8 @@ static void hsw_psr_enable_source(struct intel_dp *intel_dp,
I915_WRITE(EDP_PSR_DEBUG,
EDP_PSR_DEBUG_MASK_MEMUP |
EDP_PSR_DEBUG_MASK_HPD |
- EDP_PSR_DEBUG_MASK_LPSP);
+ EDP_PSR_DEBUG_MASK_LPSP |
+ EDP_PSR_DEBUG_MASK_DISP_REG_WRITE);
}
}
--
2.17.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza @ 2018-04-25 21:23 ` José Roberto de Souza 2018-04-25 21:40 ` Rodrigo Vivi 2018-04-25 21:23 ` [PATCH 3/4] drm/i915/debugfs: Print sink PSR status José Roberto de Souza ` (3 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: José Roberto de Souza @ 2018-04-25 21:23 UTC (permalink / raw) To: intel-gfx; +Cc: Dhinakaran Pandiyan, Rodrigo Vivi This will be helpful to debug what hardware is actually tracking and causing PSR to exit. BSpec: 7721 v4: - Using _MMIO_TRANS2() in PSR_EVENT - Cleaning events before printing Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/i915/i915_reg.h | 23 ++++++++++++++++ drivers/gpu/drm/i915/intel_psr.c | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 2dad655a710c..391825ae2361 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4095,6 +4095,29 @@ enum { #define EDP_PSR2_IDLE_FRAME_MASK 0xf #define EDP_PSR2_IDLE_FRAME_SHIFT 0 +#define _PSR_EVENT_TRANS_A 0x60848 +#define _PSR_EVENT_TRANS_B 0x61848 +#define _PSR_EVENT_TRANS_C 0x62848 +#define _PSR_EVENT_TRANS_D 0x63848 +#define _PSR_EVENT_TRANS_EDP 0x6F848 +#define PSR_EVENT(trans) _MMIO_TRANS2(trans, _PSR_EVENT_TRANS_A) +#define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17) +#define PSR_EVENT_PSR2_DISABLED (1 << 16) +#define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15) +#define PSR_EVENT_SU_CRC_FIFO_UNDERRUN (1 << 14) +#define PSR_EVENT_GRAPHICS_RESET (1 << 12) +#define PSR_EVENT_PCH_INTERRUPT (1 << 11) +#define PSR_EVENT_MEMORY_UP (1 << 10) +#define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9) +#define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8) +#define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6) +#define PSR_EVENT_REGISTER_UPDATE (1 << 5) +#define PSR_EVENT_HDCP_ENABLE (1 << 4) +#define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3) +#define PSR_EVENT_VBI_ENABLE (1 << 2) +#define PSR_EVENT_LPSP_MODE_EXIT (1 << 1) +#define PSR_EVENT_PSR_DISABLE (1 << 0) + #define EDP_PSR2_STATUS _MMIO(0x6f940) #define EDP_PSR2_STATUS_STATE_MASK (0xf<<28) #define EDP_PSR2_STATUS_STATE_SHIFT 28 diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index e35a3b94fa69..c8d5cdce544f 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -125,6 +125,43 @@ void intel_psr_irq_control(struct drm_i915_private *dev_priv, bool debug) I915_WRITE(EDP_PSR_IMR, ~mask); } +static void psr_event_print(u32 val, bool psr2_enabled) +{ + DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val); + if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE) + DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n"); + if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled) + DRM_DEBUG_KMS("\tPSR2 disabled\n"); + if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN) + DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n"); + if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN) + DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n"); + if (val & PSR_EVENT_GRAPHICS_RESET) + DRM_DEBUG_KMS("\tGraphics reset\n"); + if (val & PSR_EVENT_PCH_INTERRUPT) + DRM_DEBUG_KMS("\tPCH interrupt\n"); + if (val & PSR_EVENT_MEMORY_UP) + DRM_DEBUG_KMS("\tMemory up\n"); + if (val & PSR_EVENT_FRONT_BUFFER_MODIFY) + DRM_DEBUG_KMS("\tFront buffer modification\n"); + if (val & PSR_EVENT_WD_TIMER_EXPIRE) + DRM_DEBUG_KMS("\tPSR watchdog timer expired\n"); + if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE) + DRM_DEBUG_KMS("\tPIPE registers updated\n"); + if (val & PSR_EVENT_REGISTER_UPDATE) + DRM_DEBUG_KMS("\tRegister updated\n"); + if (val & PSR_EVENT_HDCP_ENABLE) + DRM_DEBUG_KMS("\tHDCP enabled\n"); + if (val & PSR_EVENT_KVMR_SESSION_ENABLE) + DRM_DEBUG_KMS("\tKVMR session enabled\n"); + if (val & PSR_EVENT_VBI_ENABLE) + DRM_DEBUG_KMS("\tVBI enabled\n"); + if (val & PSR_EVENT_LPSP_MODE_EXIT) + DRM_DEBUG_KMS("\tLPSP mode exited\n"); + if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled) + DRM_DEBUG_KMS("\tPSR disabled\n"); +} + void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) { u32 transcoders = BIT(TRANSCODER_EDP); @@ -152,6 +189,14 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) dev_priv->psr.last_exit = time_ns; DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", transcoder_name(cpu_transcoder)); + + if (INTEL_GEN(dev_priv) >= 9) { + u32 val = I915_READ(PSR_EVENT(cpu_transcoder)); + bool psr2_enabled = dev_priv->psr.psr2_enabled; + + I915_WRITE(PSR_EVENT(cpu_transcoder), val); + psr_event_print(val, psr2_enabled); + } } } } -- 2.17.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit 2018-04-25 21:23 ` [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit José Roberto de Souza @ 2018-04-25 21:40 ` Rodrigo Vivi 2018-04-25 21:47 ` Souza, Jose 0 siblings, 1 reply; 10+ messages in thread From: Rodrigo Vivi @ 2018-04-25 21:40 UTC (permalink / raw) To: José Roberto de Souza; +Cc: intel-gfx, Dhinakaran Pandiyan On Wed, Apr 25, 2018 at 02:23:32PM -0700, José Roberto de Souza wrote: > This will be helpful to debug what hardware is actually tracking > and causing PSR to exit. > > BSpec: 7721 > > v4: > - Using _MMIO_TRANS2() in PSR_EVENT > - Cleaning events before printing > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > drivers/gpu/drm/i915/i915_reg.h | 23 ++++++++++++++++ > drivers/gpu/drm/i915/intel_psr.c | 45 ++++++++++++++++++++++++++++++++ > 2 files changed, 68 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 2dad655a710c..391825ae2361 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -4095,6 +4095,29 @@ enum { > #define EDP_PSR2_IDLE_FRAME_MASK 0xf > #define EDP_PSR2_IDLE_FRAME_SHIFT 0 > > +#define _PSR_EVENT_TRANS_A 0x60848 > +#define _PSR_EVENT_TRANS_B 0x61848 > +#define _PSR_EVENT_TRANS_C 0x62848 > +#define _PSR_EVENT_TRANS_D 0x63848 > +#define _PSR_EVENT_TRANS_EDP 0x6F848 > +#define PSR_EVENT(trans) _MMIO_TRANS2(trans, _PSR_EVENT_TRANS_A) > +#define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17) > +#define PSR_EVENT_PSR2_DISABLED (1 << 16) > +#define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15) > +#define PSR_EVENT_SU_CRC_FIFO_UNDERRUN (1 << 14) > +#define PSR_EVENT_GRAPHICS_RESET (1 << 12) > +#define PSR_EVENT_PCH_INTERRUPT (1 << 11) > +#define PSR_EVENT_MEMORY_UP (1 << 10) > +#define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9) > +#define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8) > +#define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6) > +#define PSR_EVENT_REGISTER_UPDATE (1 << 5) > +#define PSR_EVENT_HDCP_ENABLE (1 << 4) > +#define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3) > +#define PSR_EVENT_VBI_ENABLE (1 << 2) > +#define PSR_EVENT_LPSP_MODE_EXIT (1 << 1) > +#define PSR_EVENT_PSR_DISABLE (1 << 0) > + > #define EDP_PSR2_STATUS _MMIO(0x6f940) > #define EDP_PSR2_STATUS_STATE_MASK (0xf<<28) > #define EDP_PSR2_STATUS_STATE_SHIFT 28 > diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c > index e35a3b94fa69..c8d5cdce544f 100644 > --- a/drivers/gpu/drm/i915/intel_psr.c > +++ b/drivers/gpu/drm/i915/intel_psr.c > @@ -125,6 +125,43 @@ void intel_psr_irq_control(struct drm_i915_private *dev_priv, bool debug) > I915_WRITE(EDP_PSR_IMR, ~mask); > } > > +static void psr_event_print(u32 val, bool psr2_enabled) > +{ > + DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val); > + if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE) > + DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n"); > + if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled) I'm not sure if we should add this extra psr2_enable check here. Probably better to just print the bit reference and move one. otherwise we might have the risk of having a message "PSR exit events:" followed by nothing below it > + DRM_DEBUG_KMS("\tPSR2 disabled\n"); > + if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN) > + DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n"); > + if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN) > + DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n"); > + if (val & PSR_EVENT_GRAPHICS_RESET) > + DRM_DEBUG_KMS("\tGraphics reset\n"); > + if (val & PSR_EVENT_PCH_INTERRUPT) > + DRM_DEBUG_KMS("\tPCH interrupt\n"); > + if (val & PSR_EVENT_MEMORY_UP) > + DRM_DEBUG_KMS("\tMemory up\n"); > + if (val & PSR_EVENT_FRONT_BUFFER_MODIFY) > + DRM_DEBUG_KMS("\tFront buffer modification\n"); > + if (val & PSR_EVENT_WD_TIMER_EXPIRE) > + DRM_DEBUG_KMS("\tPSR watchdog timer expired\n"); > + if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE) > + DRM_DEBUG_KMS("\tPIPE registers updated\n"); > + if (val & PSR_EVENT_REGISTER_UPDATE) > + DRM_DEBUG_KMS("\tRegister updated\n"); > + if (val & PSR_EVENT_HDCP_ENABLE) > + DRM_DEBUG_KMS("\tHDCP enabled\n"); > + if (val & PSR_EVENT_KVMR_SESSION_ENABLE) > + DRM_DEBUG_KMS("\tKVMR session enabled\n"); > + if (val & PSR_EVENT_VBI_ENABLE) > + DRM_DEBUG_KMS("\tVBI enabled\n"); > + if (val & PSR_EVENT_LPSP_MODE_EXIT) > + DRM_DEBUG_KMS("\tLPSP mode exited\n"); > + if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled) > + DRM_DEBUG_KMS("\tPSR disabled\n"); > +} > + > void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) > { > u32 transcoders = BIT(TRANSCODER_EDP); > @@ -152,6 +189,14 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir) > dev_priv->psr.last_exit = time_ns; > DRM_DEBUG_KMS("[transcoder %s] PSR exit completed\n", > transcoder_name(cpu_transcoder)); > + > + if (INTEL_GEN(dev_priv) >= 9) { > + u32 val = I915_READ(PSR_EVENT(cpu_transcoder)); > + bool psr2_enabled = dev_priv->psr.psr2_enabled; > + > + I915_WRITE(PSR_EVENT(cpu_transcoder), val); writing the value back really clears it? or should we clear by writting 0 to it? > + psr_event_print(val, psr2_enabled); > + } > } > } > } > -- > 2.17.0 > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit 2018-04-25 21:40 ` Rodrigo Vivi @ 2018-04-25 21:47 ` Souza, Jose 2018-04-25 21:53 ` Rodrigo Vivi 0 siblings, 1 reply; 10+ messages in thread From: Souza, Jose @ 2018-04-25 21:47 UTC (permalink / raw) To: Vivi, Rodrigo; +Cc: intel-gfx@lists.freedesktop.org, Pandiyan, Dhinakaran On Wed, 2018-04-25 at 14:40 -0700, Rodrigo Vivi wrote: > On Wed, Apr 25, 2018 at 02:23:32PM -0700, José Roberto de Souza > wrote: > > This will be helpful to debug what hardware is actually tracking > > and causing PSR to exit. > > > > BSpec: 7721 > > > > v4: > > - Using _MMIO_TRANS2() in PSR_EVENT > > - Cleaning events before printing > > > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com> > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > > --- > > drivers/gpu/drm/i915/i915_reg.h | 23 ++++++++++++++++ > > drivers/gpu/drm/i915/intel_psr.c | 45 > > ++++++++++++++++++++++++++++++++ > > 2 files changed, 68 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > > b/drivers/gpu/drm/i915/i915_reg.h > > index 2dad655a710c..391825ae2361 100644 > > --- a/drivers/gpu/drm/i915/i915_reg.h > > +++ b/drivers/gpu/drm/i915/i915_reg.h > > @@ -4095,6 +4095,29 @@ enum { > > #define EDP_PSR2_IDLE_FRAME_MASK 0xf > > #define EDP_PSR2_IDLE_FRAME_SHIFT 0 > > > > +#define _PSR_EVENT_TRANS_A 0x60848 > > +#define _PSR_EVENT_TRANS_B 0x61848 > > +#define _PSR_EVENT_TRANS_C 0x62848 > > +#define _PSR_EVENT_TRANS_D 0x63848 > > +#define _PSR_EVENT_TRANS_EDP 0x6F848 > > +#define PSR_EVENT(trans) _MMIO_TRANS2(trans > > , _PSR_EVENT_TRANS_A) > > +#define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17) > > +#define PSR_EVENT_PSR2_DISABLED (1 << 16) > > +#define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15) > > +#define PSR_EVENT_SU_CRC_FIFO_UNDERRUN (1 << 14) > > +#define PSR_EVENT_GRAPHICS_RESET (1 << 12) > > +#define PSR_EVENT_PCH_INTERRUPT (1 << 11) > > +#define PSR_EVENT_MEMORY_UP (1 << 10) > > +#define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9) > > +#define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8) > > +#define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6) > > +#define PSR_EVENT_REGISTER_UPDATE (1 << 5) > > +#define PSR_EVENT_HDCP_ENABLE (1 << 4) > > +#define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3) > > +#define PSR_EVENT_VBI_ENABLE (1 << 2) > > +#define PSR_EVENT_LPSP_MODE_EXIT (1 << 1) > > +#define PSR_EVENT_PSR_DISABLE (1 << 0) > > + > > #define EDP_PSR2_STATUS _MMIO(0x6f940) > > #define EDP_PSR2_STATUS_STATE_MASK (0xf<<28) > > #define EDP_PSR2_STATUS_STATE_SHIFT 28 > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > b/drivers/gpu/drm/i915/intel_psr.c > > index e35a3b94fa69..c8d5cdce544f 100644 > > --- a/drivers/gpu/drm/i915/intel_psr.c > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > @@ -125,6 +125,43 @@ void intel_psr_irq_control(struct > > drm_i915_private *dev_priv, bool debug) > > I915_WRITE(EDP_PSR_IMR, ~mask); > > } > > > > +static void psr_event_print(u32 val, bool psr2_enabled) > > +{ > > + DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val); > > + if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE) > > + DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n"); > > + if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled) > > I'm not sure if we should add this extra psr2_enable check here. > Probably better to just print the bit reference and move one. > > otherwise we might have the risk of having a message > "PSR exit events:" > followed by nothing below it I'm okay with this too but I think is not necessary have 'PSR2 disabled' printed everytime when PSR is enabled. > > > + DRM_DEBUG_KMS("\tPSR2 disabled\n"); > > + if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN) > > + DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n"); > > + if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN) > > + DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n"); > > + if (val & PSR_EVENT_GRAPHICS_RESET) > > + DRM_DEBUG_KMS("\tGraphics reset\n"); > > + if (val & PSR_EVENT_PCH_INTERRUPT) > > + DRM_DEBUG_KMS("\tPCH interrupt\n"); > > + if (val & PSR_EVENT_MEMORY_UP) > > + DRM_DEBUG_KMS("\tMemory up\n"); > > + if (val & PSR_EVENT_FRONT_BUFFER_MODIFY) > > + DRM_DEBUG_KMS("\tFront buffer modification\n"); > > + if (val & PSR_EVENT_WD_TIMER_EXPIRE) > > + DRM_DEBUG_KMS("\tPSR watchdog timer expired\n"); > > + if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE) > > + DRM_DEBUG_KMS("\tPIPE registers updated\n"); > > + if (val & PSR_EVENT_REGISTER_UPDATE) > > + DRM_DEBUG_KMS("\tRegister updated\n"); > > + if (val & PSR_EVENT_HDCP_ENABLE) > > + DRM_DEBUG_KMS("\tHDCP enabled\n"); > > + if (val & PSR_EVENT_KVMR_SESSION_ENABLE) > > + DRM_DEBUG_KMS("\tKVMR session enabled\n"); > > + if (val & PSR_EVENT_VBI_ENABLE) > > + DRM_DEBUG_KMS("\tVBI enabled\n"); > > + if (val & PSR_EVENT_LPSP_MODE_EXIT) > > + DRM_DEBUG_KMS("\tLPSP mode exited\n"); > > + if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled) > > + DRM_DEBUG_KMS("\tPSR disabled\n"); > > +} > > + > > void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 > > psr_iir) > > { > > u32 transcoders = BIT(TRANSCODER_EDP); > > @@ -152,6 +189,14 @@ void intel_psr_irq_handler(struct > > drm_i915_private *dev_priv, u32 psr_iir) > > dev_priv->psr.last_exit = time_ns; > > DRM_DEBUG_KMS("[transcoder %s] PSR exit > > completed\n", > > transcoder_name(cpu_transcod > > er)); > > + > > + if (INTEL_GEN(dev_priv) >= 9) { > > + u32 val = > > I915_READ(PSR_EVENT(cpu_transcoder)); > > + bool psr2_enabled = dev_priv- > > >psr.psr2_enabled; > > + > > + I915_WRITE(PSR_EVENT(cpu_transcode > > r), val); > > writing the value back really clears it? > or should we clear by writting 0 to it? Yes, it is cleared by writing 1 to the bit. > > > + psr_event_print(val, > > psr2_enabled); > > + } > > } > > } > > } > > -- > > 2.17.0 > > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit 2018-04-25 21:47 ` Souza, Jose @ 2018-04-25 21:53 ` Rodrigo Vivi 2018-04-26 22:37 ` Rodrigo Vivi 0 siblings, 1 reply; 10+ messages in thread From: Rodrigo Vivi @ 2018-04-25 21:53 UTC (permalink / raw) To: Souza, Jose; +Cc: intel-gfx@lists.freedesktop.org, Pandiyan, Dhinakaran On Wed, Apr 25, 2018 at 02:47:35PM -0700, Souza, Jose wrote: > On Wed, 2018-04-25 at 14:40 -0700, Rodrigo Vivi wrote: > > On Wed, Apr 25, 2018 at 02:23:32PM -0700, José Roberto de Souza > > wrote: > > > This will be helpful to debug what hardware is actually tracking > > > and causing PSR to exit. > > > > > > BSpec: 7721 > > > > > > v4: > > > - Using _MMIO_TRANS2() in PSR_EVENT > > > - Cleaning events before printing > > > > > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com> > > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > > > --- > > > drivers/gpu/drm/i915/i915_reg.h | 23 ++++++++++++++++ > > > drivers/gpu/drm/i915/intel_psr.c | 45 > > > ++++++++++++++++++++++++++++++++ > > > 2 files changed, 68 insertions(+) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > > > b/drivers/gpu/drm/i915/i915_reg.h > > > index 2dad655a710c..391825ae2361 100644 > > > --- a/drivers/gpu/drm/i915/i915_reg.h > > > +++ b/drivers/gpu/drm/i915/i915_reg.h > > > @@ -4095,6 +4095,29 @@ enum { > > > #define EDP_PSR2_IDLE_FRAME_MASK 0xf > > > #define EDP_PSR2_IDLE_FRAME_SHIFT 0 > > > > > > +#define _PSR_EVENT_TRANS_A 0x60848 > > > +#define _PSR_EVENT_TRANS_B 0x61848 > > > +#define _PSR_EVENT_TRANS_C 0x62848 > > > +#define _PSR_EVENT_TRANS_D 0x63848 > > > +#define _PSR_EVENT_TRANS_EDP 0x6F848 > > > +#define PSR_EVENT(trans) _MMIO_TRANS2(trans > > > , _PSR_EVENT_TRANS_A) > > > +#define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17) > > > +#define PSR_EVENT_PSR2_DISABLED (1 << 16) > > > +#define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15) > > > +#define PSR_EVENT_SU_CRC_FIFO_UNDERRUN (1 << 14) > > > +#define PSR_EVENT_GRAPHICS_RESET (1 << 12) > > > +#define PSR_EVENT_PCH_INTERRUPT (1 << 11) > > > +#define PSR_EVENT_MEMORY_UP (1 << 10) > > > +#define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9) > > > +#define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8) > > > +#define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6) > > > +#define PSR_EVENT_REGISTER_UPDATE (1 << 5) > > > +#define PSR_EVENT_HDCP_ENABLE (1 << 4) > > > +#define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3) > > > +#define PSR_EVENT_VBI_ENABLE (1 << 2) > > > +#define PSR_EVENT_LPSP_MODE_EXIT (1 << 1) > > > +#define PSR_EVENT_PSR_DISABLE (1 << 0) > > > + > > > #define EDP_PSR2_STATUS _MMIO(0x6f940) > > > #define EDP_PSR2_STATUS_STATE_MASK (0xf<<28) > > > #define EDP_PSR2_STATUS_STATE_SHIFT 28 > > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > > b/drivers/gpu/drm/i915/intel_psr.c > > > index e35a3b94fa69..c8d5cdce544f 100644 > > > --- a/drivers/gpu/drm/i915/intel_psr.c > > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > > @@ -125,6 +125,43 @@ void intel_psr_irq_control(struct > > > drm_i915_private *dev_priv, bool debug) > > > I915_WRITE(EDP_PSR_IMR, ~mask); > > > } > > > > > > +static void psr_event_print(u32 val, bool psr2_enabled) > > > +{ > > > + DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val); > > > + if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE) > > > + DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n"); > > > + if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled) > > > > I'm not sure if we should add this extra psr2_enable check here. > > Probably better to just print the bit reference and move one. > > > > otherwise we might have the risk of having a message > > "PSR exit events:" > > followed by nothing below it > > I'm okay with this too but I think is not necessary have 'PSR2 > disabled' printed everytime when PSR is enabled. oh! I see your point now... Makes sense to minimize this noise, and let's hope we don't face the empty case. > > > > > > + DRM_DEBUG_KMS("\tPSR2 disabled\n"); > > > + if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN) > > > + DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n"); > > > + if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN) > > > + DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n"); > > > + if (val & PSR_EVENT_GRAPHICS_RESET) > > > + DRM_DEBUG_KMS("\tGraphics reset\n"); > > > + if (val & PSR_EVENT_PCH_INTERRUPT) > > > + DRM_DEBUG_KMS("\tPCH interrupt\n"); > > > + if (val & PSR_EVENT_MEMORY_UP) > > > + DRM_DEBUG_KMS("\tMemory up\n"); > > > + if (val & PSR_EVENT_FRONT_BUFFER_MODIFY) > > > + DRM_DEBUG_KMS("\tFront buffer modification\n"); > > > + if (val & PSR_EVENT_WD_TIMER_EXPIRE) > > > + DRM_DEBUG_KMS("\tPSR watchdog timer expired\n"); > > > + if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE) > > > + DRM_DEBUG_KMS("\tPIPE registers updated\n"); > > > + if (val & PSR_EVENT_REGISTER_UPDATE) > > > + DRM_DEBUG_KMS("\tRegister updated\n"); > > > + if (val & PSR_EVENT_HDCP_ENABLE) > > > + DRM_DEBUG_KMS("\tHDCP enabled\n"); > > > + if (val & PSR_EVENT_KVMR_SESSION_ENABLE) > > > + DRM_DEBUG_KMS("\tKVMR session enabled\n"); > > > + if (val & PSR_EVENT_VBI_ENABLE) > > > + DRM_DEBUG_KMS("\tVBI enabled\n"); > > > + if (val & PSR_EVENT_LPSP_MODE_EXIT) > > > + DRM_DEBUG_KMS("\tLPSP mode exited\n"); > > > + if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled) > > > + DRM_DEBUG_KMS("\tPSR disabled\n"); > > > +} > > > + > > > void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 > > > psr_iir) > > > { > > > u32 transcoders = BIT(TRANSCODER_EDP); > > > @@ -152,6 +189,14 @@ void intel_psr_irq_handler(struct > > > drm_i915_private *dev_priv, u32 psr_iir) > > > dev_priv->psr.last_exit = time_ns; > > > DRM_DEBUG_KMS("[transcoder %s] PSR exit > > > completed\n", > > > transcoder_name(cpu_transcod > > > er)); > > > + > > > + if (INTEL_GEN(dev_priv) >= 9) { > > > + u32 val = > > > I915_READ(PSR_EVENT(cpu_transcoder)); > > > + bool psr2_enabled = dev_priv- > > > >psr.psr2_enabled; > > > + > > > + I915_WRITE(PSR_EVENT(cpu_transcode > > > r), val); > > > > writing the value back really clears it? > > or should we clear by writting 0 to it? > > Yes, it is cleared by writing 1 to the bit. cool, thanks for the confirmation Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (as soon as CI give okay I will push them) > > > > > > + psr_event_print(val, > > > psr2_enabled); > > > + } > > > } > > > } > > > } > > > -- > > > 2.17.0 > > > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit 2018-04-25 21:53 ` Rodrigo Vivi @ 2018-04-26 22:37 ` Rodrigo Vivi 0 siblings, 0 replies; 10+ messages in thread From: Rodrigo Vivi @ 2018-04-26 22:37 UTC (permalink / raw) To: Souza, Jose; +Cc: intel-gfx@lists.freedesktop.org, Pandiyan, Dhinakaran On Wed, Apr 25, 2018 at 02:53:25PM -0700, Rodrigo Vivi wrote: > On Wed, Apr 25, 2018 at 02:47:35PM -0700, Souza, Jose wrote: > > On Wed, 2018-04-25 at 14:40 -0700, Rodrigo Vivi wrote: > > > On Wed, Apr 25, 2018 at 02:23:32PM -0700, José Roberto de Souza > > > wrote: > > > > This will be helpful to debug what hardware is actually tracking > > > > and causing PSR to exit. > > > > > > > > BSpec: 7721 > > > > > > > > v4: > > > > - Using _MMIO_TRANS2() in PSR_EVENT > > > > - Cleaning events before printing > > > > > > > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com> > > > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > > > > --- > > > > drivers/gpu/drm/i915/i915_reg.h | 23 ++++++++++++++++ > > > > drivers/gpu/drm/i915/intel_psr.c | 45 > > > > ++++++++++++++++++++++++++++++++ > > > > 2 files changed, 68 insertions(+) > > > > > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > > > > b/drivers/gpu/drm/i915/i915_reg.h > > > > index 2dad655a710c..391825ae2361 100644 > > > > --- a/drivers/gpu/drm/i915/i915_reg.h > > > > +++ b/drivers/gpu/drm/i915/i915_reg.h > > > > @@ -4095,6 +4095,29 @@ enum { > > > > #define EDP_PSR2_IDLE_FRAME_MASK 0xf > > > > #define EDP_PSR2_IDLE_FRAME_SHIFT 0 > > > > > > > > +#define _PSR_EVENT_TRANS_A 0x60848 > > > > +#define _PSR_EVENT_TRANS_B 0x61848 > > > > +#define _PSR_EVENT_TRANS_C 0x62848 > > > > +#define _PSR_EVENT_TRANS_D 0x63848 > > > > +#define _PSR_EVENT_TRANS_EDP 0x6F848 > > > > +#define PSR_EVENT(trans) _MMIO_TRANS2(trans > > > > , _PSR_EVENT_TRANS_A) > > > > +#define PSR_EVENT_PSR2_WD_TIMER_EXPIRE (1 << 17) > > > > +#define PSR_EVENT_PSR2_DISABLED (1 << 16) > > > > +#define PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN (1 << 15) > > > > +#define PSR_EVENT_SU_CRC_FIFO_UNDERRUN (1 << 14) > > > > +#define PSR_EVENT_GRAPHICS_RESET (1 << 12) > > > > +#define PSR_EVENT_PCH_INTERRUPT (1 << 11) > > > > +#define PSR_EVENT_MEMORY_UP (1 << 10) > > > > +#define PSR_EVENT_FRONT_BUFFER_MODIFY (1 << 9) > > > > +#define PSR_EVENT_WD_TIMER_EXPIRE (1 << 8) > > > > +#define PSR_EVENT_PIPE_REGISTERS_UPDATE (1 << 6) > > > > +#define PSR_EVENT_REGISTER_UPDATE (1 << 5) > > > > +#define PSR_EVENT_HDCP_ENABLE (1 << 4) > > > > +#define PSR_EVENT_KVMR_SESSION_ENABLE (1 << 3) > > > > +#define PSR_EVENT_VBI_ENABLE (1 << 2) > > > > +#define PSR_EVENT_LPSP_MODE_EXIT (1 << 1) > > > > +#define PSR_EVENT_PSR_DISABLE (1 << 0) > > > > + > > > > #define EDP_PSR2_STATUS _MMIO(0x6f940) > > > > #define EDP_PSR2_STATUS_STATE_MASK (0xf<<28) > > > > #define EDP_PSR2_STATUS_STATE_SHIFT 28 > > > > diff --git a/drivers/gpu/drm/i915/intel_psr.c > > > > b/drivers/gpu/drm/i915/intel_psr.c > > > > index e35a3b94fa69..c8d5cdce544f 100644 > > > > --- a/drivers/gpu/drm/i915/intel_psr.c > > > > +++ b/drivers/gpu/drm/i915/intel_psr.c > > > > @@ -125,6 +125,43 @@ void intel_psr_irq_control(struct > > > > drm_i915_private *dev_priv, bool debug) > > > > I915_WRITE(EDP_PSR_IMR, ~mask); > > > > } > > > > > > > > +static void psr_event_print(u32 val, bool psr2_enabled) > > > > +{ > > > > + DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val); > > > > + if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE) > > > > + DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n"); > > > > + if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled) > > > > > > I'm not sure if we should add this extra psr2_enable check here. > > > Probably better to just print the bit reference and move one. > > > > > > otherwise we might have the risk of having a message > > > "PSR exit events:" > > > followed by nothing below it > > > > I'm okay with this too but I think is not necessary have 'PSR2 > > disabled' printed everytime when PSR is enabled. > > oh! I see your point now... > Makes sense to minimize this noise, and let's hope we > don't face the empty case. > > > > > > > > > > + DRM_DEBUG_KMS("\tPSR2 disabled\n"); > > > > + if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN) > > > > + DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n"); > > > > + if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN) > > > > + DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n"); > > > > + if (val & PSR_EVENT_GRAPHICS_RESET) > > > > + DRM_DEBUG_KMS("\tGraphics reset\n"); > > > > + if (val & PSR_EVENT_PCH_INTERRUPT) > > > > + DRM_DEBUG_KMS("\tPCH interrupt\n"); > > > > + if (val & PSR_EVENT_MEMORY_UP) > > > > + DRM_DEBUG_KMS("\tMemory up\n"); > > > > + if (val & PSR_EVENT_FRONT_BUFFER_MODIFY) > > > > + DRM_DEBUG_KMS("\tFront buffer modification\n"); > > > > + if (val & PSR_EVENT_WD_TIMER_EXPIRE) > > > > + DRM_DEBUG_KMS("\tPSR watchdog timer expired\n"); > > > > + if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE) > > > > + DRM_DEBUG_KMS("\tPIPE registers updated\n"); > > > > + if (val & PSR_EVENT_REGISTER_UPDATE) > > > > + DRM_DEBUG_KMS("\tRegister updated\n"); > > > > + if (val & PSR_EVENT_HDCP_ENABLE) > > > > + DRM_DEBUG_KMS("\tHDCP enabled\n"); > > > > + if (val & PSR_EVENT_KVMR_SESSION_ENABLE) > > > > + DRM_DEBUG_KMS("\tKVMR session enabled\n"); > > > > + if (val & PSR_EVENT_VBI_ENABLE) > > > > + DRM_DEBUG_KMS("\tVBI enabled\n"); > > > > + if (val & PSR_EVENT_LPSP_MODE_EXIT) > > > > + DRM_DEBUG_KMS("\tLPSP mode exited\n"); > > > > + if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled) > > > > + DRM_DEBUG_KMS("\tPSR disabled\n"); > > > > +} > > > > + > > > > void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 > > > > psr_iir) > > > > { > > > > u32 transcoders = BIT(TRANSCODER_EDP); > > > > @@ -152,6 +189,14 @@ void intel_psr_irq_handler(struct > > > > drm_i915_private *dev_priv, u32 psr_iir) > > > > dev_priv->psr.last_exit = time_ns; > > > > DRM_DEBUG_KMS("[transcoder %s] PSR exit > > > > completed\n", > > > > transcoder_name(cpu_transcod > > > > er)); > > > > + > > > > + if (INTEL_GEN(dev_priv) >= 9) { > > > > + u32 val = > > > > I915_READ(PSR_EVENT(cpu_transcoder)); > > > > + bool psr2_enabled = dev_priv- > > > > >psr.psr2_enabled; > > > > + > > > > + I915_WRITE(PSR_EVENT(cpu_transcode > > > > r), val); > > > > > > writing the value back really clears it? > > > or should we clear by writting 0 to it? > > > > Yes, it is cleared by writing 1 to the bit. > > cool, thanks for the confirmation > > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > (as soon as CI give okay I will push them) pushed to dinq, thanks > > > > > > > > > > + psr_event_print(val, > > > > psr2_enabled); > > > > + } > > > > } > > > > } > > > > } > > > > -- > > > > 2.17.0 > > > > > _______________________________________________ > 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] 10+ messages in thread
* [PATCH 3/4] drm/i915/debugfs: Print sink PSR status 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza 2018-04-25 21:23 ` [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit José Roberto de Souza @ 2018-04-25 21:23 ` José Roberto de Souza 2018-04-25 21:23 ` [PATCH 4/4] drm/i915/psr/cnl: Set y-coordinate as valid in SDP José Roberto de Souza ` (2 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: José Roberto de Souza @ 2018-04-25 21:23 UTC (permalink / raw) To: intel-gfx; +Cc: Rodrigo Vivi IGT tests could be improved with sink status, knowing for sure that hardware have activate or exit PSR. v3: Reading i915_edp_psr_status was causing PSR to exit but now with 'drm/i915/psr: Prevent PSR exit when a non-pipe related register is written' it is fixed. Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> --- drivers/gpu/drm/i915/i915_debugfs.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 1c88805d3354..cb1a804bf72e 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -2603,6 +2603,26 @@ static const char *psr2_live_status(u32 val) return "unknown"; } +static const char *psr_sink_status(u8 val) +{ + static const char * const sink_status[] = { + "inactive", + "transition to active, capture and display", + "active, display from RFB", + "active, capture and display on sink device timings", + "transition to inactive, capture and display, timing re-sync", + "reserved", + "reserved", + "sink internal error" + }; + + val &= DP_PSR_SINK_STATE_MASK; + if (val < ARRAY_SIZE(sink_status)) + return sink_status[val]; + + return "unknown"; +} + static int i915_edp_psr_status(struct seq_file *m, void *data) { struct drm_i915_private *dev_priv = node_to_i915(m->private); @@ -2684,6 +2704,15 @@ static int i915_edp_psr_status(struct seq_file *m, void *data) seq_printf(m, "EDP_PSR2_STATUS: %x [%s]\n", psr2, psr2_live_status(psr2)); } + + if (dev_priv->psr.enabled) { + struct drm_dp_aux *aux = &dev_priv->psr.enabled->aux; + u8 val; + + if (drm_dp_dpcd_readb(aux, DP_PSR_STATUS, &val) == 1) + seq_printf(m, "Sink PSR status: 0x%x [%s]\n", val, + psr_sink_status(val)); + } mutex_unlock(&dev_priv->psr.lock); if (READ_ONCE(dev_priv->psr.debug)) { -- 2.17.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] drm/i915/psr/cnl: Set y-coordinate as valid in SDP 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza 2018-04-25 21:23 ` [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit José Roberto de Souza 2018-04-25 21:23 ` [PATCH 3/4] drm/i915/debugfs: Print sink PSR status José Roberto de Souza @ 2018-04-25 21:23 ` José Roberto de Souza 2018-04-25 22:06 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written Patchwork 2018-04-26 2:42 ` ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 10+ messages in thread From: José Roberto de Souza @ 2018-04-25 21:23 UTC (permalink / raw) To: intel-gfx; +Cc: Rodrigo Vivi This was my bad, spec says that the name of this bit is 'Y-coordinate valid' but the values for it is: 0: Include Y-coordinate valid eDP1.4a 1: Do not include Y-coordinate valid eDP 1.4 So not setting it. BSpec: 7713 Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> --- drivers/gpu/drm/i915/intel_psr.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c index c8d5cdce544f..6233a322aac5 100644 --- a/drivers/gpu/drm/i915/intel_psr.c +++ b/drivers/gpu/drm/i915/intel_psr.c @@ -508,9 +508,8 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp) * mesh at all with our frontbuffer tracking. And the hw alone isn't * good enough. */ val |= EDP_PSR2_ENABLE | EDP_SU_TRACK_ENABLE; - if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) { - val |= EDP_Y_COORDINATE_VALID | EDP_Y_COORDINATE_ENABLE; - } + if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) + val |= EDP_Y_COORDINATE_ENABLE; val |= EDP_PSR2_FRAME_BEFORE_SU(dev_priv->psr.sink_sync_latency + 1); -- 2.17.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza ` (2 preceding siblings ...) 2018-04-25 21:23 ` [PATCH 4/4] drm/i915/psr/cnl: Set y-coordinate as valid in SDP José Roberto de Souza @ 2018-04-25 22:06 ` Patchwork 2018-04-26 2:42 ` ✓ Fi.CI.IGT: " Patchwork 4 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2018-04-25 22:06 UTC (permalink / raw) To: Souza, Jose; +Cc: intel-gfx == Series Details == Series: series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written URL : https://patchwork.freedesktop.org/series/42304/ State : success == Summary == = CI Bug Log - changes from CI_DRM_4099 -> Patchwork_8802 = == Summary - SUCCESS == No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/42304/revisions/1/mbox/ == Known issues == Here are the changes found in Patchwork_8802 that come from known issues: === IGT changes === ==== Possible fixes ==== igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b: fi-snb-2520m: INCOMPLETE (fdo#103713) -> PASS fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713 == Participating hosts (38 -> 35) == Missing (3): fi-ilk-m540 fi-skl-6700hq fi-pnv-d510 == Build changes == * Linux: CI_DRM_4099 -> Patchwork_8802 CI_DRM_4099: 92a39635c2eca4dfe1c8c1673e0c606a720746e5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4449: 0350f0e7f6a0e07281445fc3082aa70419f4aac7 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_8802: cd94e9f8e4937f47d54a2eb6e821020f388b5cdf @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4449: ad8992d3fb27fd604b9ab15e7963c42421ced85c @ git://anongit.freedesktop.org/piglit == Linux commits == cd94e9f8e493 drm/i915/psr/cnl: Set y-coordinate as valid in SDP 48dc63739f2f drm/i915/debugfs: Print sink PSR status 02bba1aa3a2b drm/i915/psr/skl+: Print information about what caused a PSR exit 632045d33482 drm/i915/psr: Prevent PSR exit when a non-pipe related register is written == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_8802/issues.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✓ Fi.CI.IGT: success for series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza ` (3 preceding siblings ...) 2018-04-25 22:06 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written Patchwork @ 2018-04-26 2:42 ` Patchwork 4 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2018-04-26 2:42 UTC (permalink / raw) To: Souza, Jose; +Cc: intel-gfx == Series Details == Series: series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written URL : https://patchwork.freedesktop.org/series/42304/ State : success == Summary == = CI Bug Log - changes from CI_DRM_4099_full -> Patchwork_8802_full = == Summary - WARNING == Minor unknown changes coming with Patchwork_8802_full need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_8802_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. External URL: https://patchwork.freedesktop.org/api/1.0/series/42304/revisions/1/mbox/ == Possible new issues == Here are the unknown changes that may have been introduced in Patchwork_8802_full: === IGT changes === ==== Warnings ==== igt@gem_exec_schedule@deep-bsd1: shard-kbl: PASS -> SKIP +1 igt@gem_mocs_settings@mocs-rc6-vebox: shard-kbl: SKIP -> PASS +2 == Known issues == Here are the changes found in Patchwork_8802_full that come from known issues: === IGT changes === ==== Issues hit ==== igt@gem_workarounds@suspend-resume-context: shard-apl: PASS -> FAIL (fdo#103375) igt@kms_cursor_legacy@cursor-vs-flip-toggle: shard-hsw: PASS -> FAIL (fdo#103355) igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible: shard-hsw: PASS -> FAIL (fdo#103928) shard-apl: PASS -> FAIL (fdo#100368) igt@kms_flip@wf_vblank-ts-check-interruptible: shard-glk: PASS -> FAIL (fdo#100368) igt@kms_rotation_crc@primary-rotation-90: shard-apl: PASS -> FAIL (fdo#103925) igt@kms_rotation_crc@sprite-rotation-90-pos-100-0: shard-apl: PASS -> DMESG-WARN (fdo#105127) ==== Possible fixes ==== igt@kms_atomic@plane_invalid_params: shard-kbl: DMESG-WARN -> PASS igt@kms_flip@2x-flip-vs-wf_vblank: shard-hsw: FAIL (fdo#100368) -> PASS igt@kms_flip@flip-vs-expired-vblank: shard-hsw: FAIL (fdo#105707) -> PASS igt@kms_flip@flip-vs-expired-vblank-interruptible: shard-glk: FAIL (fdo#105363) -> PASS igt@kms_flip@flip-vs-wf_vblank-interruptible: shard-glk: FAIL (fdo#100368) -> PASS igt@kms_sysfs_edid_timing: shard-apl: WARN (fdo#100047) -> PASS igt@kms_vblank@pipe-c-accuracy-idle: shard-hsw: FAIL (fdo#102583) -> PASS igt@perf@buffer-fill: shard-kbl: INCOMPLETE (fdo#103665) -> PASS fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047 fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368 fdo#102583 https://bugs.freedesktop.org/show_bug.cgi?id=102583 fdo#103355 https://bugs.freedesktop.org/show_bug.cgi?id=103355 fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375 fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665 fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925 fdo#103928 https://bugs.freedesktop.org/show_bug.cgi?id=103928 fdo#105127 https://bugs.freedesktop.org/show_bug.cgi?id=105127 fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363 fdo#105707 https://bugs.freedesktop.org/show_bug.cgi?id=105707 == Participating hosts (6 -> 5) == Missing (1): shard-glkb == Build changes == * Linux: CI_DRM_4099 -> Patchwork_8802 CI_DRM_4099: 92a39635c2eca4dfe1c8c1673e0c606a720746e5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4449: 0350f0e7f6a0e07281445fc3082aa70419f4aac7 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_8802: cd94e9f8e4937f47d54a2eb6e821020f388b5cdf @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4449: ad8992d3fb27fd604b9ab15e7963c42421ced85c @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_8802/shards.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-04-26 22:37 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-04-25 21:23 [PATCH 1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written José Roberto de Souza 2018-04-25 21:23 ` [PATCH 2/4] drm/i915/psr/skl+: Print information about what caused a PSR exit José Roberto de Souza 2018-04-25 21:40 ` Rodrigo Vivi 2018-04-25 21:47 ` Souza, Jose 2018-04-25 21:53 ` Rodrigo Vivi 2018-04-26 22:37 ` Rodrigo Vivi 2018-04-25 21:23 ` [PATCH 3/4] drm/i915/debugfs: Print sink PSR status José Roberto de Souza 2018-04-25 21:23 ` [PATCH 4/4] drm/i915/psr/cnl: Set y-coordinate as valid in SDP José Roberto de Souza 2018-04-25 22:06 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/psr: Prevent PSR exit when a non-pipe related register is written Patchwork 2018-04-26 2:42 ` ✓ Fi.CI.IGT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.