Bug 43171 - [ILK] LVDS attached to !mobile left unlit
Summary: [ILK] LVDS attached to !mobile left unlit
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: Chris Wilson
QA Contact:
Depends on:
Reported: 2011-11-22 10:17 UTC by Daniel Wolff
Modified: 2017-07-24 23:03 UTC (History)
7 users (show)

See Also:
i915 platform:
i915 features:

VBIOS dump (64.00 KB, application/octet-stream)
2011-11-22 10:17 UTC, Daniel Wolff
no flags Details
dmesg log output (69.77 KB, text/x-log)
2011-11-22 10:17 UTC, Daniel Wolff
no flags Details
Xorg log output (23.31 KB, text/x-log)
2011-11-22 10:18 UTC, Daniel Wolff
no flags Details
intel_reg_dumper log output (7.11 KB, text/x-log)
2011-11-22 10:18 UTC, Daniel Wolff
no flags Details
intel_reg_dumper log output with kernel 3.2 (7.11 KB, text/x-log)
2011-11-22 12:12 UTC, Daniel Wolff
no flags Details
dmesg log output with kernel 3.2 (70.08 KB, text/plain)
2011-11-22 12:13 UTC, Daniel Wolff
no flags Details
Always use the LVDS presence pin on PCH (2.53 KB, patch)
2012-02-09 01:35 UTC, Chris Wilson
no flags Details | Splinter Review

Description Daniel Wolff 2011-11-22 10:17:03 UTC
Created attachment 53780 [details]
VBIOS dump

Bug description:

System environment:
-- chipset:
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18) (prog-if 00 [VGA controller])
	Subsystem: Hewlett-Packard Company Device 2aa6
	Flags: bus master, fast devsel, latency 0, IRQ 45
	Memory at fb800000 (64-bit, non-prefetchable) [size=4M]
	Memory at d0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at dc00 [size=8]
	Expansion ROM at <unassigned> [disabled]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [a4] PCI Advanced Features
	Kernel driver in use: i915
	Kernel modules: i915

-- system architecture: i686 (but the problem happens either on 32 or 64-bit)
-- xf86-video-intel/xserver/mesa/libdrm version: 
# apt-cache showpkg libdrm-intel1 
Package: libdrm-intel1
2.4.26-1ubuntu1 (/var/lib/apt/lists/br.archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: pt
                 File: /var/lib/apt/lists/br.archive.ubuntu.com_ubuntu_dists_oneiric_main_i18n_Translation-pt
                  MD5: a0ec25778ef74dfe186d7ace2946e2e9
 Description Language: en
                 File: /var/lib/apt/lists/br.archive.ubuntu.com_ubuntu_dists_oneiric_main_i18n_Translation-en
                  MD5: a0ec25778ef74dfe186d7ace2946e2e9
 Description Language: 
                 File: /var/lib/apt/lists/br.archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages
                  MD5: a0ec25778ef74dfe186d7ace2946e2e9

Reverse Depends: 
  xserver-xorg-video-intel,libdrm-intel1 2.4.23-3~
  libgl1-mesa-dri-experimental,libdrm-intel1 2.4.20
  i965-va-driver,libdrm-intel1 2.4.21
  xserver-xorg-video-intel,libdrm-intel1 2.4.23-3~
  plymouth,libdrm-intel1 2.4.9
  libgl1-mesa-dri,libdrm-intel1 2.4.23-3~
  libgbm1,libdrm-intel1 2.4.20
  libegl1-mesa-drivers,libdrm-intel1 2.4.20
  libdrm-intel1-dbg,libdrm-intel1 2.4.26-1ubuntu1
  libdrm-dev,libdrm-intel1 2.4.26-1ubuntu1
  intel-gpu-tools,libdrm-intel1 2.4.9
2.4.26-1ubuntu1 - libc6 (2 2.3.4) libdrm2 (2 2.4.3) libpciaccess0 (0 (null)) multiarch-support (0 (null)) 
2.4.26-1ubuntu1 - 
Reverse Provides: 
-- kernel: 3.0.0-12-generic
-- Linux distribution: Ubuntu 11.10
-- Machine or mobo model: HP All-In-One Omni Model 200-5320br
-- Display connector: ???? Who knows? I guess it is supposed to be LVDS-1, but the only one detected is VGA-1, and it shows to the system as "disconnected". The computer doesn't have any external VGA or HDMI outputs, however.

Reproducing steps:
Just try to boot up any Linux Live distro on it. It won't boot, the screen won't show anything. If you activate the "nomodeset" however, works almost fine, but without acceleration (obvious, because now the machine is using the VESA standard because of the kernel option), and without high resolutions.
Comment 1 Daniel Wolff 2011-11-22 10:17:46 UTC
Created attachment 53781 [details]
dmesg log output
Comment 2 Daniel Wolff 2011-11-22 10:18:11 UTC
Created attachment 53782 [details]
Xorg log output
Comment 3 Daniel Wolff 2011-11-22 10:18:51 UTC
Created attachment 53783 [details]
intel_reg_dumper log output
Comment 4 Paulo Zanoni 2011-11-22 11:05:29 UTC
Please test against Kernel 3.2 (or the drm-intel-next tree) and then re-post the intel_reg_dumper and the dmesg output.

The driver seems to be failing to the detect the outputs. Both pipes are disabled.
Comment 5 Daniel Wolff 2011-11-22 12:12:55 UTC
Created attachment 53785 [details]
intel_reg_dumper log output with kernel 3.2
Comment 6 Daniel Wolff 2011-11-22 12:13:34 UTC
Created attachment 53786 [details]
dmesg log output with kernel 3.2
Comment 7 Daniel Wolff 2011-11-22 12:34:13 UTC
About the outputs: it's true. The main problem with that machine is that I can't attach an external output device to see exactly where the problem is.

Thanks in advance.

Comment 8 Daniel Wolff 2011-12-27 07:35:41 UTC
Bump? Is there another thing I can do to help debugging the problem? Thanks in advance.

Comment 9 Daniel Wolff 2012-02-02 09:42:24 UTC

I've been doing some tests, particularly at the intel_lvds.c file, where I think the problem may be at.

Around line 660, there is a struct called "dmi_system_id intel_no_lvds[]", where I've put the following entry:

		.callback = intel_no_lvds_dmi_callback,
		.ident = "HP de merda",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
			DMI_MATCH(DMI_PRODUCT_NAME, "200-5320br"),

to match the machine I'm trying to make work. And I've recompiled the kernel with the modification above.

Unfortunately, I had no success. :(

If you guys have any advice to how can I improve the debugging proccess, or anything at all... thanks!

Daniel Wolff
Comment 10 Daniel Wolff 2012-02-02 10:01:37 UTC
... and sorry for the identification above. It was completely not intended :)
Comment 11 Daniel Wolff 2012-02-08 16:52:06 UTC
I think I solved the problem.

Below is the diff from the latest kernel tree from git.kernel.org (3.3.0rc2)

------------------------------------CUT HERE-----------------------------------
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b3b51c4..dca2afa 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -7672,7 +7672,7 @@ static void intel_setup_outputs(struct drm_device *dev)
        bool dpd_is_edp = false;
        bool has_lvds = false;
-       if (IS_MOBILE(dev) && !IS_I830(dev))
+       if (!IS_I830(dev))
                has_lvds = intel_lvds_init(dev);
        if (!has_lvds && !HAS_PCH_SPLIT(dev)) {
                /* disable the panel fitter on everything but LVDS */
------------------------------------CUT HERE-----------------------------------

Removing the IS_MOBILE(dev) verification from the if statement above solves the problem. The computer detects an LVDS output, but because of that specific line, the intel_lvds_init(dev) was not being called, thus not creating the needed connector for the pipe output.

It's kind of weird, though. Apparently, the motherboard of the machine is not mobile, but have an LVDS output :)

I've made some .deb packages available at http://www.rapido.net.br/debs_hpomni200/, because I'm using Ubuntu on my tests.

Can you guys send the code to the upstream, in case the patch does not brake anything else, or can I do it myself? (It's my first kernel patch, I don't know how to proceed) #kernelnewbie :)

I've already tested on 4 machines here at work, and all of them worked perfectly.

Daniel Wolff
Comment 12 Chris Wilson 2012-02-09 01:35:57 UTC
Created attachment 56796 [details] [review]
Always use the LVDS presence pin on PCH
Comment 13 Daniel Vetter 2012-02-15 02:55:05 UTC
Can you please test Chris' patch. Your approach can't be merged because that would enable lvds on a _lot_ of machines that just don't have one, resulting in hilarious amounts of bug reports and issues about it.
Comment 14 Daniel Wolff 2012-02-15 07:28:52 UTC
I can confirm that the Chris Wilson's patch works for me.

Thanks a lot for the help!

Daniel Wolff
Comment 15 Daniel Vetter 2012-02-15 07:44:56 UTC
Patch is on track to -next, marking as fixed (worksforme is for issues that can't be reproduced).
Comment 16 Florian Mickler 2012-04-05 06:53:53 UTC
A patch referencing this bug report has been merged in Linux v3.4-rc1:

commit f3cfcba60fcfdce89f9332dc6c31137309d33c8a
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Feb 9 09:35:53 2012 +0000

    drm/i915/lvds: Always use the presence pin for LVDS on PCH

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.