From aec071d698b89191fc9ec4c7f0fab0bbf634cdb4 Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Fri, 1 Apr 2022 17:01:09 +0100 Subject: [PATCH] drm/tegra: Revert workaround for freeing BOs Commit 72c23bd789f4 ("drm/tegra: Ensure BOs are not freed before display is updated") added a workaround to fix a race condition when freeing BOs. A proper fix has been created for the BO caching for host1x that has been submitted upstream and so revert commit 72c23bd789f4. Bug 3556250 Change-Id: Ie47e734393770a1390acff20ee133576a335f38f Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2693868 Reviewed-by: Mikko Perttunen Reviewed-by: svc_kernel_abi GVS: Gerrit_Virtual_Submit --- drivers/gpu/drm/tegra/dc.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 559f4850..11b57c05 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -2293,8 +2293,6 @@ static void tegra_crtc_atomic_begin(struct drm_crtc *crtc, crtc->state->event = NULL; } - - tegra_dc_disable_vblank(crtc); } static void tegra_crtc_atomic_flush(struct drm_crtc *crtc, @@ -2321,8 +2319,6 @@ static void tegra_crtc_atomic_flush(struct drm_crtc *crtc, value = dc_state->planes | GENERAL_ACT_REQ; tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL); value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); - - tegra_dc_enable_vblank(crtc); } static bool tegra_plane_is_cursor(const struct drm_plane_state *state) @@ -2539,10 +2535,9 @@ static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { static irqreturn_t tegra_dc_irq(int irq, void *data) { struct tegra_dc *dc = data; - u32 status, value, mask; + unsigned long status; - mask = tegra_dc_readl(dc, DC_CMD_INT_MASK); - status = tegra_dc_readl(dc, DC_CMD_INT_STATUS) & mask; + status = tegra_dc_readl(dc, DC_CMD_INT_STATUS); tegra_dc_writel(dc, status, DC_CMD_INT_STATUS); if (status & FRAME_END_INT) { @@ -2557,9 +2552,7 @@ static irqreturn_t tegra_dc_irq(int irq, void *data) /* dev_dbg(dc->dev, "%s(): vertical blank\n", __func__); */ - value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); - if (!value) - drm_crtc_handle_vblank(&dc->base); + drm_crtc_handle_vblank(&dc->base); dc->stats.vblank_total++; dc->stats.vblank++; }