All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Bruno Prémont" <bonbons@linux-vserver.org>
To: dmarkh@cfl.rr.com
Cc: linux-kernel@vger.kernel.org,
	"markh@compro.net >> Mark Hounschell" <markh@compro.net>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] drm_kms_helper problems
Date: Sun, 21 Oct 2012 16:58:02 +0200	[thread overview]
Message-ID: <20121021165802.578d6d6b@neptune.home> (raw)
In-Reply-To: <508409FC.6080805@cfl.rr.com>

Hi mark,

On Sun, 21 October 2012 Mark Hounschell <dmarkh@cfl.rr.com> wrote:
> I have a TV that appears to not provide proper EDID info to the HDMI or DVI 
> ports of my Intel DH77DF motherboard. I received some pointers from this 
> list that pointed me in the direction of creating my own EDID file and I 
> now have a binary blob that matches what the service manual says is the 
> proper EDID info.
> 
> But I am unable to get the drm_kms_helper module to load and use this file. 
> My relevant kernel config options are.
> 
> CONFIG_DRM_KMS_HELPER=m
> CONFIG_DRM_LOAD_EDID_FIRMWARE=y
> 
> my relevant kernel command line contains:
> 
> video=card0-HDMI-A-1:e 
> drm_kms_helper.edid_firmware=card0-HDMI-A-1:edid/lg42lb9df_hdmi1.edid

The variant without card0- should be the right one.

> The edid file:
> # ls -al /lib/firmware/edid/lg42lb9df_hdmi1.edid
> -rw-r--r-- 1 root root 256 Oct 16 05:46 /lib/firmware/edid/lg42lb9df_hdmi1.edid
> 
> connector info from /sys/class/drm/
> 
> card0  card0-DP-1  card0-DP-2  card0-DP-3  card0-HDMI-A-1  card0-HDMI-A-2 
> card0-HDMI-A-3  card0-VGA-1  controlD64  version
> 
> And I don't really understand why I have 3 entries for the one hdmi port? 
> Nor do I really understand _exactly_ how to define the connector in my 
> kernel command line or which of the 3 connectors from /sys I should be 
> using. I've tried different variants. Ie. card0-HDMI-A-1and HDMI-A-1.
> 
> The results in the kernel log file remain:
> 
> [    1.879654] drm_kms_helper: Unknown parameter `edid'

As your drm_kms_helper is built modular, did you try not putting that
parameter on kernel cmdline but rather put it in modprobe's configuration
for that module? (may doing the whole loading manually).

# modprobe drm_kms_helper edid_firmware=HDMI-A-1:edid/lg42lb9df_hdmi1.edid

I have no idea why it fails for you, here on the systems I have it works
fine (on one where everything is built into the kernel I did set the cmdline
arguments via CONFIG_CMDLINE="..." (having CONFIG_CMDLINE_BOOL=y).

> I assume I am doing something wrong but I have put some debug printks in 
> kernel/params.c that shows me every call made to it and it's params. It is 
> entered many times and I see a sequence to in the log file. As an example, 
> the last one to call with params before drm_kms_helper is "late" and here 
> are my debug prints for it:

Did you check that your bootloader get things right, e.g. if results are the
same no matter in which order you put the kernel parameters (and if there are
some non-ASCII values in there).
As you have quite some length of parameters there could be some buffer size
issue.
(take this as just wild guessing)

Bruno


> [    0.840206] parse_args: Entered for late
> [    0.840207] parse_args: doing = late
> [    0.840208] parse_args: args  = 
> root=/dev/disk/by-id/ata-INTEL_SSDSC2CW060A3_CVCV205106EB060AGN-part4 
> video=1024x768 
> resume=/dev/disk/by-id/ata-INTEL_SSDSC2CW060A3_CVCV205106EB060AGN-part3 
> splash=silent quiet vga=0x37e irqpoll video=card0-HDMI-A-1:e 
> drm_kms_helper.edid_firmware=card0-HDMI-A-1:edid/lg42lb9df_hdmi1.edid
> [    0.840209] parse_args: params =
> [    0.840210] parse_args: num = 174
> [    0.840210] parse_args: min_level = 7
> [    0.840211] parse_args: max_level = 7
> 
> Now when it gets to drm_kms_helper this is what I get and this is certainly 
> screwed up, I just don't know why.
> 
> [    1.879648] parse_args: Entered for drm_kms_helper
> [    1.879648] parse_args: doing = drm_kms_helper
> [    1.879649] parse_args: args  = edid
> \xffffff86\xffffffe2\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xffffffff\xffffffffԒ\xffffffe2\xfffffff8T\xffffff86\xffffffe2\xfffffff88\xffffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffd\xffffff86\xffffffe2\xfffffff8
> [    1.879650] parse_args: num = 2
> [    1.879651] parse_args: min_level = -32768
> [    1.879651] parse_args: max_level = 32767
> [    1.879653]
> \xffffff86\xffffffe2\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xffffffff\xffffffffԒ\xffffffe2\xfffffff8T\xffffff86\xffffffe2\xfffffff88\xffffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffd\xffffff86\xffffffe2\xfffffff8, 
> num=2, min_level=-32768, max_level=32767
> 
> Then finally:
> 
> [    1.879654] drm_kms_helper: Unknown parameter `edid'
> 
> The additional printks I inserted into kernel/params.c:
> 
>          if (*args)
>                  pr_debug("doing %s, parsing ARGS: '%s'\n", doing, args);
> 
> +      if (*args) {
> +              printk("\nparse_args: Entered for %s\n", doing);
> +              printk("parse_args: doing = %s\n", doing);
> +              printk("parse_args: args  = %s\n", args);
> +              printk("parse_args: params = %s\n", params);
> +              printk("parse_args: num = %d\n", num);
> +              printk("parse_args: min_level = %d\n",min_level);
> +              printk("parse_args: max_level = %d\n", max_level);
> +       }
> 
>          while (*args) {
> 
> This is using a vanilla 3.6.2 kernel. Any help would be appreciated.
> 
> Regards
> Mark

WARNING: multiple messages have this Message-ID (diff)
From: "Bruno Prémont" <bonbons@linux-vserver.org>
To: dmarkh@cfl.rr.com
Cc: "markh@compro.net >> Mark Hounschell" <markh@compro.net>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	linux-kernel@vger.kernel.org
Subject: Re: drm_kms_helper problems
Date: Sun, 21 Oct 2012 16:58:02 +0200	[thread overview]
Message-ID: <20121021165802.578d6d6b@neptune.home> (raw)
In-Reply-To: <508409FC.6080805@cfl.rr.com>

Hi mark,

On Sun, 21 October 2012 Mark Hounschell <dmarkh@cfl.rr.com> wrote:
> I have a TV that appears to not provide proper EDID info to the HDMI or DVI 
> ports of my Intel DH77DF motherboard. I received some pointers from this 
> list that pointed me in the direction of creating my own EDID file and I 
> now have a binary blob that matches what the service manual says is the 
> proper EDID info.
> 
> But I am unable to get the drm_kms_helper module to load and use this file. 
> My relevant kernel config options are.
> 
> CONFIG_DRM_KMS_HELPER=m
> CONFIG_DRM_LOAD_EDID_FIRMWARE=y
> 
> my relevant kernel command line contains:
> 
> video=card0-HDMI-A-1:e 
> drm_kms_helper.edid_firmware=card0-HDMI-A-1:edid/lg42lb9df_hdmi1.edid

The variant without card0- should be the right one.

> The edid file:
> # ls -al /lib/firmware/edid/lg42lb9df_hdmi1.edid
> -rw-r--r-- 1 root root 256 Oct 16 05:46 /lib/firmware/edid/lg42lb9df_hdmi1.edid
> 
> connector info from /sys/class/drm/
> 
> card0  card0-DP-1  card0-DP-2  card0-DP-3  card0-HDMI-A-1  card0-HDMI-A-2 
> card0-HDMI-A-3  card0-VGA-1  controlD64  version
> 
> And I don't really understand why I have 3 entries for the one hdmi port? 
> Nor do I really understand _exactly_ how to define the connector in my 
> kernel command line or which of the 3 connectors from /sys I should be 
> using. I've tried different variants. Ie. card0-HDMI-A-1and HDMI-A-1.
> 
> The results in the kernel log file remain:
> 
> [    1.879654] drm_kms_helper: Unknown parameter `edid'

As your drm_kms_helper is built modular, did you try not putting that
parameter on kernel cmdline but rather put it in modprobe's configuration
for that module? (may doing the whole loading manually).

# modprobe drm_kms_helper edid_firmware=HDMI-A-1:edid/lg42lb9df_hdmi1.edid

I have no idea why it fails for you, here on the systems I have it works
fine (on one where everything is built into the kernel I did set the cmdline
arguments via CONFIG_CMDLINE="..." (having CONFIG_CMDLINE_BOOL=y).

> I assume I am doing something wrong but I have put some debug printks in 
> kernel/params.c that shows me every call made to it and it's params. It is 
> entered many times and I see a sequence to in the log file. As an example, 
> the last one to call with params before drm_kms_helper is "late" and here 
> are my debug prints for it:

Did you check that your bootloader get things right, e.g. if results are the
same no matter in which order you put the kernel parameters (and if there are
some non-ASCII values in there).
As you have quite some length of parameters there could be some buffer size
issue.
(take this as just wild guessing)

Bruno


> [    0.840206] parse_args: Entered for late
> [    0.840207] parse_args: doing = late
> [    0.840208] parse_args: args  = 
> root=/dev/disk/by-id/ata-INTEL_SSDSC2CW060A3_CVCV205106EB060AGN-part4 
> video=1024x768 
> resume=/dev/disk/by-id/ata-INTEL_SSDSC2CW060A3_CVCV205106EB060AGN-part3 
> splash=silent quiet vga=0x37e irqpoll video=card0-HDMI-A-1:e 
> drm_kms_helper.edid_firmware=card0-HDMI-A-1:edid/lg42lb9df_hdmi1.edid
> [    0.840209] parse_args: params =
> [    0.840210] parse_args: num = 174
> [    0.840210] parse_args: min_level = 7
> [    0.840211] parse_args: max_level = 7
> 
> Now when it gets to drm_kms_helper this is what I get and this is certainly 
> screwed up, I just don't know why.
> 
> [    1.879648] parse_args: Entered for drm_kms_helper
> [    1.879648] parse_args: doing = drm_kms_helper
> [    1.879649] parse_args: args  = edid
> \xffffff86\xffffffe2\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xffffffff\xffffffffԒ\xffffffe2\xfffffff8T\xffffff86\xffffffe2\xfffffff88\xffffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffd\xffffff86\xffffffe2\xfffffff8
> [    1.879650] parse_args: num = 2
> [    1.879651] parse_args: min_level = -32768
> [    1.879651] parse_args: max_level = 32767
> [    1.879653]
> \xffffff86\xffffffe2\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xffffffff\xffffffffԒ\xffffffe2\xfffffff8T\xffffff86\xffffffe2\xfffffff88\xffffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffd\xffffff86\xffffffe2\xfffffff8, 
> num=2, min_level=-32768, max_level=32767
> 
> Then finally:
> 
> [    1.879654] drm_kms_helper: Unknown parameter `edid'
> 
> The additional printks I inserted into kernel/params.c:
> 
>          if (*args)
>                  pr_debug("doing %s, parsing ARGS: '%s'\n", doing, args);
> 
> +      if (*args) {
> +              printk("\nparse_args: Entered for %s\n", doing);
> +              printk("parse_args: doing = %s\n", doing);
> +              printk("parse_args: args  = %s\n", args);
> +              printk("parse_args: params = %s\n", params);
> +              printk("parse_args: num = %d\n", num);
> +              printk("parse_args: min_level = %d\n",min_level);
> +              printk("parse_args: max_level = %d\n", max_level);
> +       }
> 
>          while (*args) {
> 
> This is using a vanilla 3.6.2 kernel. Any help would be appreciated.
> 
> Regards
> Mark
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2012-10-21 14:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-21 14:43 drm_kms_helper problems Mark Hounschell
2012-10-21 14:58 ` Bruno Prémont [this message]
2012-10-21 14:58   ` Bruno Prémont
2012-10-21 18:18   ` [Intel-gfx] " Mark Hounschell
2012-10-21 19:18     ` Bruno Prémont
2012-10-22 11:42       ` Mark Hounschell
2012-10-22 17:40         ` Mark Hounschell
2012-10-22 21:54           ` Mark Hounschell
2012-10-23  6:36             ` Bruno Prémont
2012-10-23  9:21               ` Chris Wilson
2012-10-23  9:59               ` [Intel-gfx] " Mark Hounschell

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=20121021165802.578d6d6b@neptune.home \
    --to=bonbons@linux-vserver.org \
    --cc=dmarkh@cfl.rr.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markh@compro.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.