Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4572390pxv; Tue, 6 Jul 2021 04:22:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxooFbGZw6ezHHcpOho8VQw2qhHj00Rk5j8+gljjk3CQNHWLgvFzC7sETL/kEvKhqKVCscL X-Received: by 2002:aa7:c9d8:: with SMTP id i24mr22425745edt.79.1625570523262; Tue, 06 Jul 2021 04:22:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625570523; cv=none; d=google.com; s=arc-20160816; b=y2b5K2zwJ1c/09+NqqxU/0FTZqwmYepHIQxD7Cd8X92c5JRyVUpzkANeByE+WM0kdR pbe+g1Ukc7ohcEb4tz3RqPgbS7rokCrb7y+6domcC3od+hoeh6ETRp1+PgRiBpJKq3pl g4otL0E/lQ6Yzh4eYl/kj2kp8aKvpnUpRU2VmsjMIQndYND55SC/ehY4OTaKrtpnJJPJ qIJevZsAVC11lhfNL4F3CaYtDD1JBhZW9DM8/mqSdmyolsomJxl8MPcuolRDBVGYYMyF nhBFTypM6bCbrGb5oox8JZM4jFO2CKp39Zc9gIvZwIn/CdV0RZm1CI3RA54RF2p6Rn2l mmCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uu9aDPvAkCilWmeZDBLJgyjsP6lWjVvdChs/kyLLRFo=; b=AXQxV1mzfRsAQFLCcl+tU3Us3oFrMAVRH/eB+KzfdhRJgh1MDQ+EcoJEMdk7REOHAy mBFL4Isj5RNo23CS7VGtZhpPIR7D6M5v47jkqmIkFBPglSx7M7oCoRFHPCxtVc4q1cN7 +d9gAui46BgNTssi0nMbv5s0HSRh2fcPQFNO3T43r0N6QXZoenSa0rH4vk0MvI0aix81 SS92eRAB1UXv4LGaOUigvV+PEUoBGk+rk+iMX/XJA9HM+tqA/ounJ3QLyfjrExozR17i 8ZBpp1K7uKhFd027vMep3HaSTLHm9C2ostDOzUFCiK+GtqgR9ljp34sV+tW0bBfzJ9oN yQ2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PLqdfjP9; 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 k8si7660617eds.398.2021.07.06.04.21.40; Tue, 06 Jul 2021 04:22:03 -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=k20201202 header.b=PLqdfjP9; 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 S233163AbhGFLXY (ORCPT + 99 others); Tue, 6 Jul 2021 07:23:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:54930 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232165AbhGFLSy (ORCPT ); Tue, 6 Jul 2021 07:18:54 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BBADD61C4B; Tue, 6 Jul 2021 11:16:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625570175; bh=XG2alfW7p0og5n94F1WMOp1RHZFRNXwJcmw3c7IxHrQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PLqdfjP9fnyhFg2OR/NxP1seVgkdzyLurJBDljm7HxnWGPDcjcce+IpHEi/yvF2YS t6kE0ioTE/nsZ0iInn7QTTimOmR/c2zTGvFBQpCW2fr5T8WOG7VmtV18GHGH9644NE OLxjF6SFXehu7kcFFvrY/wqBLabhwrKY8S3k1VLJpxupPLJmSk2Ps7TipuQKxF19Jz 22B2bW0tFJUpGCcjAozvNdv2xy5QmvyEKFE7Sex+Y7Qmoask5xIjeR3mixgp0z44nM VeIGBtJ1+5OQRwH1DADapuzE3nW7k3Tq8Q6f39SLVaCjxXo0DNawOBjlY7PPUQCmZH 4ZKJ9tzLQ965Q== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Wesley Chalmers , Dmytro Laktyushkin , Stylon Wang , Daniel Wheeler , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.13 093/189] drm/amd/display: Fix off-by-one error in DML Date: Tue, 6 Jul 2021 07:12:33 -0400 Message-Id: <20210706111409.2058071-93-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210706111409.2058071-1-sashal@kernel.org> References: <20210706111409.2058071-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wesley Chalmers [ Upstream commit e4e3678260e9734f6f41b4325aac0b171833a618 ] [WHY] For DCN30 and later, there is no data in DML arrays indexed by state at index num_states. Signed-off-by: Wesley Chalmers Reviewed-by: Dmytro Laktyushkin Acked-by: Stylon Wang Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- .../amd/display/dc/dml/dcn30/display_mode_vba_30.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c index af7d57602b2c..db6bb7ea5316 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c @@ -2053,7 +2053,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman v->DISPCLKWithoutRamping, v->DISPCLKDPPCLKVCOSpeed); v->MaxDispclkRoundedToDFSGranularity = RoundToDFSGranularityDown( - v->soc.clock_limits[mode_lib->soc.num_states].dispclk_mhz, + v->soc.clock_limits[mode_lib->soc.num_states - 1].dispclk_mhz, v->DISPCLKDPPCLKVCOSpeed); if (v->DISPCLKWithoutRampingRoundedToDFSGranularity > v->MaxDispclkRoundedToDFSGranularity) { @@ -3958,20 +3958,20 @@ void dml30_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l for (k = 0; k <= v->NumberOfActivePlanes - 1; k++) { v->PlaneRequiredDISPCLKWithoutODMCombine = v->PixelClock[k] * (1.0 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) * (1.0 + v->DISPCLKRampingMargin / 100.0); - if ((v->PlaneRequiredDISPCLKWithoutODMCombine >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states] - && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states])) { + if ((v->PlaneRequiredDISPCLKWithoutODMCombine >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1] + && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) { v->PlaneRequiredDISPCLKWithoutODMCombine = v->PixelClock[k] * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0); } v->PlaneRequiredDISPCLKWithODMCombine2To1 = v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) * (1 + v->DISPCLKRampingMargin / 100.0); - if ((v->PlaneRequiredDISPCLKWithODMCombine2To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states] - && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states])) { + if ((v->PlaneRequiredDISPCLKWithODMCombine2To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1] + && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) { v->PlaneRequiredDISPCLKWithODMCombine2To1 = v->PixelClock[k] / 2 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0); } v->PlaneRequiredDISPCLKWithODMCombine4To1 = v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) * (1 + v->DISPCLKRampingMargin / 100.0); - if ((v->PlaneRequiredDISPCLKWithODMCombine4To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states] - && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states])) { + if ((v->PlaneRequiredDISPCLKWithODMCombine4To1 >= v->MaxDispclk[i] && v->MaxDispclk[i] == v->MaxDispclk[mode_lib->soc.num_states - 1] + && v->MaxDppclk[i] == v->MaxDppclk[mode_lib->soc.num_states - 1])) { v->PlaneRequiredDISPCLKWithODMCombine4To1 = v->PixelClock[k] / 4 * (1 + v->DISPCLKDPPCLKDSCCLKDownSpreading / 100.0); } -- 2.30.2