2010-05-03 19:53:06 |
Thomas Schlichter |
bug |
|
|
added bug |
2010-05-03 19:53:06 |
Thomas Schlichter |
attachment added |
|
Fix uvesafb to use correct ioremap_* calls and create correct PAT entries http://launchpadlibrarian.net/47637167/uvesafb.diff |
|
2010-05-03 19:54:45 |
Thomas Schlichter |
attachment added |
|
Fix for vesafb http://launchpadlibrarian.net/47637352/vesafb.diff |
|
2010-05-03 23:00:40 |
Jeremy Foshee |
tags |
|
kj-triage |
|
2010-06-04 02:21:58 |
Jeremy Foshee |
tags |
kj-triage |
kj-triage needs-kernel-logs |
|
2010-06-04 02:22:01 |
Jeremy Foshee |
tags |
kj-triage needs-kernel-logs |
kj-triage needs-kernel-logs needs-upstream-testing |
|
2010-06-04 02:22:08 |
Jeremy Foshee |
linux (Ubuntu): status |
New |
Incomplete |
|
2010-06-06 23:21:59 |
Thomas Schlichter |
tags |
kj-triage needs-kernel-logs needs-upstream-testing |
apport-collected kj-triage needs-kernel-logs needs-upstream-testing |
|
2010-06-06 23:22:03 |
Thomas Schlichter |
description |
Hi,
when using uvesafb or vesafb, these drivers will create uncached-minus PAT entries for the framebuffer memory because they use ioremap(). WHen the framebuffer memory intersects with the video RAM used by Xorg, the complete video RAM will be mapped uncached-minus what results in a server performance penalty.
Here are the correct MTRR entries created by uvesafb:
schlicht@netbook:~$ cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x06ff00000 ( 1791MB), size= 1MB, count=1: uncachable
reg02: base=0x070000000 ( 1792MB), size= 256MB, count=1: uncachable
reg03: base=0x0d0000000 ( 3328MB), size= 16MB, count=1: write-combining
And here are the problematic PAT entries:
schlicht@netbook:~$ sudo cat /sys/kernel/debug/x86/pat_memtype_list
PAT memtype list:
write-back @ 0x0-0x1000
uncached-minus @ 0x6fedd000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0xd0000000-0xe0000000 <-- created by xserver-xorg
uncached-minus @ 0xd0000000-0xd1194000 <-- created by uvesafb
uncached-minus @ 0xf4000000-0xf4009000
uncached-minus @ 0xf4200000-0xf4400000
uncached-minus @ 0xf5000000-0xf5010000
uncached-minus @ 0xf5100000-0xf5104000
uncached-minus @ 0xf5400000-0xf5404000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xfed00000-0xfed01000
Therefore I created the attached patch for uvesafb which uses ioremap_wc() to create the correct PAT entries, as shown below:
schlicht@netbook:~$ sudo cat /sys/kernel/debug/x86/pat_memtype_list
PAT memtype list:
write-back @ 0x0-0x1000
uncached-minus @ 0x6fedd000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
write-combining @ 0xd0000000-0xe0000000
write-combining @ 0xd0000000-0xd1194000
uncached-minus @ 0xf4000000-0xf4009000
uncached-minus @ 0xf4200000-0xf4400000
uncached-minus @ 0xf5000000-0xf5010000
uncached-minus @ 0xf5100000-0xf5104000
uncached-minus @ 0xf5400000-0xf5404000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xfed00000-0xfed01000
This results in a performance gain, objectively measurable with e.g. x11perf -comppixwin10 -comppixwin100 -comppixwin500:
1: x11perf_xaa_lucid.log
2: x11perf_xaa_lucid_patched.log
1 2 Operation
-------- ----------------- -----------------
300000.0 296000.0 ( 0.99) Composite 10x10 from window to window
38400.0 38500.0 ( 1.00) Composite 100x100 from window to window
1760.0 1760.0 ( 1.00) Composite 500x500 from window to window
124000.0 202000.0 ( 1.63) Composite 10x10 from pixmap to window
3340.0 24400.0 ( 7.31) Composite 100x100 from pixmap to window
131.0 1150.0 ( 8.78) Composite 500x500 from pixmap to window
You can see the serve performance gain when composing larger pixmaps to window.
Please consider applying/pushing the attached patch. I'll also attach a very similar patch for vesafb.
Kind regards,
Thomas |
Hi,
when using uvesafb or vesafb, these drivers will create uncached-minus PAT entries for the framebuffer memory because they use ioremap(). WHen the framebuffer memory intersects with the video RAM used by Xorg, the complete video RAM will be mapped uncached-minus what results in a server performance penalty.
Here are the correct MTRR entries created by uvesafb:
schlicht@netbook:~$ cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x06ff00000 ( 1791MB), size= 1MB, count=1: uncachable
reg02: base=0x070000000 ( 1792MB), size= 256MB, count=1: uncachable
reg03: base=0x0d0000000 ( 3328MB), size= 16MB, count=1: write-combining
And here are the problematic PAT entries:
schlicht@netbook:~$ sudo cat /sys/kernel/debug/x86/pat_memtype_list
PAT memtype list:
write-back @ 0x0-0x1000
uncached-minus @ 0x6fedd000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0xd0000000-0xe0000000 <-- created by xserver-xorg
uncached-minus @ 0xd0000000-0xd1194000 <-- created by uvesafb
uncached-minus @ 0xf4000000-0xf4009000
uncached-minus @ 0xf4200000-0xf4400000
uncached-minus @ 0xf5000000-0xf5010000
uncached-minus @ 0xf5100000-0xf5104000
uncached-minus @ 0xf5400000-0xf5404000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xfed00000-0xfed01000
Therefore I created the attached patch for uvesafb which uses ioremap_wc() to create the correct PAT entries, as shown below:
schlicht@netbook:~$ sudo cat /sys/kernel/debug/x86/pat_memtype_list
PAT memtype list:
write-back @ 0x0-0x1000
uncached-minus @ 0x6fedd000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee2000-0x6fee3000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
uncached-minus @ 0x6fee3000-0x6fee4000
write-combining @ 0xd0000000-0xe0000000
write-combining @ 0xd0000000-0xd1194000
uncached-minus @ 0xf4000000-0xf4009000
uncached-minus @ 0xf4200000-0xf4400000
uncached-minus @ 0xf5000000-0xf5010000
uncached-minus @ 0xf5100000-0xf5104000
uncached-minus @ 0xf5400000-0xf5404000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xf5404000-0xf5405000
uncached-minus @ 0xfed00000-0xfed01000
This results in a performance gain, objectively measurable with e.g. x11perf -comppixwin10 -comppixwin100 -comppixwin500:
1: x11perf_xaa_lucid.log
2: x11perf_xaa_lucid_patched.log
1 2 Operation
-------- ----------------- -----------------
300000.0 296000.0 ( 0.99) Composite 10x10 from window to window
38400.0 38500.0 ( 1.00) Composite 100x100 from window to window
1760.0 1760.0 ( 1.00) Composite 500x500 from window to window
124000.0 202000.0 ( 1.63) Composite 10x10 from pixmap to window
3340.0 24400.0 ( 7.31) Composite 100x100 from pixmap to window
131.0 1150.0 ( 8.78) Composite 500x500 from pixmap to window
You can see the serve performance gain when composing larger pixmaps to window.
Please consider applying/pushing the attached patch. I'll also attach a very similar patch for vesafb.
Kind regards,
Thomas
---
AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.22.1.
AplayDevices:
**** List of PLAYBACK Hardware Devices ****
card 0: VT82xx [HDA VIA VT82xx], device 0: ALC272 Analog [ALC272 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
Architecture: i386
ArecordDevices:
**** List of CAPTURE Hardware Devices ****
card 0: VT82xx [HDA VIA VT82xx], device 0: ALC272 Analog [ALC272 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
CRDA: Error: [Errno 2] No such file or directory
Card0.Amixer.info:
Card hw:0 'VT82xx'/'HDA VIA VT82xx at 0xf5400000 irq 51'
Mixer name : 'Realtek ALC272'
Components : 'HDA:10ec0272,144dc04e,00100001'
Controls : 14
Simple ctrls : 8
DistroRelease: Ubuntu 10.10
LiveMediaBuild: Ubuntu 10.10 "Maverick Meerkat" - Alpha i386 (20100602.2)
MachineType: SAMSUNG ELECTRONICS CO., LTD. NC20/NB20
Package: linux (not installed)
ProcCmdLine: BOOT_IMAGE=/casper/vmlinuz noprompt cdrom-detect/try-usb=true file=/cdrom/preseed/hostname.seed boot=casper initrd=/casper/initrd.lz video=vesafb:mtrr=3 vga=792 quiet splash -- priority=low debian-installer/language=de console-setup/layoutcode?=de
ProcEnviron:
LANG=de_DE.UTF-8
SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.34-5.13-generic 2.6.34
Regression: No
RelatedPackageVersions: linux-firmware 1.35
Reproducible: Yes
Tags: maverick kconfig needs-upstream-testing
Uname: Linux 2.6.34-5-generic i686
UserGroups: adm admin cdrom dialout lpadmin plugdev sambashare
dmi.bios.date: 11/25/2009
dmi.bios.vendor: Phoenix Technologies Ltd.
dmi.bios.version: 10MQ
dmi.board.name: NC20/NB20
dmi.board.vendor: SAMSUNG ELECTRONICS CO., LTD.
dmi.chassis.asset.tag: No Asset Tag
dmi.chassis.type: 10
dmi.chassis.vendor: SAMSUNG ELECTRONICS CO., LTD.
dmi.chassis.version: N/A
dmi.modalias: dmi:bvnPhoenixTechnologiesLtd.:bvr10MQ:bd11/25/2009:svnSAMSUNGELECTRONICSCO.,LTD.:pnNC20/NB20:pvr04MQ:rvnSAMSUNGELECTRONICSCO.,LTD.:rnNC20/NB20:rvr:cvnSAMSUNGELECTRONICSCO.,LTD.:ct10:cvrN/A:
dmi.product.name: NC20/NB20
dmi.product.version: 04MQ
dmi.sys.vendor: SAMSUNG ELECTRONICS CO., LTD.
|
|
2010-06-06 23:22:07 |
Thomas Schlichter |
attachment added |
|
AlsaDevices.txt http://launchpadlibrarian.net/49788251/AlsaDevices.txt |
|
2010-06-06 23:22:10 |
Thomas Schlichter |
attachment added |
|
AudioDevicesInUse.txt http://launchpadlibrarian.net/49788252/AudioDevicesInUse.txt |
|
2010-06-06 23:22:12 |
Thomas Schlichter |
attachment added |
|
BootDmesg.txt http://launchpadlibrarian.net/49788267/BootDmesg.txt |
|
2010-06-06 23:22:14 |
Thomas Schlichter |
attachment added |
|
Card0.Amixer.values.txt http://launchpadlibrarian.net/49788268/Card0.Amixer.values.txt |
|
2010-06-06 23:22:17 |
Thomas Schlichter |
attachment added |
|
Card0.Codecs.codec.0.txt http://launchpadlibrarian.net/49788269/Card0.Codecs.codec.0.txt |
|
2010-06-06 23:22:20 |
Thomas Schlichter |
attachment added |
|
CurrentDmesg.txt http://launchpadlibrarian.net/49788270/CurrentDmesg.txt |
|
2010-06-06 23:22:24 |
Thomas Schlichter |
attachment added |
|
IwConfig.txt http://launchpadlibrarian.net/49788271/IwConfig.txt |
|
2010-06-06 23:22:26 |
Thomas Schlichter |
attachment added |
|
Lspci.txt http://launchpadlibrarian.net/49788273/Lspci.txt |
|
2010-06-06 23:22:27 |
Thomas Schlichter |
attachment added |
|
Lsusb.txt http://launchpadlibrarian.net/49788275/Lsusb.txt |
|
2010-06-06 23:22:30 |
Thomas Schlichter |
attachment added |
|
PciMultimedia.txt http://launchpadlibrarian.net/49788276/PciMultimedia.txt |
|
2010-06-06 23:22:33 |
Thomas Schlichter |
attachment added |
|
ProcCpuinfo.txt http://launchpadlibrarian.net/49788277/ProcCpuinfo.txt |
|
2010-06-06 23:22:35 |
Thomas Schlichter |
attachment added |
|
ProcInterrupts.txt http://launchpadlibrarian.net/49788278/ProcInterrupts.txt |
|
2010-06-06 23:22:37 |
Thomas Schlichter |
attachment added |
|
ProcModules.txt http://launchpadlibrarian.net/49788279/ProcModules.txt |
|
2010-06-06 23:22:39 |
Thomas Schlichter |
attachment added |
|
RfKill.txt http://launchpadlibrarian.net/49788280/RfKill.txt |
|
2010-06-06 23:22:42 |
Thomas Schlichter |
attachment added |
|
UdevDb.txt http://launchpadlibrarian.net/49788281/UdevDb.txt |
|
2010-06-06 23:22:47 |
Thomas Schlichter |
attachment added |
|
UdevLog.txt http://launchpadlibrarian.net/49788282/UdevLog.txt |
|
2010-06-06 23:22:49 |
Thomas Schlichter |
attachment added |
|
WifiSyslog.txt http://launchpadlibrarian.net/49788283/WifiSyslog.txt |
|
2010-06-08 20:59:13 |
Thomas Schlichter |
tags |
apport-collected kj-triage needs-kernel-logs needs-upstream-testing |
apport-collected kj-triage |
|
2010-06-09 17:06:28 |
Nigel Babu |
removed subscriber Ubuntu Review Team |
|
|
|
2010-06-16 14:21:59 |
Jeremy Foshee |
tags |
apport-collected kj-triage |
apport-collected cherry-pick kernel-graphics kernel-needs-review kj-triage |
|
2010-06-16 14:22:15 |
Jeremy Foshee |
linux (Ubuntu): status |
Incomplete |
Triaged |
|
2010-06-16 14:22:20 |
Jeremy Foshee |
linux (Ubuntu): importance |
Undecided |
Medium |
|
2010-07-06 15:24:23 |
Steve Conklin |
tags |
apport-collected cherry-pick kernel-graphics kernel-needs-review kj-triage |
apport-collected cherry-pick kernel-graphics kernel-reviewed kj-triage |
|
2010-07-06 16:31:54 |
Brian Murray |
bug |
|
|
added subscriber Ubuntu Review Team |
2010-07-06 16:31:58 |
Brian Murray |
tags |
apport-collected cherry-pick kernel-graphics kernel-reviewed kj-triage |
apport-collected cherry-pick kernel-graphics kernel-reviewed kj-triage patch |
|
2010-07-25 10:01:58 |
Nigel Babu |
removed subscriber Ubuntu Review Team |
|
|
|
2011-10-05 21:59:13 |
Jeremy Foshee |
removed subscriber Jeremy Foshee |
|
|
|
2011-11-10 21:12:10 |
Brad Figg |
linux (Ubuntu): status |
Triaged |
Incomplete |
|
2011-11-13 17:27:43 |
Brad Figg |
linux (Ubuntu): status |
Incomplete |
Fix Released |
|