Intel 855GM xorg driver v1.6.3 , MergedFB, suspend to RAM

Yaroslav Rastrigin yarick at
Wed Aug 9 13:43:49 PDT 2006

first, I want to thank all involved with xorg and this specific driver development, 
release after release new features are added and bugs are fixed.
I would like to provide some feedback about encountered problema, as well as probably offer some help. 
First, my setup: AOpen 1551AW1 barebone (fairly standard Centrino barebone, P-M CPU, I855GM integrated graphics, 
1280x800 12" wide internal LCD). Typically I'm using this system connected to external LCD/keyboard , 
but sometimes I unplug it and work using internal LCD, so ability to drive two output devices 
is a must for me. MergedFB, introduced in 1.6.2, is a real helper - now I don't need to kill my kmail/mozilla/opera sessions if 
I'm switching output devices. Ability to suspend-to-ram and successfully resume is also fairly critical.
Well, 1.6.0 version lacked MergedFB, but was fairly stable WRT to support of suspend-to-ram, i.e. resume was proper and complete. 
1.6.1 and newer, OTOH, do not recover correct video mode on internal wide LCD and do not enable cursor on external monitor. 
git bisect log :
git-bisect start
# good: [692a4a4bafd4cab197b761cda22368581b78f996] Bump to 1.6.0.
git-bisect good 692a4a4bafd4cab197b761cda22368581b78f996
# bad: [ec1646d3565135c1ff4c4e723f863ee347c41d32] Fix a build problem
git-bisect bad ec1646d3565135c1ff4c4e723f863ee347c41d32
# bad: [a73ab7f0e6e3b0462e05c0031ffd602ed3e2bcd4] additions for rotation fixes
git-bisect bad a73ab7f0e6e3b0462e05c0031ffd602ed3e2bcd4
# good: [f2967a2f5f47b636b2445fa69dbc3ec79e065c90] Video overlay gamma bounds checking must be done bytewise.
git-bisect good f2967a2f5f47b636b2445fa69dbc3ec79e065c90
# bad: [f02268b2091c9a785d26e82bcb35a8b713463072] Don't rely on register check to find out
git-bisect bad f02268b2091c9a785d26e82bcb35a8b713463072
# good: [6812b5382077e5d3f421aceeeb2f337e9b3f570e] intel: fix VT switch DRI locking
git-bisect good 6812b5382077e5d3f421aceeeb2f337e9b3f570e
# good: [672c3d18dbb405095e465126053ff887d891409e] Only mark rotation flags after initial screen setup.
git-bisect good 672c3d18dbb405095e465126053ff887d891409e

quickly led to this commit:
diff-tree f02268b2091c9a785d26e82bcb35a8b713463072 (from 672c3d18dbb405095e465126053ff887d891409e)
Author: Alan Hourihane <alanh at>
Date:   Mon Jun 12 12:16:58 2006 +0100
, more specifically , to removal of additional check whether we need to warmboot Video BIOS on resume .
      CARD32 temp = pI830->pipe ? INREG(PIPEBCONF) : INREG(PIPEACONF);
      if (!I830Set640x480(pScrn) || !(temp & 0x80000000)) {
Indeed, reverting this part of commit in my local copy of the tree (master branch) allows STR to work reliably again for me. 
I've read and understood comments before this code, but, probably, it could be put under specific config file option, 
something like Option "AggressiveWarmBoot" "on/off" ?

lack of documentation is totally understandable, and often sourcecode is the only mean to retrieve specific config options.
My experiments with aforementioned setup are fairly successfull for now, I'm able to set up 1280x1024 virtual screen , 
with internal LCD properly displaying part of this space and scrolling around. 
Someone experimenting with MergedFB may find my config useful:

Section "Device"
    Identifier  "i855GM"
    VendorName  "Intel"
    BoardName   "i855GME"
    Driver      "i810"
    VideoRam    32768
    Option      "MonitorLayout" "CRT,LFP"
    Option      "XVideo"        "on"
    Option      "DRI"           "off"
    Screen      0
    BusID       "PCI:0:2:0"
    Option      "MergedFB"      "on"
    Option      "SecondPosition"        "LeftOf"
    Option      "MetaModes"     "1280x800-1280x1024"
#    Option     "NoMergedXinerama" "on"
    Option      "SWCursor"      "on"

Section "DRI"
    Group  0
    Mode 0666

Section "Screen"
    Identifier  "MergedFB"
    Device      "i855GM"
    Monitor     "L1730S"
    DefaultColorDepth 16
    Subsection "Display"
        Depth       16
        Modes       "1280x1024" "1280x800" "1024x768" "800x600" "640x480"
        Virtual     1280 1024
    Subsection "Display"
        Depth       24
        Modes       "1280x1024" "1280x800" "1024x768" "800x600" "640x480"
        Virtual     1280 1024

Section "ServerLayout"
    Identifier  "Dual"
    Screen      "MergedFB"
    InputDevice "TrackPoint"
    InputDevice "Keyboard1" "CoreKeyboard"

I needed to enable SWCursor, since hardware cursor isn't restored on resume from suspend-to-ram, other than that, 
config is fairly standard. I've disabled DRI during experiments to reduce possible source of strange effects, however, I don't need it at all.
I'm using 855resolution to enable 1280x800 native internal resolution (AFACS, modesetting branch doesn't support MergedFB yet).

Managing your Territory since the dawn of the times 

More information about the xorg mailing list