mbox series

[v4,0/4] drm/omap: dmm_tiler: fixes and workaround for errata i878

Message ID 20180926091130.5379-1-peter.ujfalusi@ti.com (mailing list archive)
Headers show
Series drm/omap: dmm_tiler: fixes and workaround for errata i878 | expand

Message

Peter Ujfalusi Sept. 26, 2018, 9:11 a.m. UTC
Hi,

Hi,

Changes since v3:
- Included two fixes for dmm_tiler:
 - fix for memory barrier bug from Tomi
 - correct the ordering of the interrupt request
- dropped the new compatible as the i878 is affecting only dra7 family of SoCs,
  the DMM itself is the same.

Changes since v2:
- Use threaded irq when the i878 workaround is used to avoid unlikely system
  freeze: dma_sync_wait() have 5 second timeout
- Use mutex instead of spinlock as wa_lock
- use the dmaengine_prep_dma_memcpy() wrapper
- do not explicitly call dma_async_issue_pending() as it is done as part of
  dma_sync_wait()
- Use define for the DMM register size (4 bytes)
- Cleanup patch for the remove path: no need to check if the irq is valid. The
  driver would not probe w/o valid interrupt.

Changes since v1:
- rebased on drm-next
- comments for the v1 (https://patchwork.kernel.org/patch/8358741/) addressed
 - u32 -> dma_addr_t when applicable
 - additional wmb()/rmb() added to make sure we have correct behavior

Errata i878 says that MPU should not be used to access RAM and DMM at
the same time. As it's not possible to prevent MPU accessing RAM, we
need to access DMM via a proxy.

Regards,
Peter
---
Peter Ujfalusi (2):
  drm/omap: dmm_tiler: No need to check if irq is valid in
    omap_dmm_remove
  drm/omap: dmm_tiler: Fix interrupt request/free sequence during
    probe/remove

Tomi Valkeinen (2):
  drm/omap: fix memory barrier bug in DMM driver
  drm/omap: partial workaround for DRA7xx DMM errata i878

 drivers/gpu/drm/omapdrm/omap_dmm_priv.h  |   7 +
 drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 201 ++++++++++++++++++++---
 2 files changed, 186 insertions(+), 22 deletions(-)

Comments

Tomi Valkeinen Sept. 26, 2018, 11:10 a.m. UTC | #1
On 26/09/18 12:11, Peter Ujfalusi wrote:
> Hi,
> 
> Hi,
> 
> Changes since v3:
> - Included two fixes for dmm_tiler:
>  - fix for memory barrier bug from Tomi
>  - correct the ordering of the interrupt request
> - dropped the new compatible as the i878 is affecting only dra7 family of SoCs,
>   the DMM itself is the same.
> 
> Changes since v2:
> - Use threaded irq when the i878 workaround is used to avoid unlikely system
>   freeze: dma_sync_wait() have 5 second timeout
> - Use mutex instead of spinlock as wa_lock
> - use the dmaengine_prep_dma_memcpy() wrapper
> - do not explicitly call dma_async_issue_pending() as it is done as part of
>   dma_sync_wait()
> - Use define for the DMM register size (4 bytes)
> - Cleanup patch for the remove path: no need to check if the irq is valid. The
>   driver would not probe w/o valid interrupt.
> 
> Changes since v1:
> - rebased on drm-next
> - comments for the v1 (https://patchwork.kernel.org/patch/8358741/) addressed
>  - u32 -> dma_addr_t when applicable
>  - additional wmb()/rmb() added to make sure we have correct behavior
> 
> Errata i878 says that MPU should not be used to access RAM and DMM at
> the same time. As it's not possible to prevent MPU accessing RAM, we
> need to access DMM via a proxy.
> 
> Regards,
> Peter
> ---
> Peter Ujfalusi (2):
>   drm/omap: dmm_tiler: No need to check if irq is valid in
>     omap_dmm_remove
>   drm/omap: dmm_tiler: Fix interrupt request/free sequence during
>     probe/remove
> 
> Tomi Valkeinen (2):
>   drm/omap: fix memory barrier bug in DMM driver
>   drm/omap: partial workaround for DRA7xx DMM errata i878
> 
>  drivers/gpu/drm/omapdrm/omap_dmm_priv.h  |   7 +
>  drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 201 ++++++++++++++++++++---
>  2 files changed, 186 insertions(+), 22 deletions(-)
> 

Thanks, looks good to me. Applied.

 Tomi