[Intel-gfx] 830GM still woes
Thomas Richter
thor at math.tu-berlin.de
Fri May 16 16:02:48 CEST 2014
Hi Daniel, dear list,
just tried the latest nightly build of 3.15.0+, and I'm sorry to say
that the watermark configuration of the 830GM is still off.
This is what I get from the kernel: (not to be taken too serious, but
humor is the only thing that keeps me from getting seriously anoyed
after so much time of the same bug...)
May 16 15:15:42 pike kernel: [ 6.705950]
[drm:drm_calc_vbltimestamp_from_scanoutpos] crtc 1: Noop due to
uninitialized mode.
May 16 15:15:42 pike kernel: [ 6.710930] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:42 pike kernel: [ 6.710936] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:42 pike kernel: [ 6.710942] [drm:i9xx_update_wm] FIFO
watermarks - A: 45, B: 46
May 16 15:15:42 pike kernel: [ 6.710947] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 45, B: 46, C: 2, SR 1
May 16 15:15:42 pike kernel: [ 6.710953] [drm:intel_sanitize_crtc]
[CRTC:7] hw state adjusted, was enabled, now disabled
Watermarks of 45 and 46 upon initialization. Weird, but it gets weirder...
May 16 15:15:42 pike kernel: [ 6.842042] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:42 pike kernel: [ 6.842046] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:42 pike kernel: [ 6.842050] [drm:i9xx_update_wm] FIFO
watermarks - A: 45, B: 46
May 16 15:15:42 pike kernel: [ 6.842053] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 45, B: 46, C: 2, SR 1
May 16 15:15:42 pike kernel: [ 6.842061]
[drm:drm_calc_timestamping_constants] crtc 5: hwmode: htotal 1688,
vtotal 1066, vdisplay 1024
May 16 15:15:42 pike kernel: [ 6.842065]
[drm:drm_calc_timestamping_constants] crtc 5: clock 108000 kHz framedur
16661185 linedur 15629, pixeldur 9
May 16 15:15:42 pike kernel: [ 6.847625]
[drm:i9xx_update_primary_plane] Writing base 00060000 00000000 0 0 5120
May 16 15:15:42 pike kernel: [ 6.847633] [drm:intel_crtc_mode_set]
[ENCODER:9:DAC-9] set [MODE:0:1280x1024]
May 16 15:15:42 pike kernel: [ 6.848287] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:42 pike kernel: [ 6.848290] [drm:intel_calculate_wm]
FIFO entries required for mode: 68
May 16 15:15:42 pike kernel: [ 6.848292] [drm:intel_calculate_wm]
FIFO watermark level: -23
May 16 15:15:42 pike kernel: [ 6.848295] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:42 pike kernel: [ 6.848297] [drm:i9xx_update_wm] FIFO
watermarks - A: 1, B: 46
May 16 15:15:42 pike kernel: [ 6.848300] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 1, B: 46, C: 2, SR 1
May 16 15:15:42 pike kernel: [ 6.856893]
[drm:intel_connector_check_state] [CONNECTOR:8:VGA-1]
May 16 15:15:42 pike kernel: [ 6.856897] [drm:check_encoder_state]
[ENCODER:9:DAC-9]
May 16 15:15:42 pike kernel: [ 6.856901] [drm:check_encoder_state]
[ENCODER:10:None-10]
Ok, so that computes a watermark of -23 for pipe A (WTF?) then rounded
up to +1 (but still too small, needs to be +8), B remains at +46 even
though an external monitor is connected.
May 16 15:15:42 pike kernel: [ 6.857023] [drm:intel_dump_pipe_config]
adjusted mode:
May 16 15:15:42 pike kernel: [ 6.857029]
[drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 60 65000 1024
1048 1184 1344 768 771 777 806 0x8 0x5
May 16 15:15:42 pike kernel: [ 6.857034]
[drm:intel_dump_crtc_timings] crtc timings: 65000 1024 1048 1184 1344
768 771 777 806, type: 0x8 flags: 0x5
May 16 15:15:42 pike kernel: [ 6.857036] [drm:intel_dump_pipe_config]
port clock: 65000
May 16 15:15:42 pike kernel: [ 6.857038] [drm:intel_dump_pipe_config]
pipe src size: 1024x768
May 16 15:15:42 pike kernel: [ 6.857040] [drm:intel_dump_pipe_config]
gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
May 16 15:15:42 pike kernel: [ 6.857043] [drm:intel_dump_pipe_config]
pch pfit: pos: 0x00000000, size: 0x00000000, disabled
May 16 15:15:42 pike kernel: [ 6.857045] [drm:intel_dump_pipe_config]
ips: 0
May 16 15:15:42 pike kernel: [ 6.857047] [drm:intel_dump_pipe_config]
double wide: 0
May 16 15:15:42 pike kernel: [ 6.857052]
[drm:drm_calc_timestamping_constants] crtc 7: hwmode: htotal 1344,
vtotal 806, vdisplay 768
May 16 15:15:42 pike kernel: [ 6.857055]
[drm:drm_calc_timestamping_constants] crtc 7: clock 65000 kHz framedur
16665600 linedur 20676, pixeldur 15
May 16 15:15:42 pike kernel: [ 6.868773]
[drm:i9xx_update_primary_plane] Writing base 00060000 00000000 0 0 5120
May 16 15:15:42 pike kernel: [ 6.868784] [drm:intel_crtc_mode_set]
[ENCODER:10:None-10] set [MODE:0:1024x768]
May 16 15:15:42 pike kernel: [ 6.869450] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:42 pike kernel: [ 6.869454] [drm:intel_calculate_wm]
FIFO entries required for mode: 68
May 16 15:15:42 pike kernel: [ 6.869456] [drm:intel_calculate_wm]
FIFO watermark level: -23
May 16 15:15:42 pike kernel: [ 6.869459] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:42 pike kernel: [ 6.869461] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:42 pike kernel: [ 6.869463] [drm:intel_calculate_wm]
FIFO watermark level: 5
May 16 15:15:42 pike kernel: [ 6.869466] [drm:i9xx_update_wm] FIFO
watermarks - A: 1, B: 5
May 16 15:15:42 pike kernel: [ 6.869469] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 1, B: 5, C: 2, SR 1
Ah, finally the driver notes that there's an external monitor!
Watermark still at -23, rounded up to +1. Nice try, but no dice.
May 16 15:15:52 pike kernel: [ 31.091473] [drm:intel_dump_pipe_config]
requested mode:
May 16 15:15:52 pike kernel: [ 31.091481]
[drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 0 65000 1024
1048 1184 1344 768 771 777 806 0x0 0xa
May 16 15:15:52 pike kernel: [ 31.091485] [drm:intel_dump_pipe_config]
adjusted mode:
May 16 15:15:52 pike kernel: [ 31.091493]
[drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 0 65000 1024
1048 1184 1344 768 771 777 806 0x0 0xa
May 16 15:15:52 pike kernel: [ 31.091500]
[drm:intel_dump_crtc_timings] crtc timings: 65000 1024 1048 1184 1344
768 771 777 806, type: 0x0 flags: 0xa
May 16 15:15:52 pike kernel: [ 31.091504] [drm:intel_dump_pipe_config]
port clock: 65000
May 16 15:15:52 pike kernel: [ 31.091508] [drm:intel_dump_pipe_config]
pipe src size: 1024x768
May 16 15:15:52 pike kernel: [ 31.091513] [drm:intel_dump_pipe_config]
gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
May 16 15:15:52 pike kernel: [ 31.091518] [drm:intel_dump_pipe_config]
pch pfit: pos: 0x00000000, size: 0x00000000, disabled
May 16 15:15:52 pike kernel: [ 31.091522] [drm:intel_dump_pipe_config]
ips: 0
May 16 15:15:52 pike kernel: [ 31.091526] [drm:intel_dump_pipe_config]
double wide: 0
May 16 15:15:52 pike kernel: [ 31.091546]
[drm:drm_calc_vbltimestamp_from_scanoutpos] crtc 0 : v 5 p(0,73)@
31.91540 -> 31.90400 [e 1 us, 0 rep]
May 16 15:15:52 pike kernel: [ 31.112062] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:52 pike kernel: [ 31.112071] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:52 pike kernel: [ 31.112077] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:52 pike kernel: [ 31.112081] [drm:intel_calculate_wm]
FIFO watermark level: 5
May 16 15:15:52 pike kernel: [ 31.112086] [drm:i9xx_update_wm] FIFO
watermarks - A: 45, B: 5
May 16 15:15:52 pike kernel: [ 31.112091] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 45, B: 5, C: 2, SR 1
May 16 15:15:52 pike kernel: [ 31.112102]
[drm:drm_calc_timestamping_constants] crtc 5: hwmode: htotal 1344,
vtotal 806, vdisplay 768
May 16 15:15:52 pike kernel: [ 31.112108]
[drm:drm_calc_timestamping_constants] crtc 5: clock 65000 kHz framedur
16665600 linedur 20676, pixeldur 15
May 16 15:15:52 pike kernel: [ 31.126344]
[drm:i9xx_update_primary_plane] Writing base 00800000 00000000 0 0 4096
May 16 15:15:52 pike kernel: [ 31.126365] [drm:intel_crtc_mode_set]
[ENCODER:9:DAC-9] set [MODE:0:1024x768]
May 16 15:15:52 pike kernel: [ 31.127030] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:52 pike kernel: [ 31.127036] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:52 pike kernel: [ 31.127040] [drm:intel_calculate_wm]
FIFO watermark level: 4
May 16 15:15:52 pike kernel: [ 31.127045] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:52 pike kernel: [ 31.127049] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:52 pike kernel: [ 31.127053] [drm:intel_calculate_wm]
FIFO watermark level: 5
May 16 15:15:52 pike kernel: [ 31.127058] [drm:i9xx_update_wm] FIFO
watermarks - A: 4, B: 5
May 16 15:15:52 pike kernel: [ 31.127063] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 4, B: 5, C: 2, SR 1
May 16 15:15:52 pike kernel: [ 31.132908]
[drm:intel_connector_check_state] [CONNECTOR:11:LVDS-1]
May 16 15:15:52 pike kernel: [ 31.132919]
[drm:intel_connector_check_state] [CONNECTOR:8:VGA-1]
May 16 15:15:52 pike kernel: [ 31.132925] [drm:check_encoder_state]
[ENCODER:9:DAC-9]
May 16 15:15:52 pike kernel: [ 31.132931] [drm:check_encoder_state]
[ENCODER:10:None-10]
May 16 15:15:52 pike kernel: [ 31.132936] [drm:check_crtc_state] [CRTC:5]
May 16 15:15:52 pike kernel: [ 31.132953] [drm:check_crtc_state] [CRTC:7]
Still later: Ok, why should I use pipe A altogether... Probably because
there are two monitors, maybe? Watermarks at +4 and +5. Better, but
still wrong.
Later...
May 16 15:15:57 pike kernel: [ 36.435245] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:57 pike kernel: [ 36.435261] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:57 pike kernel: [ 36.435265] [drm:intel_calculate_wm]
FIFO watermark level: 4
May 16 15:15:57 pike kernel: [ 36.435270] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:57 pike kernel: [ 36.435275] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:57 pike kernel: [ 36.435279] [drm:intel_calculate_wm]
FIFO watermark level: 5
May 16 15:15:57 pike kernel: [ 36.435284] [drm:i9xx_update_wm] FIFO
watermarks - A: 4, B: 5
May 16 15:15:57 pike kernel: [ 36.435289] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 4, B: 5, C: 2, SR 1
May 16 15:15:57 pike kernel: [ 36.435320] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_CURSOR
May 16 15:15:57 pike kernel: [ 36.435333] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_CURSOR
May 16 15:15:57 pike kernel: [ 36.435682] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:15:57 pike kernel: [ 36.435696] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:57 pike kernel: [ 36.435700] [drm:intel_calculate_wm]
FIFO watermark level: 4
May 16 15:15:57 pike kernel: [ 36.435705] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:15:57 pike kernel: [ 36.435710] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:15:57 pike kernel: [ 36.435713] [drm:intel_calculate_wm]
FIFO watermark level: 5
May 16 15:15:57 pike kernel: [ 36.435719] [drm:i9xx_update_wm] FIFO
watermarks - A: 4, B: 5
May 16 15:15:57 pike kernel: [ 36.435724] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 4, B: 5, C: 2, SR 1
Ok, at least a bit of consistency. We're at +4,+5. Too bad, it's off...
Later...
May 16 15:35:34 pike kernel: [ 1213.520226]
[drm:drm_calc_vbltimestamp_from_scanoutpos] crtc 1 : v 5 p(0,146)@
1213.520193 -> 1213.517175 [e 1 us, 0 rep]
May 16 15:35:34 pike kernel: [ 1213.575897] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:35:34 pike kernel: [ 1213.575916] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:35:34 pike kernel: [ 1213.575920] [drm:intel_calculate_wm]
FIFO watermark level: 4
May 16 15:35:34 pike kernel: [ 1213.575926] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:35:34 pike kernel: [ 1213.575931] [drm:i9xx_update_wm] FIFO
watermarks - A: 4, B: 46
May 16 15:35:34 pike kernel: [ 1213.575937] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 4, B: 46, C: 2, SR 1
May 16 15:35:34 pike kernel: [ 1213.577316]
[drm:intel_connector_check_state] [CONNECTOR:8:VGA-1]
May 16 15:35:34 pike kernel: [ 1213.577328] [drm:check_encoder_state]
[ENCODER:9:DAC-9]
May 16 15:35:34 pike kernel: [ 1213.577334] [drm:check_encoder_state]
[ENCODER:10:None-10]
May 16 15:35:34 pike kernel: [ 1213.577342] [drm:check_crtc_state] [CRTC:5]
May 16 15:35:34 pike kernel: [ 1213.577362] [drm:check_crtc_state] [CRTC:7]
May 16 15:35:34 pike kernel: [ 1213.577400] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.577414] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.577427] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.577436] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.577448] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_SETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.577476]
[drm:drm_calc_vbltimestamp_from_scanoutpos] crtc 0 : v 5 p(0,509)@
1213.577468 -> 1213.566943 [e 1 us, 0 rep]
May 16 15:35:34 pike kernel: [ 1213.584069] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:35:34 pike kernel: [ 1213.584079] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:35:34 pike kernel: [ 1213.584085] [drm:i9xx_update_wm] FIFO
watermarks - A: 45, B: 46
May 16 15:35:34 pike kernel: [ 1213.584090] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 45, B: 46, C: 2, SR 1
May 16 15:35:34 pike kernel: [ 1213.584957] [drm:check_encoder_state]
[ENCODER:9:DAC-9]
May 16 15:35:34 pike kernel: [ 1213.584964] [drm:check_encoder_state]
[ENCODER:10:None-10]
May 16 15:35:34 pike kernel: [ 1213.584970] [drm:check_crtc_state] [CRTC:5]
May 16 15:35:34 pike kernel: [ 1213.584983] [drm:check_crtc_state] [CRTC:7]
Huh, let's try something completely new! +45,+46. Well, guess what,
doesn't work...
May 16 15:35:34 pike kernel: [ 1213.650767] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.650790] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.650807] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.650816] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.650829] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_SETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651004] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651014] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651023] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651031] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651041] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, DRM_IOCTL_MODE_SETPROPERTY
May 16 15:35:34 pike kernel: [ 1213.651730] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) A: 47
May 16 15:35:34 pike kernel: [ 1213.651737] [drm:intel_calculate_wm]
FIFO entries required for mode: 41
May 16 15:35:34 pike kernel: [ 1213.651741] [drm:intel_calculate_wm]
FIFO watermark level: 4
May 16 15:35:34 pike kernel: [ 1213.651746] [drm:i830_get_fifo_size]
FIFO size - (0x00017e5f) B: 48
May 16 15:35:34 pike kernel: [ 1213.651752] [drm:i9xx_update_wm] FIFO
watermarks - A: 4, B: 46
May 16 15:35:34 pike kernel: [ 1213.651757] [drm:i9xx_update_wm] Setting
FIFO watermarks - A: 4, B: 46, C: 2, SR 1
May 16 15:35:34 pike kernel: [ 1213.669006]
[drm:intel_connector_check_state] [CONNECTOR:8:VGA-1]
May 16 15:35:34 pike kernel: [ 1213.669024] [drm:check_encoder_state]
[ENCODER:9:DAC-9]
May 16 15:35:34 pike kernel: [ 1213.669030] [drm:check_encoder_state]
[ENCODER:10:None-10]
May 16 15:35:34 pike kernel: [ 1213.669038] [drm:check_crtc_state] [CRTC:5]
May 16 15:35:34 pike kernel: [ 1213.669058] [drm:check_crtc_state] [CRTC:7]
May 16 15:35:34 pike kernel: [ 1213.669123] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, I915_GEM_THROTTLE
May 16 15:35:34 pike kernel: [ 1213.670062] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, I915_GEM_PWRITE
May 16 15:35:34 pike kernel: [ 1213.670104] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, I915_GEM_EXECBUFFER2
May 16 15:35:34 pike kernel: [ 1213.670117] [drm:i915_gem_do_execbuffer]
UXA submitting garbage DR4, fixing up
May 16 15:35:34 pike kernel: [ 1213.670227] [drm:drm_ioctl] pid=3040,
dev=0xe200, auth=1, I915_GEM_MADVISE
Ok, why not disable pipe B again, and use a wrong value for pipe A.
Guess what... still not working...
Anyhow, you get the story. The fix is actually simple.
1) Detect that you have a 830GM or 835GM.
2) If the value for the watermark register is lower than 8, set it to 8.
Done. Added to the kernel, stuff works.
Know what? Basel isn't far from Stuttgart. I'm close to catch a train
and promise a good "Schocki" just to get this fixed. (-; I'll bring the
R31 along.
It's not that I haven't had a patch for it. Really trivial. I wonder
what keeps you from adding this to the kernel and just make things working?
Thanks, enjoy, and have a nice weekend!
Greetings,
Thomas
More information about the Intel-gfx
mailing list