X.Org skrollausjumittelun korjaus (Ubuntu 14.10, Lenovo Z50-70)

X.Org alkoi oireilla Heidin uudessa Lenovo Z50-70 läppärissä, jossa on käytössä Ubuntu 14.10. Ongelma ilmeni ruudun vierityksen jumitteluna ja ajoittaisena ikkunoiden hallinnan kaatuiluna.

Selkeiten se toistui Facebookin uutisvirtaa touchpadilla tai nuolinäppäimillä skrollatessa, jolloin siitä tuli käytännössä käyttökelvoton.

Onneksi tästä jäi myös selkeät jäljet dmesg -lokiin, jonne alkoi ilmestyä seuraavan kaltaisia rivejä:

[drm] Enabling RC6 states: RC6 on, RC6p off, RC6pp off
[drm] stuck on render ring
[drm] GPU HANG: ecode 0:0x87d3bffa, in Xorg [1501], reason: Ring hung, action: reset

Ratkaisu

Ylläoleva lokipätkä helpotti asian selvittelyä ja syypääksi paljastui Haswell:iin integroitu näytönohjain ja tämän i915 kernel moduli, johon liittyen löytyi avulias kommentti Compton projektin bugikannasta.

Kokeilin siis ongelman kiertämistä kernel parametreilla: drm.vblankoffdelay=1 i915.semaphores=0 i915.modeset=1 i915.usemmioflip=1 i915.enable_ppgtt=1, jolloin toiminta oli taas normaalia.

Asetuksista saa pysyvän etsimällä tiedostosta /etc/default/grub muuttujan GRUB_CMDLINE_LINUX määrittely ja lisäämällä paremetrit siihen. Oletuksena muuttuja on Ubuntu 14.10:n tapauksessa tyhjä, jolloin siitä tulee:

GRUB_CMDLINE_LINUX="drm.vblankoffdelay=1 i915.semaphores=0 i915.modeset=1 i915.use_mmio_flip=1 i915.enable_ppgtt=1"

Tätä käytetään /etc/grub.d hakemiston skripteissä, jotka luovat varsinaiset Grub -asetusten käynnistysvalinnat, ja ne täytyy muutoksen jälkeen generoida uudelleen komennolla:

$ sudo update-grub
blog comments powered by Disqus