Re: [Bug 10843] Display artifacts on XOrg logout with PAT kernel and VESA framebuffer

From: Frans Pop
Date: Mon Jun 16 2008 - 06:53:26 EST


On Monday 16 June 2008, Suresh Siddha wrote:
> If the initlevel is '3', then the mtrr option will show up in
> /proc/mtrr otherwise not.

What is this init level and how would I set it? Do I need to?

> In init level '5', X server will add the mtrr
> (irrespective of boot option, if it's not already there) and will
> remove it when the X process completes its execution.

That was a useful pointer. I do see some differences when I compare
Xorg logs; see below.

> Can you also please try if "mtrr:1" makes any difference. This will
> setup the mapping as UC during boot. Apart from PAT WC mapping(which we
> shouldn't be using in your current setup), UC MTRR should override all
> the other PAT mappings and should be consistent across X and VT console
> mappings. As such, if the problem is because of improper aliasing, then
> with this UC MTRR, my understanding is that we shouldn't see any
> artifacts with the "mtrr:1".
> with this mtrr:1, we should now see a UC mtrr setting in /proc/mtrr.

mtrr:1 still gives the artifacts and no any difference to /proc/mtrr.

Here's /proc/cmdline + /proc/mtrr for three different boots:
root=/dev/mapper/main-root ro vga=791 quiet
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x7f800000 (2040MB), size= 8MB: uncachable, count=1
reg02: base=0x7f700000 (2039MB), size= 1MB: uncachable, count=1
reg03: base=0x80000000 (2048MB), size= 256MB: write-combining, count=1

root=/dev/mapper/main-root ro vga=791 quiet video=vesafb:mtrr:1
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x7f800000 (2040MB), size= 8MB: uncachable, count=1
reg02: base=0x7f700000 (2039MB), size= 1MB: uncachable, count=1
reg03: base=0x80000000 (2048MB), size= 256MB: write-combining, count=1

root=/dev/mapper/main-root ro vga=791 quiet video=vesafb:mtrr:3
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x7f800000 (2040MB), size= 8MB: uncachable, count=1
reg02: base=0x7f700000 (2039MB), size= 1MB: uncachable, count=1
reg03: base=0x80000000 (2048MB), size= 256MB: write-combining, count=1


I do see some differences in Xorg logs, so it does seem that the mtrr
options _are_ being recognized.
Attached my "normal" Xorg log (with 'vga=791') which I used as the base
for the diffs below. Other than shown, the logs are identical.

With mtrr:1 I get (added at the end of the log):
@@ -688,3 +688,11 @@
(II) evaluating device (Generic Keyboard)
(II) XINPUT: Adding extended input device "Generic Keyboard" (type: KEYBOARD)
(II) Configured Mouse: ps2EnableDataReporting: succeeded
+(II) intel(0): xf86UnbindGARTMemory: unbind key 0
+(II) intel(0): xf86UnbindGARTMemory: unbind key 1
+(II) intel(0): xf86UnbindGARTMemory: unbind key 2
+(II) intel(0): xf86UnbindGARTMemory: unbind key 3
+(II) intel(0): xf86UnbindGARTMemory: unbind key 4
+(II) intel(0): [drm] removed 1 reserved context for kernel
+(II) intel(0): [drm] unmapping 8192 bytes of SAREA 0x2efff000 at 0x7f2788ab9000
+(II) intel(0): [drm] Closed DRM master.

And with mtrr:3 (added in the middle):
@@ -577,6 +577,7 @@
(II) intel(0): [drm] Initialized kernel agp heap manager, 33554432
(II) intel(0): [dri] visual configs initialized
(II) intel(0): Page Flipping disabled
+(==) intel(0): Removed MMIO write-combining range (0x80000000,0x400000)
(==) intel(0): Write-combining range (0x80000000,0x10000000)
(II) intel(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(II) EXA(0): Offscreen pixmap area of 39321600 bytes


I've also checked with 'nopat'. That gives no differences in /proc/mtrr,
and also no differences in the Xorg log when compared with my normal boot
(vga=791).

Cheers,
FJP

Attachment: Xorg.0.log.gz
Description: GNU Zip compressed data