[Intel-gfx] Playing with the xf86-video-intel code

Bálint Pámer pbalint at gmail.com
Sun May 31 02:50:26 PDT 2015


Hello!

In a nutshell:
I have a problem where my linux box hooked up to my sharp lcd tv can only
output 1080p at 30hz OR 1080i at 60hz under linux (opensuse 13.2), but CAN output
1080p at 60hz under windows. (meaning in the kde display configuration, 30hz
is the highest value)
Also:
xrandr --verbose gives me an edid:
00 ff ff ff ff ff ff 00 4d 10 99 10 01 01 01 01
ff 15 01 03 80 59 32 78 0a 68 37 a4 54 48 9a 25
0f 4a 4c 3f ef 80 d1 00 d1 c0 81 19 90 59 01 01
01 01 01 01 01 01 01 1d 80 18 71 1c 16 20 58 2c
25 00 10 09 00 00 00 9e 01 1d 00 72 51 d0 1e 20
6e 28 55 00 10 09 00 00 00 1e 00 00 00 fc 00 53
48 41 52 50 20 4c 43 44 0a 0a 20 20 00 00 00 fd
00 31 3d 0f 2e 08 00 0a 20 20 20 20 20 20 01 53
02 03 24 71 50 01 02 04 85 06 11 13 14 15 03 07
12 16 1f 20 10 23 09 07 01 83 01 00 00 66 03 0c
00 20 00 80 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00
04 03 00 00 00 18 8c 0a a0 14 51 f0 16 00 26 7c
43 00 04 03 00 00 00 99 01 1d 80 d0 72 1c 16 20
10 2c 25 80 10 09 00 00 00 9f 01 1d 00 bc 52 d0
1e 20 b8 28 55 40 10 09 00 00 00 1e 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e2

This pasted to: http://www.edidreader.com/
Shows that I have this mode: (block1/video data block, last entry)
Native: FALSE
VIC: 16
Format: 1920x1080p
Field Rate: 59.94Hz/60Hz
Picture AR: 16:9
Pixel AR: 1:1

Yet after the edid listing, xrandr --verbose only shows these 1080 modes:
  1920x1080i (0x48) 74.250MHz +HSync +VSync Interlace +preferred
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock
33.75KHz
        v: height 1080 start 1084 end 1094 total 1125           clock
60.00Hz
  1920x1080i (0xa8) 74.250MHz +HSync +VSync Interlace
        h: width  1920 start 2448 end 2492 total 2640 skew    0 clock
28.12KHz
        v: height 1080 start 1084 end 1094 total 1125           clock
50.00Hz
  1920x1080 (0xa9) 74.250MHz +HSync +VSync
        h: width  1920 start 2558 end 2602 total 2750 skew    0 clock
27.00KHz
        v: height 1080 start 1084 end 1089 total 1125           clock
24.00Hz
  1920x1080i (0xaa) 74.176MHz +HSync +VSync Interlace *current
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock
33.72KHz
        v: height 1080 start 1084 end 1094 total 1125           clock
59.94Hz
  1920x1080 (0xab) 74.176MHz +HSync +VSync
        h: width  1920 start 2558 end 2602 total 2750 skew    0 clock
26.97KHz
        v: height 1080 start 1084 end 1089 total 1125           clock
23.98Hz


So since I've a c/c++ background I thought I'd investigate the problem
myself:
I've built the srpm with a small logging addition:
In intel_display_c: I've added a log line each to:
mode_from_kmode() and intel_output_panel_edid(),
since they both are called from intel_output_get_modes().
(I'm logging with:
    mylog("%s: %ix%i@%f\n", mode->name, mode->HTotal, mode->VTotal,
calculate_refresh(mode->HTotal, mode->VTotal, mode->Clock, mode->Flags));
This will save the log message to a text file in my home directory. Since
xorg is running as root, it should have access to it, right?)

Now, after overwriting /usr/lib64/xorg/modules/drivers/intel_drv.so with my
version, xorg immediately crashed:
(xorg.log.old)
[ 16177.244] (II) LoadModule: "fbdevhw"
[ 16177.244] (II) Loading /usr/lib64/xorg/modules/libfbdevhw.so
[ 16177.244] (II) Module fbdevhw: vendor="X.Org Foundation"
[ 16177.244]     compiled for 1.16.1, module version = 0.0.2
[ 16177.244]     ABI class: X.Org Video Driver, version 18.0
[ 16177.244] (WW) Falling back to old probe method for vesa
[ 16179.440] (EE) intel(0): [drm] failed to set drm interface version:
Permission denied [13].
[ 16179.440] (II) intel(0): [drm] Contents of
'/sys/kernel/debug/dri/0/clients':
[ 16179.440] (II) intel(0): [drm] a dev    pid    uid    magic
[ 16179.440] (II) intel(0): [drm]
[ 16179.440] (II) intel(0): [drm] y   0  6360     0          0
[ 16179.440] (II) intel(0): [drm] y   0   638     0          0
[ 16179.440] (EE) intel(0): Failed to claim DRM device.
[ 16179.440] (II) UnloadModule: "intel"
[ 16179.440] (EE) Screen(s) found, but none have a usable configuration.

Strangely, xorg shows no error after a reboot (so my module seems to be
working), yet I do not see my log entries when calling xrandr --verbose
again.

So my questions are:
-Am I looking at the right location? (I'm looking for the deepest location
where the supported resolution list is assembled/calculated/parsed)
-Is there a way to dynamically reload the intel_drv module?

Thanks:
Bálint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20150531/42daab79/attachment.html>


More information about the Intel-gfx mailing list