diff mbox

[v2,6/8] drm/arm/malidp: Enable/disable the scaling engine interrupts with memory writeback

Message ID 1524495051-3891-7-git-send-email-ayan.halder@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ayan Halder April 23, 2018, 2:50 p.m. UTC
Scaling engine interrupts need to be enabled/disabled as and when memwrite
is enabled and disabled. The reason being scaling engine interrupts are
used only by the memory writeout layer.

This patch depends on:
https://lkml.org/lkml/2017/5/15/695

Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>

---
Changes in v2:-
- Removed the change id and modified the commit message
---
 drivers/gpu/drm/arm/malidp_hw.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Liviu Dudau April 23, 2018, 3:36 p.m. UTC | #1
On Mon, Apr 23, 2018 at 03:50:49PM +0100, Ayan Kumar Halder wrote:
> Scaling engine interrupts need to be enabled/disabled as and when memwrite
> is enabled and disabled. The reason being scaling engine interrupts are
> used only by the memory writeout layer.
> 
> This patch depends on:
> https://lkml.org/lkml/2017/5/15/695
> 
> Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
> 
> ---
> Changes in v2:-
> - Removed the change id and modified the commit message
> ---
>  drivers/gpu/drm/arm/malidp_hw.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c
> index f5633bc..90d76e4 100644
> --- a/drivers/gpu/drm/arm/malidp_hw.c
> +++ b/drivers/gpu/drm/arm/malidp_hw.c
> @@ -621,12 +621,14 @@ static int malidp550_enable_memwrite(struct malidp_hw_device *hwdev,
>  	malidp_hw_setbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
>  			  MALIDP550_SE_CONTROL);
>  
> +	malidp_se_irq_hw_init(hwdev);
>  	return 0;
>  }
>  
>  static void malidp550_disable_memwrite(struct malidp_hw_device *hwdev)
>  {
>  	u32 base = malidp_get_block_base(hwdev, MALIDP_DE_BLOCK);
> +	malidp_se_irq_fini(hwdev);
>  	malidp_hw_clearbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
>  			    MALIDP550_SE_CONTROL);
>  	malidp_hw_clearbits(hwdev, MALIDP_SCALE_ENGINE_EN, base + MALIDP_DE_DISPLAY_FUNC);

We now know that this patch is broken, because it disables interrupts
for the writeback after a previous commit has enabled them but before
the writeback engine has finished writing, so the better place for
enabling and disabling the SE IRQs is in the malidp_pm_{suspend,resume}
functions, not here.

Only for this patch: NACK.

Best regards,
Liviu

> -- 
> 2.7.4
>
Ayan Halder April 24, 2018, 10:11 a.m. UTC | #2
Hi Liviu,

On Mon, Apr 23, 2018 at 04:36:47PM +0100, Liviu Dudau wrote:
> On Mon, Apr 23, 2018 at 03:50:49PM +0100, Ayan Kumar Halder wrote:
> > Scaling engine interrupts need to be enabled/disabled as and when memwrite
> > is enabled and disabled. The reason being scaling engine interrupts are
> > used only by the memory writeout layer.
> > 
> > This patch depends on:
> > https://lkml.org/lkml/2017/5/15/695
> > 
> > Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
> > 
> > ---
> > Changes in v2:-
> > - Removed the change id and modified the commit message
> > ---
> >  drivers/gpu/drm/arm/malidp_hw.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c
> > index f5633bc..90d76e4 100644
> > --- a/drivers/gpu/drm/arm/malidp_hw.c
> > +++ b/drivers/gpu/drm/arm/malidp_hw.c
> > @@ -621,12 +621,14 @@ static int malidp550_enable_memwrite(struct malidp_hw_device *hwdev,
> >  	malidp_hw_setbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
> >  			  MALIDP550_SE_CONTROL);
> >  
> > +	malidp_se_irq_hw_init(hwdev);
> >  	return 0;
> >  }
> >  
> >  static void malidp550_disable_memwrite(struct malidp_hw_device *hwdev)
> >  {
> >  	u32 base = malidp_get_block_base(hwdev, MALIDP_DE_BLOCK);
> > +	malidp_se_irq_fini(hwdev);
> >  	malidp_hw_clearbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
> >  			    MALIDP550_SE_CONTROL);
> >  	malidp_hw_clearbits(hwdev, MALIDP_SCALE_ENGINE_EN, base + MALIDP_DE_DISPLAY_FUNC);
> 
> We now know that this patch is broken, because it disables interrupts
> for the writeback after a previous commit has enabled them but before
> the writeback engine has finished writing, so the better place for
> enabling and disabling the SE IRQs is in the malidp_pm_{suspend,resume}
> functions, not here.
>
Sorry, I missed this issue. I will send an updated v3 patch for this
only.

Thanks,
Ayan Kumar Halder
> Only for this patch: NACK.
> 
> Best regards,
> Liviu
> 
> > -- 
> > 2.7.4
> > 
> 
> -- 
> ====================
> | I would like to |
> | fix the world,  |
> | but they're not |
> | giving me the   |
>  \ source code!  /
>   ---------------
>     ??\_(???)_/??
diff mbox

Patch

diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c
index f5633bc..90d76e4 100644
--- a/drivers/gpu/drm/arm/malidp_hw.c
+++ b/drivers/gpu/drm/arm/malidp_hw.c
@@ -621,12 +621,14 @@  static int malidp550_enable_memwrite(struct malidp_hw_device *hwdev,
 	malidp_hw_setbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
 			  MALIDP550_SE_CONTROL);
 
+	malidp_se_irq_hw_init(hwdev);
 	return 0;
 }
 
 static void malidp550_disable_memwrite(struct malidp_hw_device *hwdev)
 {
 	u32 base = malidp_get_block_base(hwdev, MALIDP_DE_BLOCK);
+	malidp_se_irq_fini(hwdev);
 	malidp_hw_clearbits(hwdev, MALIDP550_SE_MEMWRITE_ONESHOT | MALIDP_SE_MEMWRITE_EN,
 			    MALIDP550_SE_CONTROL);
 	malidp_hw_clearbits(hwdev, MALIDP_SCALE_ENGINE_EN, base + MALIDP_DE_DISPLAY_FUNC);