Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp3923836pxb; Mon, 21 Feb 2022 08:24:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJwc/1CT8h6bIOJsY/1Bg+LUy/PnEvGGPZcwZ95FYRdrquzkGzjY6Iw9Hfcr15W0fEortdp+ X-Received: by 2002:a50:9b45:0:b0:410:7cdb:5d3a with SMTP id a5-20020a509b45000000b004107cdb5d3amr22878696edj.275.1645460645637; Mon, 21 Feb 2022 08:24:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645460645; cv=none; d=google.com; s=arc-20160816; b=uvfSS0QyK96klusA7oIb+q2C/Gn3YvzwUbzmkStsKfTCf3vRbTjiYKtb6FZ/EgOz0G AuhHEKVqqKl0FyINmFiYdDj4RVdqByK5NPeL9P5QiQw5oo61okc/DvGTu55TafCZzflt B82yTuIWer93F9Uv3oslkPmLq2LY8xzt8QxnsSwsAtiK7FNj8r5QcDn07HS6/orFGosv +kBiTe9qhqGU0arA4EMVEomo9qG6t8hnDvsgLe9tviXfXwZkvblfIpQibSVdCRQeHl3W IIoQm2lRNKfpZLzVFmYn2ZpeBsVNjKi8cYiRv/8cuRQNFU9LeE9bgt7FTuMOqttj0TuL c2vg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=rhPAFReIqmSCyM3PW8H3sl83MIiw8pU7osgaxYBuEMw=; b=DxuoIwQmwi2LQNuzbrVQMuWwChzRz7dov0+ntoBTtgaCIiWB9ApVm5O3Aqb9QccPKU s6gHr7VYfvJFqXsaP3Bzoc1O6OMcPMp+N9msCVdErHq4PGZXJUj+Wi7X+N+QHemu5PeL QiaLXQuO20yWNZGyx54MobVgRHJDIHBomkFFV6d/YyoiTEvncvL0pyGBZcy8wWIaTqDg ljVv4KlYoMIiMs79Zv7C8wUIwIJSUMQOCCkOdZEQlNUc3vLmmFKxY4nklzKh+g5nG8M8 T5dOOSiBbgGTRsqlVr1iPOWtPLAMk0zmkt9Xo3je++/MGDMDlqa+g0KMv9dK8SKqW1+h ygGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=A1Hm1Hnm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qo23si8802618ejb.561.2022.02.21.08.23.42; Mon, 21 Feb 2022 08:24:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=A1Hm1Hnm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352421AbiBUKIm (ORCPT + 99 others); Mon, 21 Feb 2022 05:08:42 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:38362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354028AbiBUJ6G (ORCPT ); Mon, 21 Feb 2022 04:58:06 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6A3C48E63; Mon, 21 Feb 2022 01:27:26 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id BC30AB80EB1; Mon, 21 Feb 2022 09:27:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A245C340E9; Mon, 21 Feb 2022 09:27:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1645435639; bh=99ib6/8EuISMgsFakWZuG7g0MOiNdukUAPkkv2jpBmg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A1Hm1HnmwIJsQlwLHKInckzV6n/xV2UFL8yvmviBWwNn5Nd+S48FzE0JYjOlGetyv z9kwpTI2ZkihqjJLhda6v1bkBqXSsmmsLp+cLUDHRWyzJWcZv0uwlh0Del0WMpz7bT VYMlpARCtJ37ol1sgl+WyevxsfFF/gD4SSr6QOmM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Roman Li , Nicholas Kazlauskas , Alex Deucher , Sasha Levin Subject: [PATCH 5.16 223/227] drm/amd/display: Cap pflip irqs per max otg number Date: Mon, 21 Feb 2022 09:50:42 +0100 Message-Id: <20220221084942.215569535@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220221084934.836145070@linuxfoundation.org> References: <20220221084934.836145070@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Roman Li [ Upstream commit 328e34a5ad227399391891d454043e5d73e598d2 ] [Why] pflip interrupt order are mapped 1 to 1 to otg id. e.g. if irq_src=26 corresponds to otg0 then 27->otg1, 28->otg2... Linux DM registers pflip interrupts per number of crtcs. In fused pipe case crtc numbers can be less than otg id. e.g. if one pipe out of 3(otg#0-2) is fused adev->mode_info.num_crtc=2 so DM only registers irq_src 26,27. This is a bug since if pipe#2 remains unfused DM never gets otg2 pflip interrupt (irq_src=28) That may results in gfx failure due to pflip timeout. [How] Register pflip interrupts per max num of otg instead of num_crtc Signed-off-by: Roman Li Reviewed-by: Nicholas Kazlauskas Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- drivers/gpu/drm/amd/display/dc/core/dc.c | 2 ++ drivers/gpu/drm/amd/display/dc/dc.h | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index efcb25ef1809a..0117b00b4ed83 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3629,7 +3629,7 @@ static int dcn10_register_irq_handlers(struct amdgpu_device *adev) /* Use GRPH_PFLIP interrupt */ for (i = DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT; - i <= DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT + adev->mode_info.num_crtc - 1; + i <= DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT + dc->caps.max_otg_num - 1; i++) { r = amdgpu_irq_add_id(adev, SOC15_IH_CLIENTID_DCE, i, &adev->pageflip_irq); if (r) { diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index f0fbd8ad56229..e890e063cde31 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1237,6 +1237,8 @@ struct dc *dc_create(const struct dc_init_data *init_params) dc->caps.max_dp_protocol_version = DP_VERSION_1_4; + dc->caps.max_otg_num = dc->res_pool->res_cap->num_timing_generator; + if (dc->res_pool->dmcu != NULL) dc->versions.dmcu_version = dc->res_pool->dmcu->dmcu_version; } diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h index 618e7989176fc..14864763a1881 100644 --- a/drivers/gpu/drm/amd/display/dc/dc.h +++ b/drivers/gpu/drm/amd/display/dc/dc.h @@ -190,6 +190,7 @@ struct dc_caps { #endif bool vbios_lttpr_aware; bool vbios_lttpr_enable; + uint32_t max_otg_num; }; struct dc_bug_wa { -- 2.34.1