Re: [PATCH] drm/amd/display: Expose connector VRR range via debugfs
On 1/25/19 3:13 AM, Koenig, Christian wrote: > Am 24.01.19 um 18:56 schrieb Wentland, Harry: >> >> On 2019-01-24 12:41 p.m., Christian König wrote: >>> Am 24.01.19 um 18:06 schrieb Nicholas Kazlauskas: [Why] It's useful to know the min and max vrr range for IGT testing. [How] Expose the min and max vfreq for the connector via a debugfs file on the connector, "vrr_range". Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range Cc: Harry Wentland Cc: Leo Li Signed-off-by: Nicholas Kazlauskas >>> Oh, nice that is indeed useful. Acked-by: Christian König >>> >>> >> FYI, IGT test case making use of this: >> https://patchwork.freedesktop.org/patch/275982/ > > BTW: I have a flaky 4k VRR monitor here which at around 50% of all boots > is not correctly detected on a Vega10. > > It used to work fine about a month ago and same cable/etc work fine on a > Tonga, so most likely a regression. > > Not my highest priority at the moment, but are you guys already working > on this? If not I will try to start to bisect when I have time. > > Christian. If you were trying to use 4k@30Hz that would below your monitor's min VRR range I'd imagine. We were setting ignore_msa_timing_param on modesets for VRR capable displays even if VRR wasn't going to be enabled by userspace, but that could cause the monitor to blackout when the refresh rate is below the min range. There's a fix coming up to address that bug at least. I don't think I know of any other issue recently that sounds like what you're seeing, so feel to bisect in that case or post a bug report. Nicholas Kazlauskas > >> >> Reviewed-by: Harry Wentland >> >> Harry >> --- .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 22 ++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c index cca3e16cda4f..4a55cde027cf 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c @@ -671,6 +671,25 @@ static ssize_t dp_phy_test_pattern_debugfs_write(struct file *f, const char __us return bytes_from_user; } +/* + * Returns the min and max vrr vfreq through the connector's debugfs file. + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range + */ +static int vrr_range_show(struct seq_file *m, void *data) +{ + struct drm_connector *connector = m->private; + struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); + + if (connector->status != connector_status_connected) + return -ENODEV; + + seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); + seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(vrr_range); + static const struct file_operations dp_link_settings_debugfs_fops = { .owner = THIS_MODULE, .read = dp_link_settings_read, @@ -697,7 +716,8 @@ static const struct { } dp_debugfs_entries[] = { {"link_settings", &dp_link_settings_debugfs_fops}, {"phy_settings", &dp_phy_settings_debugfs_fop}, - {"test_pattern", &dp_phy_test_pattern_fops} + {"test_pattern", &dp_phy_test_pattern_fops}, + {"vrr_range", &vrr_range_fops} }; int connector_debugfs_init(struct amdgpu_dm_connector *connector) > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amd/display: Expose connector VRR range via debugfs
Am 24.01.19 um 18:56 schrieb Wentland, Harry: > > On 2019-01-24 12:41 p.m., Christian König wrote: >> Am 24.01.19 um 18:06 schrieb Nicholas Kazlauskas: >>> [Why] >>> It's useful to know the min and max vrr range for IGT testing. >>> >>> [How] >>> Expose the min and max vfreq for the connector via a debugfs file >>> on the connector, "vrr_range". >>> >>> Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range >>> >>> Cc: Harry Wentland >>> Cc: Leo Li >>> Signed-off-by: Nicholas Kazlauskas >> Oh, nice that is indeed useful. Acked-by: Christian König >> >> > FYI, IGT test case making use of this: > https://patchwork.freedesktop.org/patch/275982/ BTW: I have a flaky 4k VRR monitor here which at around 50% of all boots is not correctly detected on a Vega10. It used to work fine about a month ago and same cable/etc work fine on a Tonga, so most likely a regression. Not my highest priority at the moment, but are you guys already working on this? If not I will try to start to bisect when I have time. Christian. > > Reviewed-by: Harry Wentland > > Harry > >>> --- >>> .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 22 ++- >>> 1 file changed, 21 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> index cca3e16cda4f..4a55cde027cf 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >>> @@ -671,6 +671,25 @@ static ssize_t >>> dp_phy_test_pattern_debugfs_write(struct file *f, const char __us >>> return bytes_from_user; >>> } >>> +/* >>> + * Returns the min and max vrr vfreq through the connector's debugfs file. >>> + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range >>> + */ >>> +static int vrr_range_show(struct seq_file *m, void *data) >>> +{ >>> + struct drm_connector *connector = m->private; >>> + struct amdgpu_dm_connector *aconnector = >>> to_amdgpu_dm_connector(connector); >>> + >>> + if (connector->status != connector_status_connected) >>> + return -ENODEV; >>> + >>> + seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); >>> + seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); >>> + >>> + return 0; >>> +} >>> +DEFINE_SHOW_ATTRIBUTE(vrr_range); >>> + >>> static const struct file_operations dp_link_settings_debugfs_fops = { >>> .owner = THIS_MODULE, >>> .read = dp_link_settings_read, >>> @@ -697,7 +716,8 @@ static const struct { >>> } dp_debugfs_entries[] = { >>> {"link_settings", &dp_link_settings_debugfs_fops}, >>> {"phy_settings", &dp_phy_settings_debugfs_fop}, >>> - {"test_pattern", &dp_phy_test_pattern_fops} >>> + {"test_pattern", &dp_phy_test_pattern_fops}, >>> + {"vrr_range", &vrr_range_fops} >>> }; >>> int connector_debugfs_init(struct amdgpu_dm_connector *connector) ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amd/display: Expose connector VRR range via debugfs
On 2019-01-24 12:41 p.m., Christian König wrote: > Am 24.01.19 um 18:06 schrieb Nicholas Kazlauskas: >> [Why] >> It's useful to know the min and max vrr range for IGT testing. >> >> [How] >> Expose the min and max vfreq for the connector via a debugfs file >> on the connector, "vrr_range". >> >> Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range >> >> Cc: Harry Wentland >> Cc: Leo Li >> Signed-off-by: Nicholas Kazlauskas > > Oh, nice that is indeed useful. Acked-by: Christian König > > FYI, IGT test case making use of this: https://patchwork.freedesktop.org/patch/275982/ Reviewed-by: Harry Wentland Harry >> --- >> .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 22 ++- >> 1 file changed, 21 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >> index cca3e16cda4f..4a55cde027cf 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c >> @@ -671,6 +671,25 @@ static ssize_t dp_phy_test_pattern_debugfs_write(struct >> file *f, const char __us >> return bytes_from_user; >> } >> +/* >> + * Returns the min and max vrr vfreq through the connector's debugfs file. >> + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range >> + */ >> +static int vrr_range_show(struct seq_file *m, void *data) >> +{ >> + struct drm_connector *connector = m->private; >> + struct amdgpu_dm_connector *aconnector = >> to_amdgpu_dm_connector(connector); >> + >> + if (connector->status != connector_status_connected) >> + return -ENODEV; >> + >> + seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); >> + seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); >> + >> + return 0; >> +} >> +DEFINE_SHOW_ATTRIBUTE(vrr_range); >> + >> static const struct file_operations dp_link_settings_debugfs_fops = { >> .owner = THIS_MODULE, >> .read = dp_link_settings_read, >> @@ -697,7 +716,8 @@ static const struct { >> } dp_debugfs_entries[] = { >> {"link_settings", &dp_link_settings_debugfs_fops}, >> {"phy_settings", &dp_phy_settings_debugfs_fop}, >> - {"test_pattern", &dp_phy_test_pattern_fops} >> + {"test_pattern", &dp_phy_test_pattern_fops}, >> + {"vrr_range", &vrr_range_fops} >> }; >> int connector_debugfs_init(struct amdgpu_dm_connector *connector) > ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amd/display: Expose connector VRR range via debugfs
Am 24.01.19 um 18:06 schrieb Nicholas Kazlauskas: [Why] It's useful to know the min and max vrr range for IGT testing. [How] Expose the min and max vfreq for the connector via a debugfs file on the connector, "vrr_range". Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range Cc: Harry Wentland Cc: Leo Li Signed-off-by: Nicholas Kazlauskas Oh, nice that is indeed useful. Acked-by: Christian König --- .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 22 ++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c index cca3e16cda4f..4a55cde027cf 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c @@ -671,6 +671,25 @@ static ssize_t dp_phy_test_pattern_debugfs_write(struct file *f, const char __us return bytes_from_user; } +/* + * Returns the min and max vrr vfreq through the connector's debugfs file. + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range + */ +static int vrr_range_show(struct seq_file *m, void *data) +{ + struct drm_connector *connector = m->private; + struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); + + if (connector->status != connector_status_connected) + return -ENODEV; + + seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); + seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(vrr_range); + static const struct file_operations dp_link_settings_debugfs_fops = { .owner = THIS_MODULE, .read = dp_link_settings_read, @@ -697,7 +716,8 @@ static const struct { } dp_debugfs_entries[] = { {"link_settings", &dp_link_settings_debugfs_fops}, {"phy_settings", &dp_phy_settings_debugfs_fop}, - {"test_pattern", &dp_phy_test_pattern_fops} + {"test_pattern", &dp_phy_test_pattern_fops}, + {"vrr_range", &vrr_range_fops} }; int connector_debugfs_init(struct amdgpu_dm_connector *connector) ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH] drm/amd/display: Expose connector VRR range via debugfs
[Why] It's useful to know the min and max vrr range for IGT testing. [How] Expose the min and max vfreq for the connector via a debugfs file on the connector, "vrr_range". Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range Cc: Harry Wentland Cc: Leo Li Signed-off-by: Nicholas Kazlauskas --- .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 22 ++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c index cca3e16cda4f..4a55cde027cf 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c @@ -671,6 +671,25 @@ static ssize_t dp_phy_test_pattern_debugfs_write(struct file *f, const char __us return bytes_from_user; } +/* + * Returns the min and max vrr vfreq through the connector's debugfs file. + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range + */ +static int vrr_range_show(struct seq_file *m, void *data) +{ + struct drm_connector *connector = m->private; + struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); + + if (connector->status != connector_status_connected) + return -ENODEV; + + seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq); + seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(vrr_range); + static const struct file_operations dp_link_settings_debugfs_fops = { .owner = THIS_MODULE, .read = dp_link_settings_read, @@ -697,7 +716,8 @@ static const struct { } dp_debugfs_entries[] = { {"link_settings", &dp_link_settings_debugfs_fops}, {"phy_settings", &dp_phy_settings_debugfs_fop}, - {"test_pattern", &dp_phy_test_pattern_fops} + {"test_pattern", &dp_phy_test_pattern_fops}, + {"vrr_range", &vrr_range_fops} }; int connector_debugfs_init(struct amdgpu_dm_connector *connector) -- 2.17.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx