linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alex Deucher <alexdeucher@gmail.com>
To: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>,
	Borislav Petkov <bp@suse.de>
Cc: Borislav Petkov <bp@alien8.de>,
	Alex Deucher <alexander.deucher@amd.com>,
	Tony Cheng <Tony.Cheng@amd.com>,
	Chiawen Huang <chiawen.huang@amd.com>,
	LKML <linux-kernel@vger.kernel.org>,
	amd-gfx list <amd-gfx@lists.freedesktop.org>
Subject: Re: 8353d30e747f ("drm/amd/display: disable stream if pixel clock changed with link active")
Date: Tue, 15 Dec 2020 12:04:23 -0500	[thread overview]
Message-ID: <CADnq5_N=CiuGKe4V-4a8s=SEAR9M4W8X_vdshgbwXH2b9u+L2g@mail.gmail.com> (raw)
In-Reply-To: <20201215164234.ywgesdqup6zdjxw4@outlook.office365.com>

[-- Attachment #1: Type: text/plain, Size: 4685 bytes --]

On Tue, Dec 15, 2020 at 11:42 AM Rodrigo Siqueira
<Rodrigo.Siqueira@amd.com> wrote:
>
> On 12/15, Alex Deucher wrote:
> > On Tue, Dec 15, 2020 at 11:07 AM Rodrigo Siqueira
> > <Rodrigo.Siqueira@amd.com> wrote:
> > >
> > > Hi,
> > >
> > > Could you try on Alex's repo?
> > >
> > >  git://people.freedesktop.org/~agd5f/linux
> > >  branch: amd-staging-drm-next
> > >
> > > My patch should apply without any issue on top of this branch.
> >
> > Can you help me identify what patches we need to backport to 5.10?
>
> If we have this patch in 5.10:
>
>  drm/amd/display: disable stream if pixel clock changed with link active
>
> We need to backport:
>
>  1. drm/amd/display: Fix module load hangs when connected to an eDP (for
> DCN)

That is already present:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.10&id=44264591a8c4da7090a4bfd10e04f4cb8fe60afe

>  2. drm/amd/display: Add get_dig_frontend implementation for DCEx (for
> DCEx - we still need Boris feedback)

That patch trivially backports to 5.10.  See attached backported
patch.  @Borislav Petkov does the attached patch fix 5.10 for you?

Alex


>
>
> > Depending on the patches, it might be easier to just revert this for
> > 5.10 and apply the proper fix for 5.11.
>
> I like this approach; we can apply the proper fix on 5.11.
>
> Thanks
>
> > Alex
> >
> >
> > >
> > > Thanks
> > >
> > > On 12/15, Borislav Petkov wrote:
> > > > On Tue, Dec 15, 2020 at 10:47:03AM -0500, Rodrigo Siqueira wrote:
> > > > > Hi Boris,
> > > > >
> > > > > Could you check if your branch has this commit:
> > > > >
> > > > >  drm/amd/display: Fix module load hangs when connected to an eDP
> > > > >
> > > > > If so, could you try this patch:
> > > > >
> > > > >  https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.freedesktop.org%2Fseries%2F84965%2F&amp;data=04%7C01%7CRodrigo.Siqueira%40amd.com%7C3b8b84a3815d4a3cc67e08d8a1152189%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637436459421073301%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=mcdJ1E3tJc%2FK%2Bnf2phU2CFDQ2wp5zrMcRbxdLxQdo3I%3D&amp;reserved=0
> > > >
> > > > So I did a bisection between
> > > >
> > > > git bisect start
> > > > # bad: [3650b228f83adda7e5ee532e2b90429c03f7b9ec] Linux 5.10-rc1
> > > > git bisect bad 3650b228f83adda7e5ee532e2b90429c03f7b9ec
> > > > # good: [bbf5c979011a099af5dc76498918ed7df445635b] Linux 5.9
> > > >
> > > > and the patch in $Subject came in in 5.10-rc1.
> > > >
> > > > I can test any tree you want me to so just tell me on which tree to
> > > > apply this patch and I'll run it.
> > > >
> > > > In any case, it doesn't apply on v5.10 though:
> > > >
> > > > $ test-apply.sh /tmp/rodrigo.siqueira
> > > > checking file drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> > > > Hunk #1 FAILED at 120
> > > >
> > > > You can push a tree of yours somewhere which I can try directly,
> > > > alternatively.
> > > >
> > > > Lemme know.
> > > >
> > > > Thx.
> > > >
> > > > --
> > > > Regards/Gruss,
> > > >     Boris.
> > > >
> > > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpeople.kernel.org%2Ftglx%2Fnotes-about-netiquette&amp;data=04%7C01%7CRodrigo.Siqueira%40amd.com%7C3b8b84a3815d4a3cc67e08d8a1152189%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637436459421073301%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=bHJQuQqFRTA2SU6Va9gt4lvnogZUeYRujeQj4fIXBsE%3D&amp;reserved=0
> > >
> > > --
> > > Rodrigo Siqueira
> > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsiqueira.tech%2F&amp;data=04%7C01%7CRodrigo.Siqueira%40amd.com%7C3b8b84a3815d4a3cc67e08d8a1152189%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637436459421073301%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=bZvusCFfCrWSitpFa%2BmWyg%2BAbJ04ybnlUMQiEB3m5OY%3D&amp;reserved=0
> > > _______________________________________________
> > > amd-gfx mailing list
> > > amd-gfx@lists.freedesktop.org
> > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=04%7C01%7CRodrigo.Siqueira%40amd.com%7C3b8b84a3815d4a3cc67e08d8a1152189%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637436459421083297%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=3K1EuoePhkVVVT7JvPUeKuJW5RIGiHC9LNoqI9ZiTHc%3D&amp;reserved=0
>
> --
> Rodrigo Siqueira
> https://siqueira.tech

[-- Attachment #2: 0001-drm-amd-display-Add-get_dig_frontend-implementation-.patch --]
[-- Type: text/x-patch, Size: 3942 bytes --]

From 965421096770bb0d69444950c1f839e8e5504da5 Mon Sep 17 00:00:00 2001
From: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Date: Tue, 15 Dec 2020 10:45:05 -0500
Subject: [PATCH] drm/amd/display: Add get_dig_frontend implementation for DCEx

Some old ASICs might not implement/require get_dig_frontend helper; in
this scenario, we can have a NULL pointer exception when we try to call
it inside vbios disable operation. For example, this situation might
happen when using Polaris12 with an eDP panel. This commit avoids this
situation by adding a specific get_dig_frontend implementation for DCEx.

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Harry Wentland <Harry.Wentland@amd.com>
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Cc: Chiawen Huang <chiawen.huang@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 .../drm/amd/display/dc/dce/dce_link_encoder.c | 45 ++++++++++++++++++-
 .../drm/amd/display/dc/dce/dce_link_encoder.h |  2 +
 2 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
index b409f6b2bfd8..f355cd1e9090 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
@@ -119,7 +119,8 @@ static const struct link_encoder_funcs dce110_lnk_enc_funcs = {
 	.disable_hpd = dce110_link_encoder_disable_hpd,
 	.is_dig_enabled = dce110_is_dig_enabled,
 	.destroy = dce110_link_encoder_destroy,
-	.get_max_link_cap = dce110_link_encoder_get_max_link_cap
+	.get_max_link_cap = dce110_link_encoder_get_max_link_cap,
+	.get_dig_frontend = dce110_get_dig_frontend,
 };
 
 static enum bp_result link_transmitter_control(
@@ -235,6 +236,45 @@ static void set_link_training_complete(
 
 }
 
+unsigned int dce110_get_dig_frontend(struct link_encoder *enc)
+{
+	struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc);
+	u32 value;
+	enum engine_id result;
+
+	REG_GET(DIG_BE_CNTL, DIG_FE_SOURCE_SELECT, &value);
+
+	switch (value) {
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGA:
+		result = ENGINE_ID_DIGA;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGB:
+		result = ENGINE_ID_DIGB;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGC:
+		result = ENGINE_ID_DIGC;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGD:
+		result = ENGINE_ID_DIGD;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGE:
+		result = ENGINE_ID_DIGE;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGF:
+		result = ENGINE_ID_DIGF;
+		break;
+	case DCE110_DIG_FE_SOURCE_SELECT_DIGG:
+		result = ENGINE_ID_DIGG;
+		break;
+	default:
+		// invalid source select DIG
+		ASSERT(false);
+		result = ENGINE_ID_UNKNOWN;
+	}
+
+	return result;
+}
+
 void dce110_link_encoder_set_dp_phy_pattern_training_pattern(
 	struct link_encoder *enc,
 	uint32_t index)
@@ -1665,7 +1705,8 @@ static const struct link_encoder_funcs dce60_lnk_enc_funcs = {
 	.disable_hpd = dce110_link_encoder_disable_hpd,
 	.is_dig_enabled = dce110_is_dig_enabled,
 	.destroy = dce110_link_encoder_destroy,
-	.get_max_link_cap = dce110_link_encoder_get_max_link_cap
+	.get_max_link_cap = dce110_link_encoder_get_max_link_cap,
+	.get_dig_frontend = dce110_get_dig_frontend
 };
 
 void dce60_link_encoder_construct(
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h
index cb714a48b171..fc6ade824c23 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h
@@ -295,6 +295,8 @@ void dce110_link_encoder_connect_dig_be_to_fe(
 	enum engine_id engine,
 	bool connect);
 
+unsigned int dce110_get_dig_frontend(struct link_encoder *enc);
+
 void dce110_link_encoder_set_dp_phy_pattern_training_pattern(
 	struct link_encoder *enc,
 	uint32_t index);
-- 
2.25.4


  reply	other threads:[~2020-12-15 17:05 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-11 15:55 8353d30e747f ("drm/amd/display: disable stream if pixel clock changed with link active") Borislav Petkov
2020-12-14 21:49 ` Alex Deucher
2020-12-15 15:49   ` Rodrigo Siqueira
2020-12-15 15:51     ` Alex Deucher
2020-12-15 15:47 ` Rodrigo Siqueira
2020-12-15 15:56   ` Borislav Petkov
2020-12-15 16:07     ` Rodrigo Siqueira
2020-12-15 16:18       ` Alex Deucher
2020-12-15 16:42         ` Rodrigo Siqueira
2020-12-15 17:04           ` Alex Deucher [this message]
2020-12-15 18:43             ` Borislav Petkov
2020-12-15 19:00               ` Rodrigo Siqueira
2020-12-15 19:07                 ` Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADnq5_N=CiuGKe4V-4a8s=SEAR9M4W8X_vdshgbwXH2b9u+L2g@mail.gmail.com' \
    --to=alexdeucher@gmail.com \
    --cc=Rodrigo.Siqueira@amd.com \
    --cc=Tony.Cheng@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=bp@alien8.de \
    --cc=bp@suse.de \
    --cc=chiawen.huang@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).