Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1725208ybz; Sat, 18 Apr 2020 07:13:53 -0700 (PDT) X-Google-Smtp-Source: APiQypKu3t1llxmqaWJl153qjXUQhR1YbLY3Rbz8Lkq9YLuSd3pJuDs0sJc7zK7WwMB76yPTRaTO X-Received: by 2002:a17:906:5608:: with SMTP id f8mr8266383ejq.190.1587219233504; Sat, 18 Apr 2020 07:13:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587219233; cv=none; d=google.com; s=arc-20160816; b=FfdSD9/dvuv4MlmMTlQzPYNaZMtStQ3xx+Dm+4YgNRkTfePQaStIcrj6KGL6ES+VVh H2SBD9qrkDu9Nq8jEYk3VkkjdKIJRgjkrL0euCf6NsFY1fGmX8suzIf1XWs+bhBV0imG glSm74ef7M7f9fPczERGeOBWKAxIiEN0Qxb4Ns6SoEujTyD0U6W9OWXFTQcTgCaOhLIr nt91IIxG03a6CkyLt0jhcxmLsG2PdGPbMXEYfidpgNXYiFq0cjaYtKxKIW8BoMZoVJVC HoJmqy6upcKAq//mVCl2bdkUQbccjwqKKLQHFYV2iUNslKTmQLuD4Jd5kQ92VtQ9/pkM uQ+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=x9waxQs9KPhx5zR+3kfLSiQaY1mRUjYxfTg4TuDah74=; b=NL2aqpSrmy6XlEsVAb7/HELH8ohP8rbEOBmET1CKBDP0u+SObkZWRmK0+sbA8ltZQc YsNKChO26k0KN4WQu8chZ3IQ9FEfoPpavJ+TeMJEnkQcDUsi2jhHOHDOYTfLlbAeYHqJ IcCQjZ7pwDs/Ry3g3RLYeKj14t4P26i0tgsfvlIjuNDy/H4J13653hM/Svebmk1ti4Er Hz5Pi5X68hof+yv0g4s+zJqHPnNZiYYrL4bc9yHgo1g8W1rnzt5uAfm+ixQI/n9AKojT cta2hvv1Qkg5nq9qgWiFLb1qmUM3Cmx78JPem1Rslg47ZTBNCYY+t/szp0PM7dU5IcDG XCEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="DhmwXi/O"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v1si5059011edr.198.2020.04.18.07.13.30; Sat, 18 Apr 2020 07:13:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="DhmwXi/O"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728057AbgDROLP (ORCPT + 99 others); Sat, 18 Apr 2020 10:11:15 -0400 Received: from mail.kernel.org ([198.145.29.99]:38886 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727897AbgDROKg (ORCPT ); Sat, 18 Apr 2020 10:10:36 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B7F6C22250; Sat, 18 Apr 2020 14:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587219035; bh=Glbhs5XKHS8JbLZoCXE0HbUu4H1R3R/0vs0CNEX07Ik=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DhmwXi/OJ2qCSKE0gaduOHArotaJ8kDGjdJnIPGpwmxmYc2aprjAKKQmUt0iY/SMk zEAwPDgP1HNezlapW3TVdhLejj2qhFSiVa00DOKYzQGako8imH4fqyXiv28ofMbKP1 w+PrskHJRR7FwPc51jrgnYxqBRvd4/oWwTfXIHXc= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Yongqiang Sun , Tony Cheng , Rodrigo Siqueira , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.5 69/75] drm/amd/display: Not doing optimize bandwidth if flip pending. Date: Sat, 18 Apr 2020 10:09:04 -0400 Message-Id: <20200418140910.8280-69-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200418140910.8280-1-sashal@kernel.org> References: <20200418140910.8280-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yongqiang Sun [ Upstream commit 9941b8129030c9202aaf39114477a0e58c0d6ffc ] [Why] In some scenario like 1366x768 VSR enabled connected with a 4K monitor and playing 4K video in clone mode, underflow will be observed due to decrease dppclk when previouse surface scan isn't finished [How] In this use case, surface flip is switching between 4K and 1366x768, 1366x768 needs smaller dppclk, and when decrease the clk and previous surface scan is for 4K and scan isn't done, underflow will happen. Not doing optimize bandwidth in case of flip pending. Signed-off-by: Yongqiang Sun Reviewed-by: Tony Cheng Acked-by: Rodrigo Siqueira Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/display/dc/core/dc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index d25e0a937bf57..870e3903f02b9 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1281,6 +1281,26 @@ bool dc_commit_state(struct dc *dc, struct dc_state *context) return (result == DC_OK); } +static bool is_flip_pending_in_pipes(struct dc *dc, struct dc_state *context) +{ + int i; + struct pipe_ctx *pipe; + + for (i = 0; i < MAX_PIPES; i++) { + pipe = &context->res_ctx.pipe_ctx[i]; + + if (!pipe->plane_state) + continue; + + /* Must set to false to start with, due to OR in update function */ + pipe->plane_state->status.is_flip_pending = false; + dc->hwss.update_pending_status(pipe); + if (pipe->plane_state->status.is_flip_pending) + return true; + } + return false; +} + bool dc_post_update_surfaces_to_stream(struct dc *dc) { int i; @@ -1291,6 +1311,9 @@ bool dc_post_update_surfaces_to_stream(struct dc *dc) post_surface_trace(dc); + if (is_flip_pending_in_pipes(dc, context)) + return true; + for (i = 0; i < dc->res_pool->pipe_count; i++) if (context->res_ctx.pipe_ctx[i].stream == NULL || context->res_ctx.pipe_ctx[i].plane_state == NULL) { -- 2.20.1