Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1632913ybv; Fri, 21 Feb 2020 00:40:12 -0800 (PST) X-Google-Smtp-Source: APXvYqxX84isRHy9i3GydUYi3mWKK+fv94oUvtB8leq18h0pCiKENQEj7lXRzpd1RyW3mPNExQW3 X-Received: by 2002:aca:f05:: with SMTP id 5mr1084955oip.140.1582274412043; Fri, 21 Feb 2020 00:40:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582274412; cv=none; d=google.com; s=arc-20160816; b=T1ukdjUgyYxu70WGWzOn055aQ7+DeySrVh9+RbRhs5UpvkrFBf6RXWeZ+XC5S/5D20 6dhHbR9eQNKaX3P0zXMEogzm3Xt4UDGFWYw08I6nozXDidTUn+bi0T2PL0WfXeLuwX9h 4mHNG+kKyRS/D4vU20IAMSd/cE/vQQNMMczLZA8G4Jzt5vb9uKxm4WWed8WriJbnupO4 09gZOoK9TeDXoyYY9JfxKW4c0II1i6FtauEjRYYxa971upDJrOuDCqGeMhMwTlZJN12o H+eAjjh5xNVbIxEU0IRmaKZSZG62vc+K1J9TQ1fDlLd/2lbrTM7ocjnsCBl7JdcJ/Nii 4Qdw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=MMse9D2pFATTJilscHAiaIEDFvK41d4Ew+s6oHvGQsk=; b=FlLlFsZzHDfW7xylipn2Lmq0XLrqBmdDWs/mcHUJEp+leC+XpLMoQTocmNQpTdrP79 u7R2aJ4LhV3truxeD+a1ppeTALCehq7ZerNpl7+sA3C5pyz9IDtx64zsfJlU2i2CkNtW 4r37iRwxLUZRWCjWwx4hbMX1RJg8zpUqbAf9SYTCEdcGaFXHxOCFBpr4eotAbtEPxlDQ 18ek5L6HqY9ToI8OFwcbdTHpY72UpvDYSA0y4YaBYI+rb0CRr4MPE81PCvGxUiswWSJG d9ykBMSN8ndAHgFWM3YGat2Olv2Dik6qu9TQKZwobrvVywbO7swEEInGuEE8J6jVkavp 6V4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=XhmlP9rO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w2si1140704otq.31.2020.02.21.00.40.00; Fri, 21 Feb 2020 00:40:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=XhmlP9rO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731822AbgBUIjW (ORCPT + 99 others); Fri, 21 Feb 2020 03:39:22 -0500 Received: from mail.kernel.org ([198.145.29.99]:33494 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731166AbgBUIBM (ORCPT ); Fri, 21 Feb 2020 03:01:12 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 40A6D2073A; Fri, 21 Feb 2020 08:01:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582272071; bh=H0djIpIgCKD0Tf20YOgU5LkJ2ifFfJbbpxqtLDzx5TY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XhmlP9rOrzRabEaY8SH4QiI/uFSRCm0DSvLHmgAEnhyek0iZhxv6s7UD99Q2w+spq U5oJX+BFbJRzzp5WZzvJB8KMahJIsKJxqNiBe7HaKuyojKKeMt3NGd/W5EH+oDYApI VP1mODx4JXc2HR/7AH7ZeYs/jWhWopx9GPv6X+I8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nicholas Kazlauskas , Alex Deucher , Sasha Levin Subject: [PATCH 5.5 398/399] drm/amdgpu/display: handle multiple numbers of fclks in dcn_calcs.c (v2) Date: Fri, 21 Feb 2020 08:42:03 +0100 Message-Id: <20200221072438.501365877@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200221072402.315346745@linuxfoundation.org> References: <20200221072402.315346745@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alex Deucher [ Upstream commit c37243579d6c881c575dcfb54cf31c9ded88f946 ] We might get different numbers of clocks from powerplay depending on what the OEM has populated. v2: add assert for at least one level Bug: https://gitlab.freedesktop.org/drm/amd/issues/963 Reviewed-by: Nicholas Kazlauskas Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- .../gpu/drm/amd/display/dc/calcs/dcn_calcs.c | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c index 9b2cb57bf2bad..c9a241fe46cf4 100644 --- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c +++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c @@ -1438,6 +1438,7 @@ void dcn_bw_update_from_pplib(struct dc *dc) struct dc_context *ctx = dc->ctx; struct dm_pp_clock_levels_with_voltage fclks = {0}, dcfclks = {0}; bool res; + unsigned vmin0p65_idx, vmid0p72_idx, vnom0p8_idx, vmax0p9_idx; /* TODO: This is not the proper way to obtain fabric_and_dram_bandwidth, should be min(fclk, memclk) */ res = dm_pp_get_clock_levels_by_type_with_voltage( @@ -1449,17 +1450,28 @@ void dcn_bw_update_from_pplib(struct dc *dc) res = verify_clock_values(&fclks); if (res) { - ASSERT(fclks.num_levels >= 3); - dc->dcn_soc->fabric_and_dram_bandwidth_vmin0p65 = 32 * (fclks.data[0].clocks_in_khz / 1000.0) / 1000.0; - dc->dcn_soc->fabric_and_dram_bandwidth_vmid0p72 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels - (fclks.num_levels > 2 ? 3 : 2)].clocks_in_khz / 1000.0) - * ddr4_dram_factor_single_Channel / 1000.0; - dc->dcn_soc->fabric_and_dram_bandwidth_vnom0p8 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels - 2].clocks_in_khz / 1000.0) - * ddr4_dram_factor_single_Channel / 1000.0; - dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels - 1].clocks_in_khz / 1000.0) - * ddr4_dram_factor_single_Channel / 1000.0; + ASSERT(fclks.num_levels); + + vmin0p65_idx = 0; + vmid0p72_idx = fclks.num_levels - + (fclks.num_levels > 2 ? 3 : (fclks.num_levels > 1 ? 2 : 1)); + vnom0p8_idx = fclks.num_levels - (fclks.num_levels > 1 ? 2 : 1); + vmax0p9_idx = fclks.num_levels - 1; + + dc->dcn_soc->fabric_and_dram_bandwidth_vmin0p65 = + 32 * (fclks.data[vmin0p65_idx].clocks_in_khz / 1000.0) / 1000.0; + dc->dcn_soc->fabric_and_dram_bandwidth_vmid0p72 = + dc->dcn_soc->number_of_channels * + (fclks.data[vmid0p72_idx].clocks_in_khz / 1000.0) + * ddr4_dram_factor_single_Channel / 1000.0; + dc->dcn_soc->fabric_and_dram_bandwidth_vnom0p8 = + dc->dcn_soc->number_of_channels * + (fclks.data[vnom0p8_idx].clocks_in_khz / 1000.0) + * ddr4_dram_factor_single_Channel / 1000.0; + dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = + dc->dcn_soc->number_of_channels * + (fclks.data[vmax0p9_idx].clocks_in_khz / 1000.0) + * ddr4_dram_factor_single_Channel / 1000.0; } else BREAK_TO_DEBUGGER(); -- 2.20.1