Hi,
Here is a fourth iteration of the VC4 load tracking series, which was initially developed by Boris Brezillon and that I have now taken over.
This new iteration takes in account comments from v3 and comes with a new approach for avoiding underrun reports when reconfiguring the pipeline. It is now based on detection instead of delaying the underrun interrupt unmasking.
It can be tested with a dedicated IGT GPU Tools series: VC4 load tracker testing
Changes since v4: * Unmasked underrun in vc4_crtc_handle_page_flip instead of the previous workaround for detecting out-of-sync display lists causing underruns; * Added comments where it felt relevant; * Made underrun masking/unmasking per-channel to avoid race conditions resulting in unwanted masking/unmasking; * Added a check for unmasked interrupt before acting upon it; * Disabled shortline/underrun interrupts at initial config time; * Added collected Reviewed-by tags.
Changes since v3: * Returned IRQ_NONE for short line interrupt to avoid storm; * Made register definitions with per-channel offsets more direct; * cleaned all IRQ fields instead of writing back the status bit as advised by docs; * Reworked first commit's message; * Removed in-commit changelogs with inconsistent revision numbers; * Removed explicit wait for sync before unmasking underrun interrupt; * Checked that the display lists are synced before reporting underrun;
Cheers,
Paul
Boris Brezillon (2): drm/vc4: Report HVS underrun errors drm/vc4: Add a load tracker to prevent HVS underflow errors
Paul Kocialkowski (1): drm/vc4: Add a debugfs entry to disable/enable the load tracker
drivers/gpu/drm/vc4/vc4_crtc.c | 8 ++ drivers/gpu/drm/vc4/vc4_debugfs.c | 10 +++ drivers/gpu/drm/vc4/vc4_drv.c | 1 + drivers/gpu/drm/vc4/vc4_drv.h | 24 ++++++ drivers/gpu/drm/vc4/vc4_hvs.c | 95 +++++++++++++++++++++++ drivers/gpu/drm/vc4/vc4_kms.c | 122 +++++++++++++++++++++++++++++- drivers/gpu/drm/vc4/vc4_plane.c | 57 ++++++++++++++ drivers/gpu/drm/vc4/vc4_regs.h | 51 ++++--------- 8 files changed, 332 insertions(+), 36 deletions(-)