Re: [PATCHv2] drm: fb_helper: prefer to use mode, which is not DRM_MODE_TYPE_USERDEF

Chris Wilson
2015-04-20T11:44:57Z

On Mon, Apr 20, 2015 at 01:20:05PM +0200, Radek Dostál wrote:
> Hi Chris,
>
> On 04/20/2015 01:00 PM, Chris Wilson wrote:
> > Can you do a WARN_ON(list_empty(&connector->modes)) here to see at what
> > point we set up the invalid GTF mode?
>
> sure please see attached patch adding WARN_ON and corresponding output
> of dmesg. As mentioned in the original commit, the mode is indeed added
> in drm_helper_probe_add_cmdline_mode.

Ah, maybe this on top of the previous try:

diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index 88f5a74..5d22ca0 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -87,7 +87,7 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector)
return 0;

/* Only add a GTF mode if we find no matching probed modes */
- list_for_each_entry(mode, &connector->modes, head) {
+ list_for_each_entry(mode, &connector->probed_modes, head) {
if (mode->hdisplay != cmdline_mode->xres ||
mode->vdisplay != cmdline_mode->yres)
continue;
@@ -211,7 +211,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
mode_flags |= DRM_MODE_FLAG_3D_MASK;

list_for_each_entry(mode, &connector->modes, head) {
- mode->status = drm_mode_validate_basic(mode);
+ if (mode->status == MODE_OK)
+ mode->status = drm_mode_validate_basic(mode);

if (mode->status == MODE_OK)
mode->status = drm_mode_validate_size(mode, maxX, maxY

--
Chris Wilson, Intel Open Source Technology Centre