diff mbox

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

Message ID 20150420114450.GH25451@nuc-i3427.alporthouse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson April 20, 2015, 11:44 a.m. UTC
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:

Comments

Radek Dostal April 20, 2015, noon UTC | #1
Hi Chris,

On 04/20/2015 01:44 PM, Chris Wilson wrote:
> 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

perfect - this seems to work :)

Radek
diff mbox

Patch

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