[Intel-gfx] Disabling a second monitor while in frame buffer

Jonathan Phénix greaterd at gmail.com
Tue Dec 11 16:05:31 CET 2012


On Mon, Dec 10, 2012 at 5:44 PM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> On Mon, 10 Dec 2012 17:03:05 -0500
> Jonathan Phénix <greaterd at gmail.com> wrote:
>
>> Hi,
>>
>> on my machine, I have 2 monitors attached, they are seen as HMDI
>> connectors by the software. The 1st monitor is connected using a DVI-D
>> cable while the second one uses the HDMI port of the machine and
>> connects to the monitor using a DVI-D connector. I want to use the
>> frame buffer only on the first monitor while the machine is initially
>> booting and then use both monitors while Xorg is running.
>>
>> As mentioned near the end of this page:
>>
>> http://intellinuxgraphics.org/documentation.html
>>
>> it's possible to control this behavior using the kernel command line.
>> I want to force the resolution of the first monitor to 1024x768 while
>> the second monitor is disabled. I used the following to do it:
>>
>> video=HDMI-A-1:1024x768 video=HDMI-A-2:d
>>
>> It's almost working, the second monitor goes black as expected and the
>> first one switch to 1024x768.
>>
>> The first problem with that configuration, is that every 10 seconds,
>> the first monitor will go black for 3 seconds. If I remove
>> "video=HDMI-A-2:d" or the second monitor is physically not attached, I
>> don't have this problem. If I add "drm.debug=0x04" to the kernel
>> command line, each time the first monitor goes black, I get the
>> following debugging output in 'dmesg':
>
> This sounds like bogus polling.  I think Daniel has fixed this in the
> -queued branch, but you can use drm_kms_helper.poll=0 on your boot line
> to avoid it.

Thanks for the quick feedback, I confirm that "drm_kms_helper.poll=0"
is a proper workaround for this issue on my setup.

>> Additionally, the second monitor fails to be enabled properly in Xorg
>> when it was disabled in frame buffer mode, even if I use:
>>
>> Option "Enable"  "true"
>>
>> in the right monitor section as documented at:
>>
>> http://intellinuxgraphics.org/dualhead.html
>>
>> This is the monitor information for in "Xorg.log" when it is working properly:
>>
>> ---
>> [    76.352] (II) intel(0): Printing probed modes for output HDMI2
>> [    76.352] (II) intel(0): Modeline "1360x768"x59.8   84.75  1366
>> 1431 1567 1776  768 771 781 798 -hsync +vsync (47.7 kHz UP)
>> [    76.352] (II) intel(0): Modeline "1680x1050"x60.0  146.25  1680
>> 1960 2136 2240  1050 1053 1059 1089 -hsync +vsync (65.3 kHz eP)
>> [    76.352] (II) intel(0): Modeline "1920x1200"x60.0  154.00  1920
>> 1968 2000 2080  1200 1203 1209 1235 +hsync -vsync (74.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "1600x1200"x60.0  162.00  1600
>> 1664 1856 2160  1200 1201 1204 1250 +hsync +vsync (75.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "1280x1024"x75.0  135.00  1280
>> 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "1280x1024"x60.0  108.00  1280
>> 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "1440x900"x59.9  106.50  1440
>> 1520 1672 1904  900 903 909 934 -hsync +vsync (55.9 kHz e)
>> [    76.352] (II) intel(0): Modeline "1280x960"x60.0  108.00  1280
>> 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "1280x800"x59.8   83.50  1280
>> 1352 1480 1680  800 803 809 831 +hsync -vsync (49.7 kHz e)
>> [    76.352] (II) intel(0): Modeline "1152x864"x75.0  108.00  1152
>> 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
>> [    76.352] (II) intel(0): Modeline "1024x768"x75.1   78.80  1024
>> 1040 1136 1312  768 769 772 800 +hsync +vsync (60.1 kHz e)
>> [    76.352] (II) intel(0): Modeline "1024x768"x70.1   75.00  1024
>> 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)
>> [    76.352] (II) intel(0): Modeline "1024x768"x60.0   65.00  1024
>> 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
>> [    76.352] (II) intel(0): Modeline "1024x768"x87.0   44.90  1024
>> 1032 1208 1264  768 768 776 817 interlace +hsync +vsync (35.5 kHz e)
>> [    76.352] (II) intel(0): Modeline "800x600"x72.2   50.00  800 856
>> 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)
>> [    76.352] (II) intel(0): Modeline "800x600"x75.0   49.50  800 816
>> 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)
>> [    76.352] (II) intel(0): Modeline "800x600"x60.3   40.00  800 840
>> 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
>> [    76.352] (II) intel(0): Modeline "800x600"x56.2   36.00  800 824
>> 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
>> [    76.352] (II) intel(0): Modeline "640x480"x72.8   31.50  640 664
>> 704 832  480 489 491 520 -hsync -vsync (37.9 kHz e)
>> [    76.352] (II) intel(0): Modeline "640x480"x75.0   31.50  640 656
>> 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e)
>> [    76.352] (II) intel(0): Modeline "640x480"x66.7   30.24  640 704
>> 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e)
>> [    76.352] (II) intel(0): Modeline "640x480"x60.0   25.20  640 656
>> 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
>> [    76.352] (II) intel(0): Modeline "720x400"x70.1   28.32  720 738
>> 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
>> [    76.378] (II) intel(0): EDID for output DP2
>> [    76.378] (II) intel(0): Output VGA1 disconnected
>> [    76.378] (II) intel(0): Output HDMI1 connected
>> [    76.378] (II) intel(0): Output DP1 disconnected
>> [    76.378] (II) intel(0): Output HDMI2 enabled by config file
>> [    76.378] (II) intel(0): Output DP2 disconnected
>> [    76.378] (II) intel(0): Using user preference for initial modes
>> [    76.378] (II) intel(0): Output HDMI1 using initial mode 1366x768
>> [    76.378] (II) intel(0): Output HDMI2 using initial mode 1360x768
>> ---
>>
>> And when it's not as a side effect of being disabled in frame buffer mode:
>>
>> ---
>> [   229.480] (II) intel(0): Printing probed modes for output HDMI2
>> [   229.480] (II) intel(0): Modeline "1024x768"x60.0   65.00  1024
>> 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz d)
>> [   229.480] (II) intel(0): Modeline "800x600"x60.3   40.00  800 840
>> 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz d)
>> [   229.480] (II) intel(0): Modeline "640x480"x59.9   25.18  640 656
>> 752 800  480 490 492 525 -hsync -vsync (31.5 kHz d)
>> [   229.505] (II) intel(0): EDID for output DP2
>> [   229.505] (II) intel(0): Output VGA1 disconnected
>> [   229.505] (II) intel(0): Output HDMI1 connected
>> [   229.505] (II) intel(0): Output DP1 disconnected
>> [   229.505] (II) intel(0): Output HDMI2 enabled by config file
>> [   229.505] (II) intel(0): Output DP2 disconnected
>> [   229.505] (II) intel(0): Using user preference for initial modes
>> [   229.505] (II) intel(0): Output HDMI1 using initial mode 1366x768
>> [   229.505] (II) intel(0): Output HDMI2 using initial mode 1024x768
>> ---
>>
>> I suspect in this case that the second monitor fails to enumerate all
>> the supported modes for a reason I can't identify.
>>
>> I am using a software stack that is very close to the one proposed at:
>>
>> http://intellinuxgraphics.org/2012.07.html
>>
>> built from source for a x86_64 architecture using Sandybridge chipset.
>> I also tried with the current stable kernel (3.6.9), same problem. Any
>> ideas what could be the problem(s)?
>
> Yeah the video= param will force detection to fail for outputs set as
> 'd' on the boot line.  Sounds like we might need another option that
> will let you disable it just for the fbcon and not generally.

Is there a way from user land (sysfs, procfs, custom DRM API, etc...)
to revert the disabling? Otherwise, could a quick hack in the kernel
could be devised? A pointer to the right functions in the kernel would
be a good starting point.

Thanks,

- Jonathan Phénix

>
> --
> Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list