MTRRs set up incorrectly with 4GB RAM -> X slow
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linux |
Fix Released
|
Medium
|
|||
xf86-video-intel |
Won't Fix
|
Medium
|
|||
linux (Ubuntu) |
Incomplete
|
Medium
|
Unassigned | ||
xserver-xorg-video-intel (Ubuntu) |
Invalid
|
Medium
|
Unassigned |
Bug Description
After upgrading my Laptop to 4GB RAM my MTRRs are set up in such a way that X can't set up a write-combining range for the video memory anymore, causing a noticable loss of performance
/proc/mtrr with 2GB:
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x7f700000 (2039MB), size= 1MB: uncachable, count=1
reg02: base=0x7f800000 (2040MB), size= 8MB: uncachable, count=1
reg03: base=0xd0000000 (3328MB), size= 256MB: write-combining, count=1
(last range added by X server)
/proc/mtrr with 4GB:
reg00: base=0xc0000000 (3072MB), size=1024MB: uncachable, count=1
reg01: base=0x00000000 ( 0MB), size=4096MB: write-back, count=1
reg02: base=0x100000000 (4096MB), size=1024MB: write-back, count=1
reg03: base=0xbf700000 (3063MB), size= 1MB: uncachable, count=1
reg04: base=0xbf800000 (3064MB), size= 8MB: uncachable, count=1
The video memory is at 0xd0000000 (256MB). Note that this range is already included in reg00 and reg01, so the X server cannot set up a write-combining range.
If I manually fix the ranges to look like this:
reg00: base=0xc0000000 (3072MB), size= 256MB: uncachable, count=1
reg01: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg02: base=0x100000000 (4096MB), size=1024MB: write-back, count=1
reg03: base=0xbf700000 (3063MB), size= 1MB: uncachable, count=1
reg04: base=0xbf800000 (3064MB), size= 8MB: uncachable, count=1
reg05: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg06: base=0xe0000000 (3584MB), size= 512MB: uncachable, count=1
, i.e. explicitly excluding 0xd0000000 (256MB) from both problematic ranges, then the X server can set up the write-combining range again:
reg00: base=0xc0000000 (3072MB), size= 256MB: uncachable, count=1
reg01: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg02: base=0x100000000 (4096MB), size=1024MB: write-back, count=1
reg03: base=0xbf700000 (3063MB), size= 1MB: uncachable, count=1
reg04: base=0xbf800000 (3064MB), size= 8MB: uncachable, count=1
reg05: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg06: base=0xe0000000 (3584MB), size= 512MB: uncachable, count=1
reg07: base=0xd0000000 (3328MB), size= 256MB: write-combining, count=1
(last range added by X server)
I'm not sure who is responsible for the MTRRs, BIOS or kernel or both. In case of a broken BIOS, maybe the kernel can sanitize them anyway.
Original description:
-----
Binary package hint: xserver-
Today I upgraded my RAM from 1GB to 4GB. Everything worked fine but I noticed that scrolling in Firefox and dragging windows is noticeably slower than before. I checked this again by removing 2GB and got the same results (i.e. 2GB -> fast scrolling, 4GB -> slower scrolling)
I suspect it has to do with this line from the X server:
(WW) intel(0): Failed to set up write-combining range (0xd0000000,
If this is something the kernel is responsible for, please feel free to reassign accordingly.
I have no options in my BIOS to change anything that might be relevant to this (memory mapping, etc.)
This is a Samsung Q45 with Intel X3100 graphics.
I'll attach more debug info.
ProblemType: Bug
Architecture: i386
Date: Wed Apr 2 14:18:58 2008
DistroRelease: Ubuntu 8.04
Package: xserver-
PackageArchitec
ProcEnviron:
SHELL=/bin/bash
PATH=/
LANG=de_DE.UTF-8
SourcePackage: xserver-
Uname: Linux 2.6.24-12-server i686
Changed in xserver-xorg-video-intel: | |
status: | Unknown → Confirmed |
Changed in xserver-xorg-video-intel: | |
status: | Confirmed → Invalid |
Changed in xserver-xorg-video-intel: | |
status: | Invalid → Confirmed |
description: | updated |
description: | updated |
Changed in xserver-xorg-video-intel: | |
status: | Confirmed → Invalid |
Changed in linux: | |
status: | Unknown → Confirmed |
Changed in linux: | |
importance: | Undecided → Medium |
status: | Incomplete → Triaged |
Changed in xserver-xorg-video-intel: | |
importance: | Unknown → Medium |
status: | Invalid → Won't Fix |
Changed in xserver-xorg-video-intel: | |
importance: | Medium → Unknown |
Changed in xserver-xorg-video-intel: | |
importance: | Unknown → Medium |
Changed in linux: | |
importance: | Unknown → Medium |
Changed in linux: | |
status: | Confirmed → Fix Released |
Oh, I forgot to add that the problem occurs with the -server and -generic kernels. But I prefer the -server kernels now, because they let me use all 4GB of memory...
My graphics hardware:
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller [8086:2a02] (rev 03)