Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp1791122pxy; Thu, 29 Apr 2021 14:53:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzg0H6FlGVQR6rGFMrky2f0YVu/su+p1mDN1sQwjXKMWgbCKQjow6SLq/URrcrDqW5cyYVp X-Received: by 2002:a17:902:f682:b029:ed:463d:a5e1 with SMTP id l2-20020a170902f682b02900ed463da5e1mr2048006plg.1.1619733226825; Thu, 29 Apr 2021 14:53:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619733226; cv=none; d=google.com; s=arc-20160816; b=V34pWOxyLTwQhTUPOf+vzCe5yx4w3oQw3BMBK00uTioDAj2LSGbvl/R4c4yE4Hzhv8 HFwLQYbGlc3Qc7tKKRS4WRf0Az16uwh9ER2Nua8l0DeFLmQKA5C5e183m4BK1gQ7+brH apwaT2LiNtC5i/ltCORLxH1tbeEm++t4Krka2AAcFImVeCbpzYKHcKsWE+Gy9rBYR4vs m4Zu3wBJyiH/fk6lwNr2N63esG4eK7DnHbSHOmhPRP/yUISZuMgc3eVwURN2Is5dT0cX lQGu8jEPRmtHcPjsTd4F9c6VU115ITx0PRKlHlltCYwKLBXw5BbOncuJIuifmhBo5Bj+ JFxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=zpBPDRcCRB4YxTEvwemy+iKlTGhooWps70WY0dARJHk=; b=gycd6fmmB6nv8ngtbqFKDDu2BX5BCiI4fJy5Q/e3ReMSL0EhUpg4ddHy3rdQ5WmTs+ ppcl3vKrKw1+7ZW83VGT4nOC66QXY/P+2ZJIBZneWMIP7vK68xRnqMbcW7Y9lOaVc/QP Y25DMgOqdcR+LNM6EncfNhjuVgzN/rHfNMraAdKss06SzGirlARCRamKN/3galiFnHc3 UAClh9JW+O0mfbp8514DV0zqH2qCl0h5zO7T2iw1e3e7LVeON0sjDUVGRxaN+TGCJ91v /iQ3pIDkiWHr79ZLPq7K+C6crZEY7kXZXSi1dTdxKVKIJpohc+5X6t26p40NUwoJp/6K cYlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=uv5WKOSb; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j16si5310140pfi.301.2021.04.29.14.53.32; Thu, 29 Apr 2021 14:53:46 -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=@gmail.com header.s=20161025 header.b=uv5WKOSb; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235867AbhD2UHg (ORCPT + 99 others); Thu, 29 Apr 2021 16:07:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58620 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234930AbhD2UHf (ORCPT ); Thu, 29 Apr 2021 16:07:35 -0400 Received: from mail-ot1-x32d.google.com (mail-ot1-x32d.google.com [IPv6:2607:f8b0:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B675C06138B for ; Thu, 29 Apr 2021 13:06:47 -0700 (PDT) Received: by mail-ot1-x32d.google.com with SMTP id g4-20020a9d6b040000b029029debbbb3ecso29514016otp.7 for ; Thu, 29 Apr 2021 13:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zpBPDRcCRB4YxTEvwemy+iKlTGhooWps70WY0dARJHk=; b=uv5WKOSb0n9+PSbwiZF9C7R5OItIFXVmQzEgvQPbML11er6OCcLvYx9Iy7kvH6+2DR IFGHm+BC0SdAJW26T0arODEv3n/DoMpnCOPFTBVJ3ZjWRy+oexH6W6szK3dZpctkquFM CoZtrpCrO3UFDlAPdFGd9iidNr2sTmWmoJuzh3Q/cOeVk4FKabrpO6Qty7eIKlfR6gUD kg1jefsCRnqoG6vRE5x2DOfd0A4NFRMuN+enDyl1Bz/1BTxGGMbIrD2v+dw5I6GHZpfb tvsNTbH0lqmTXHf1+urJ4PDMiS0ZZSviLOIbEYkHWFO/e2AJFn44atiX1P/bbccQB7tc CuBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zpBPDRcCRB4YxTEvwemy+iKlTGhooWps70WY0dARJHk=; b=juKzY0shJWngnek8RrK4L9/fLOwIXKRKARZiEraKU7UQ63dXR8UmZR6FfHn90WhY42 MW+3MK5iU8Ur+9hKmLGPNLhYPWyvTHgdIpGfcyqq9uPlo7U5Rfs1tHUi4x5HghuYFeAK 5tQEMT+D1R0d5L0m6kb6nMuXkdNQUJDDD4ykH0WBziSRhhNuLLnL0uBsBpkBy2PSXp/S k0IEqg0ieKSIaZT9qz5u+B4YupeROKnBWrYgJeAOS+3+NPyhQPhfE1HQqSNvk4FQooRn 8qTAsZuID/GwUqpftdAxE6ZGYnyE8g2n2XdvLfnYjbsLzE7KXJtiRC1CEQXqxZrioW8M lXuw== X-Gm-Message-State: AOAM532OmeH12Z62DffnQNIykEIbrNGdOlDw9CCWhmhgR6qC8zJet9r4 NHx8hT4vZAsq3UOSE+PwUtYWL4vwTM5Wl948MVs= X-Received: by 2002:a9d:63d1:: with SMTP id e17mr635034otl.311.1619726806738; Thu, 29 Apr 2021 13:06:46 -0700 (PDT) MIME-Version: 1.0 References: <20210429133941.531730-1-kai.heng.feng@canonical.com> In-Reply-To: <20210429133941.531730-1-kai.heng.feng@canonical.com> From: Alex Deucher Date: Thu, 29 Apr 2021 16:06:35 -0400 Message-ID: Subject: Re: [PATCH] drm/radeon/dpm: Disable sclk switching when two 4K 60Hz monitors are connected To: Kai-Heng Feng Cc: "Deucher, Alexander" , Christian Koenig , David Airlie , open list , "open list:DRM DRIVERS" , "open list:RADEON and AMDGPU DRM DRIVERS" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 29, 2021 at 9:40 AM Kai-Heng Feng wrote: > > Screen flickers rapidly when two 4K 60Hz monitors are connected to an > Oland card. This issue doesn't happen when one monitor is 4K 60Hz > (pixelclock 594MHz) and another one is 4K 30Hz (pixelclock 297MHz). > > The issue is gone after setting "power_dpm_force_performance_level" to > "high". Following the lead, we found that the issue only occurs when > sclk is too low. > > So resolve the issue by disabling sclk switching when there are two > monitors that requires high pixelclock (> 297MHz). > > Signed-off-by: Kai-Heng Feng > --- > drivers/gpu/drm/radeon/radeon.h | 1 + > drivers/gpu/drm/radeon/radeon_pm.c | 8 ++++++++ > drivers/gpu/drm/radeon/si_dpm.c | 3 +++ > 3 files changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h > index 42281fce552e6..56ed5634cebef 100644 > --- a/drivers/gpu/drm/radeon/radeon.h > +++ b/drivers/gpu/drm/radeon/radeon.h > @@ -1549,6 +1549,7 @@ struct radeon_dpm { > void *priv; > u32 new_active_crtcs; > int new_active_crtc_count; > + int high_pixelclock_count; > u32 current_active_crtcs; > int current_active_crtc_count; > bool single_display; > diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c > index 0c1950f4e146f..3861c0b98fcf3 100644 > --- a/drivers/gpu/drm/radeon/radeon_pm.c > +++ b/drivers/gpu/drm/radeon/radeon_pm.c > @@ -1767,6 +1767,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev) > struct drm_device *ddev = rdev->ddev; > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > + struct radeon_connector *radeon_connector; > > if (!rdev->pm.dpm_enabled) > return; > @@ -1776,6 +1777,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev) > /* update active crtc counts */ > rdev->pm.dpm.new_active_crtcs = 0; > rdev->pm.dpm.new_active_crtc_count = 0; > + rdev->pm.dpm.high_pixelclock_count = 0; > if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { > list_for_each_entry(crtc, > &ddev->mode_config.crtc_list, head) { > @@ -1783,6 +1785,12 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev) > if (crtc->enabled) { > rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); > rdev->pm.dpm.new_active_crtc_count++; > + if (!radeon_crtc->connector) > + continue; > + > + radeon_connector = to_radeon_connector(radeon_crtc->connector); > + if (radeon_connector->pixelclock_for_modeset > 297000) > + rdev->pm.dpm.high_pixelclock_count++; > } > } > } > diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c > index 9186095518047..be6fa3257d1bc 100644 > --- a/drivers/gpu/drm/radeon/si_dpm.c > +++ b/drivers/gpu/drm/radeon/si_dpm.c > @@ -2995,6 +2995,9 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev, > ni_dpm_vblank_too_short(rdev)) > disable_mclk_switching = true; > > + if (rdev->pm.dpm.high_pixelclock_count > 1) > + disable_sclk_switching = true; > + I would suggest limiting this to just Oland. Alex > if (rps->vclk || rps->dclk) { > disable_mclk_switching = true; > disable_sclk_switching = true; > -- > 2.30.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel