[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#483989: xserver-xorg-video-savage: system freeze while starting X



Package: xserver-xorg-video-savage
Version: 1:2.2.1-1
Severity: important

After upgrading xserver-xorg-video-savage from 1:2.1.3-5 to current 
unstable (1:2.2.1-1), the system freezes immediately with a black screen 
(no flashing cursor) while trying to start X, without any recoverable 
error messages. Changing DefaultColorDepth from 24 to 16 bit shows no 
results.

As disabling 02_temporary_revert_pciaccess.diff from 1:2.1.3-5 seems to 
result in the same system freeze, re- enabling it for 1:2.2.1-1 and 
dropping conflicting upstream commits:
	a01c9d12938f977a4310e0547866f01517059a3e
	69eca3b8340966874ee3ffdc0d0a3f73de7a816a
	908b155161ebb6cd506f43a3987e4d146ef5b330
	88141fd21214c501cafed73b1bba084b8a2bb929
	fd2a598e64a522c028a20444379fa200a5724e62
results in a working system again.

The following system information has been gathered with a custom built 
xserver-xorg-video-savage 1:2.2.1-1, with the attached (as a quick and 
dirty workaround, I've dropped the (conflicting) changes to ChangeLog from 
02_temporary_revert_pciaccess.diff) changes to debian/patches/; X seems to 
be running fine again.

Regards
	Stefan Lippers-Hollmann

-- Package-specific info:
Contents of /var/lib/x11/X.roster:
xserver-xorg

/var/lib/x11/X.md5sum does not exist.

X server symlink status:
lrwxrwxrwx 1 root root 13 22. Nov 2006  /etc/X11/X -> /usr/bin/Xorg
-rwxr-xr-x 1 root root 1676828 18. Mai 13:55 /usr/bin/Xorg

Contents of /var/lib/x11/xorg.conf.roster:
xserver-xorg

VGA-compatible devices on PCI bus:
01:00.0 VGA compatible controller: S3 Inc. 86C380 [ProSavageDDR K4M266] (rev 02)

/etc/X11/xorg.conf does not match checksum in /var/lib/x11/xorg.conf.md5sum.

Xorg X server configuration file status:
-rw-r--r-- 1 root root 2752  1. Jun 16:33 /etc/X11/xorg.conf

Contents of /etc/X11/xorg.conf:
Section "ServerLayout"
	Identifier     "XFree86 Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Keyboard0" "CoreKeyboard"
	InputDevice    "PS/2 Mouse" "SendCoreEvents"
	InputDevice    "ALPS TouchPad" "CorePointer"
EndSection

Section "ServerFlags"
	Option "AllowMouseOpenFail"  "true"
	
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
        Option      "CoreKeyboard"
	Option "XkbRules" "xorg"
	Option "XkbModel" "pc105"
	Option "XkbLayout" "de"
	Option "XkbVariant" "nodeadkeys"
EndSection

Section "InputDevice"
	Identifier  "PS/2 Mouse"
	Driver      "mouse"
	Option      "Protocol" "IMPS/2"
	Option      "ZAxisMapping"          "4 5"
	Option      "Device" "/dev/psaux"
	Option      "Emulate3Buttons" "true"
	Option      "Emulate3Timeout" "70"
	Option	    "SendCoreEvents"  "true"
EndSection

Section "InputDevice"
        Identifier      "ALPS TouchPad"
        Driver          "synaptics"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "LeftEdge"              "120"
        Option          "RightEdge"             "830"
        Option          "TopEdge"               "120"
        Option          "BottomEdge"            "650"
        Option          "FingerLow"             "14"
        Option          "FingerHigh"            "15"
        Option          "MaxTapTime"            "180"
        Option          "MaxTapMove"            "110"
        Option          "EmulateMidButtonTime"  "75"
        Option          "VertScrollDelta"       "20"
        Option          "HorizScrollDelta"      "20"
        Option          "MinSpeed"              "0.2"
        Option          "MaxSpeed"              "0.5"
        Option          "AccelFactor"           "0.01"
        Option          "EdgeMotionMinSpeed"    "15"
        Option          "EdgeMotionMaxSpeed"    "15"
        Option          "UpDownScrolling"       "1"
        Option          "CircularScrolling"     "1"
        Option          "CircScrollDelta"       "0.1"
        Option          "CircScrollTrigger"     "2"
EndSection

Section "Monitor"
	Identifier	"Monitor0"
	Option	"DPMS"	"true"
	HorizSync    28.0 - 96.0
	VertRefresh 60
EndSection

Section "Device"
	#Option      "RenderAccel"	"1"
	Identifier  "Card0"
	Driver      "savage"
	VendorName  "All"
	BoardName   "All"
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultColorDepth 24
	SubSection "Display"
		Depth     16
		Modes "1024x768"
	EndSubSection
	SubSection "Display"
		Depth     24
		Modes "1024x768"
	EndSubSection
EndSection

Section "DRI"
	Mode 0666
EndSection



Xorg X server log files on system:
-rw-r--r-- 1 root root 44477  1. Jun 19:34 /var/log/Xorg.0.log

Contents of most recent Xorg X server log file
/var/log/Xorg.0.log:

X.Org X Server 1.4.0.90
Release Date: 5 September 2007
X Protocol Version 11, Revision 0
Build Operating System: Linux Debian (xorg-server 2:1.4.1~git20080517-1)
Current Operating System: Linux fsc-cy23 2.6.25-4.slh.3-sidux-686 #1 SMP PREEMPT Fri May 23 21:58:49 UTC 2008 i686
Build Date: 18 May 2008  01:38:06PM
 
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sun Jun  1 19:34:29 2008
(==) Using config file: "/etc/X11/xorg.conf"
(==) ServerLayout "XFree86 Configured"
(**) |-->Screen "Screen0" (0)
(**) |   |-->Monitor "Monitor0"
(**) |   |-->Device "Card0"
(**) |-->Input Device "Keyboard0"
(**) |-->Input Device "PS/2 Mouse"
(**) |-->Input Device "ALPS TouchPad"
(**) Option "AllowMouseOpenFail" "true"
(==) Automatically adding devices
(==) Automatically enabling devices
(==) No FontPath specified.  Using compiled-in default.
(WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
	Entry deleted from font path.
(WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11/Type1".
	Entry deleted from font path.
	(Run 'mkfontdir' on "/usr/share/fonts/X11/Type1").
(WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
	Entry deleted from font path.
(==) FontPath set to:
	/usr/share/fonts/X11/misc,
	/usr/share/fonts/X11/100dpi/:unscaled,
	/usr/share/fonts/X11/75dpi/:unscaled,
	/usr/share/fonts/X11/100dpi,
	/usr/share/fonts/X11/75dpi
(==) RgbPath set to "/etc/X11/rgb"
(==) ModulePath set to "/usr/lib/xorg/modules"
(II) Open ACPI successful (/var/run/acpid.socket)
(II) Loader magic: 0x81d8500
(II) Module ABI versions:
	X.Org ANSI C Emulation: 0.3
	X.Org Video Driver: 2.0
	X.Org XInput driver : 2.0
	X.Org Server Extension : 0.3
	X.Org Font Renderer : 0.5
(II) Loader running on linux
(II) LoadModule: "pcidata"
(II) Loading /usr/lib/xorg/modules//libpcidata.so
(II) Module pcidata: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	ABI class: X.Org Video Driver, version 2.0
(++) using VT number 7

(II) PCI: PCI scan (all values are in hex)
(II) PCI: 00:00:0: chip 1106,0605 card 14c0,0012 rev 00 class 06,00,00 hdr 00
(II) PCI: 00:01:0: chip 1106,8605 card 0000,0000 rev 00 class 06,04,00 hdr 01
(II) PCI: 00:04:0: chip 1217,6933 card 2001,0000 rev 01 class 06,07,00 hdr 82
(II) PCI: 00:04:1: chip 1217,6933 card 2801,0000 rev 01 class 06,07,00 hdr 82
(II) PCI: 00:07:0: chip 1106,0686 card 14c0,0012 rev 42 class 06,01,00 hdr 80
(II) PCI: 00:07:1: chip 1106,0571 card 14c0,0012 rev 06 class 01,01,8a hdr 00
(II) PCI: 00:07:2: chip 1106,3038 card 14c0,0012 rev 1a class 0c,03,00 hdr 00
(II) PCI: 00:07:4: chip 1106,3057 card 14c0,0012 rev 40 class 06,01,00 hdr 00
(II) PCI: 00:07:5: chip 1106,3058 card 14c0,0012 rev 50 class 04,01,00 hdr 00
(II) PCI: 00:0d:0: chip 104c,8023 card 14c0,0012 rev 00 class 0c,00,10 hdr 00
(II) PCI: 00:10:0: chip 11c1,0450 card 144f,4005 rev 00 class 07,80,00 hdr 00
(II) PCI: 00:11:0: chip 1113,1216 card 1113,2242 rev 11 class 02,00,00 hdr 00
(II) PCI: 01:00:0: chip 5333,8d01 card 14c0,0012 rev 02 class 03,00,00 hdr 00
(II) PCI: 02:00:0: chip 14e4,4320 card 1737,4320 rev 03 class 02,80,00 hdr 00
(II) PCI: End of PCI scan
(II) Host-to-PCI bridge:
(II) Bus 0: bridge is at (0:0:0), (0,0,6), BCTRL: 0x0008 (VGA_EN is set)
(II) Bus 0 I/O range:
	[0] -1	0	0x00000000 - 0x0000ffff (0x10000) IX[B]
(II) Bus 0 non-prefetchable memory range:
	[0] -1	0	0x00000000 - 0xffffffff (0x0) MX[B]
(II) Bus 0 prefetchable memory range:
	[0] -1	0	0x00000000 - 0xffffffff (0x0) MX[B]
(II) PCI-to-PCI bridge:
(II) Bus 1: bridge is at (0:1:0), (0,1,1), BCTRL: 0x000c (VGA_EN is set)
(II) Bus 1 non-prefetchable memory range:
	[0] -1	0	0xe8100000 - 0xe81fffff (0x100000) MX[B]
(II) Bus 1 prefetchable memory range:
	[0] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B]
(II) PCI-to-CardBus bridge:
(II) Bus 2: bridge is at (0:4:0), (0,2,5), BCTRL: 0x0500 (VGA_EN is cleared)
(II) Bus 2 I/O range:
	[0] -1	0	0x00002000 - 0x000020ff (0x100) IX[B]
	[1] -1	0	0x00002400 - 0x000024ff (0x100) IX[B]
(II) Bus 2 non-prefetchable memory range:
	[0] -1	0	0x14000000 - 0x17ffffff (0x4000000) MX[B]
(II) Bus 2 prefetchable memory range:
	[0] -1	0	0x10000000 - 0x13ffffff (0x4000000) MX[B]
(II) PCI-to-CardBus bridge:
(II) Bus 6: bridge is at (0:4:1), (0,6,9), BCTRL: 0x0580 (VGA_EN is cleared)
(II) Bus 6 I/O range:
	[0] -1	0	0x00002800 - 0x000028ff (0x100) IX[B]
	[1] -1	0	0x00002c00 - 0x00002cff (0x100) IX[B]
(II) Bus 6 non-prefetchable memory range:
	[0] -1	0	0x1c000000 - 0x1fffffff (0x4000000) MX[B]
(II) Bus 6 prefetchable memory range:
	[0] -1	0	0x18000000 - 0x1bffffff (0x4000000) MX[B]
(II) PCI-to-ISA bridge:
(II) Bus -1: bridge is at (0:7:0), (0,-1,-1), BCTRL: 0x0008 (VGA_EN is set)
(II) PCI-to-ISA bridge:
(II) Bus -1: bridge is at (0:7:4), (0,-1,-1), BCTRL: 0x0008 (VGA_EN is set)
(--) PCI:*(1:0:0) S3 Inc. 86C380 [ProSavageDDR K4M266] rev 2, Mem @ 0xe8100000/19, 0xf0000000/27
(II) Addressable bus resource ranges are
	[0] -1	0	0x00000000 - 0xffffffff (0x0) MX[B]
	[1] -1	0	0x00000000 - 0x0000ffff (0x10000) IX[B]
(II) OS-reported resource ranges:
	[0] -1	0	0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B)
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[4] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[5] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
(II) PCI Memory resource overlap reduced 0xec000000 from 0xefffffff to 0xebffffff
(II) Active PCI resource ranges:
	[0] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[1] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[2] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[3] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[4] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[5] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[6] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[7] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[8] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[9] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[10] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[11] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[12] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
(II) Inactive PCI resource ranges:
	[0] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[1] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[2] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
(II) Active PCI resource ranges after removing overlaps:
	[0] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[1] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[2] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[3] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[4] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[5] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[6] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[7] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[8] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[9] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[10] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[11] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[12] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
(II) Inactive PCI resource ranges after removing overlaps:
	[0] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[1] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[2] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
(II) OS-reported resource ranges after removing overlaps with PCI:
	[0] -1	0	0x00100000 - 0x13ffffff (0x13f00000) MX[B]E(B)
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[4] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[5] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
(II) All system resource ranges:
	[0] -1	0	0x00100000 - 0x13ffffff (0x13f00000) MX[B]E(B)
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[4] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[5] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[6] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[7] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[8] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[9] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[10] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[11] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[12] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[13] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
	[14] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[15] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[16] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[17] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[18] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[19] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
	[20] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[21] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
(II) LoadModule: "extmod"
(II) Loading /usr/lib/xorg/modules/extensions//libextmod.so
(II) Module extmod: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 0.3
(II) Loading extension SHAPE
(II) Loading extension MIT-SUNDRY-NONSTANDARD
(II) Loading extension BIG-REQUESTS
(II) Loading extension SYNC
(II) Loading extension MIT-SCREEN-SAVER
(II) Loading extension XC-MISC
(II) Loading extension XFree86-VidModeExtension
(II) Loading extension XFree86-Misc
(II) Loading extension XFree86-DGA
(II) Loading extension DPMS
(II) Loading extension TOG-CUP
(II) Loading extension Extended-Visual-Information
(II) Loading extension XVideo
(II) Loading extension XVideo-MotionCompensation
(II) Loading extension X-Resource
(II) LoadModule: "dbe"
(II) Loading /usr/lib/xorg/modules/extensions//libdbe.so
(II) Module dbe: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 0.3
(II) Loading extension DOUBLE-BUFFER
(II) LoadModule: "glx"
(II) Loading /usr/lib/xorg/modules/extensions//libglx.so
(II) Module glx: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	ABI class: X.Org Server Extension, version 0.3
(==) AIGLX enabled
(II) Loading extension GLX
(II) LoadModule: "freetype"
(II) Loading /usr/lib/xorg/modules//fonts/libfreetype.so
(II) Module freetype: vendor="X.Org Foundation & the After X-TT Project"
	compiled for 1.4.0.90, module version = 2.1.0
	Module class: X.Org Font Renderer
	ABI class: X.Org Font Renderer, version 0.5
(II) Loading font FreeType
(II) LoadModule: "record"
(II) Loading /usr/lib/xorg/modules/extensions//librecord.so
(II) Module record: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.13.0
	Module class: X.Org Server Extension
	ABI class: X.Org Server Extension, version 0.3
(II) Loading extension RECORD
(II) LoadModule: "dri"
(II) Loading /usr/lib/xorg/modules/extensions//libdri.so
(II) Module dri: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	ABI class: X.Org Server Extension, version 0.3
(II) Loading extension XFree86-DRI
(II) LoadModule: "savage"
(II) Loading /usr/lib/xorg/modules/drivers//savage_drv.so
(II) Module savage: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 2.2.1
	Module class: X.Org Video Driver
	ABI class: X.Org Video Driver, version 2.0
(II) LoadModule: "kbd"
(II) Loading /usr/lib/xorg/modules/input//kbd_drv.so
(II) Module kbd: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.3.1
	Module class: X.Org XInput Driver
	ABI class: X.Org XInput driver, version 2.0
(II) LoadModule: "mouse"
(II) Loading /usr/lib/xorg/modules/input//mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.3.0
	Module class: X.Org XInput Driver
	ABI class: X.Org XInput driver, version 2.0
(II) LoadModule: "synaptics"
(II) Loading /usr/lib/xorg/modules/input//synaptics_drv.so
(II) Module synaptics: vendor="X.Org Foundation"
	compiled for 4.3.99.902, module version = 1.0.0
	Module class: X.Org XInput Driver
	ABI class: X.Org XInput driver, version 2.0
(II) SAVAGE: driver (version 2.2.1) for S3 Savage chipsets: Savage4,
	Savage3D, Savage3D-MV, Savage2000, Savage/MX-MV, Savage/MX,
	Savage/IX-MV, Savage/IX, ProSavage PM133, ProSavage KM133,
	Twister PN133, Twister KN133, SuperSavage/MX 128, SuperSavage/MX 64,
	SuperSavage/MX 64C, SuperSavage/IX 128, SuperSavage/IX 128,
	SuperSavage/IX 64, SuperSavage/IX 64, SuperSavage/IXC 64,
	SuperSavage/IXC 64, ProSavage DDR, ProSavage DDR-K
(II) Primary Device is: PCI 01:00:0
(--) Chipset Twister found
(II) resource ranges after xf86ClaimFixedResources() call:
	[0] -1	0	0x00100000 - 0x13ffffff (0x13f00000) MX[B]E(B)
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[4] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[5] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[6] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[7] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[8] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[9] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[10] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[11] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[12] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[13] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
	[14] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[15] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[16] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[17] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[18] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[19] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
	[20] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[21] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
(II) resource ranges after probing:
	[0] -1	0	0x00100000 - 0x13ffffff (0x13f00000) MX[B]E(B)
	[1] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[2] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[3] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[4] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[5] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[6] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[7] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[8] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[9] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[10] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[11] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[12] 0	0	0x000a0000 - 0x000affff (0x10000) MS[B]
	[13] 0	0	0x000b0000 - 0x000b7fff (0x8000) MS[B]
	[14] 0	0	0x000b8000 - 0x000bffff (0x8000) MS[B]
	[15] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[16] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
	[17] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[18] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[19] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[20] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[21] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[22] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
	[23] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[24] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
	[25] 0	0	0x000003b0 - 0x000003bb (0xc) IS[B]
	[26] 0	0	0x000003c0 - 0x000003df (0x20) IS[B]
(II) Setting vga for screen 0.
(II) Loading sub module "vgahw"
(II) LoadModule: "vgahw"
(II) Loading /usr/lib/xorg/modules//libvgahw.so
(II) Module vgahw: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 0.1.0
	ABI class: X.Org Video Driver, version 2.0
(**) SAVAGE(0): Depth 24, (--) framebuffer bpp 32
(==) SAVAGE(0): RGB weight 888
(==) SAVAGE(0): Default visual is TrueColor
(II) SAVAGE(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(==) SAVAGE(0): Using XAA acceleration architecture
(==) SAVAGE(0): Using HW cursor
(==) SAVAGE(0): Using video BIOS to set modes
(II) Loading sub module "vbe"
(II) LoadModule: "vbe"
(II) Loading /usr/lib/xorg/modules//libvbe.so
(II) Module vbe: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.1.0
	ABI class: X.Org Video Driver, version 2.0
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Loading /usr/lib/xorg/modules//libint10.so
(II) Module int10: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	ABI class: X.Org Video Driver, version 2.0
(II) SAVAGE(0): initializing int10
(II) SAVAGE(0): Primary V_BIOS segment is: 0xc000
(II) SAVAGE(0): VESA BIOS detected
(II) SAVAGE(0): VESA VBE Version 2.0
(II) SAVAGE(0): VESA VBE Total Mem: 15296 kB
(II) SAVAGE(0): VESA VBE OEM: S3 Incorporated. Twister BIOS
(II) SAVAGE(0): VESA VBE OEM Software Rev: 1.0
(II) SAVAGE(0): VESA VBE OEM Vendor: S3 Incorporated.
(II) SAVAGE(0): VESA VBE OEM Product: VBE 2.0
(II) SAVAGE(0): VESA VBE OEM Product Rev: Rev 1.1
(--) SAVAGE(0): Chip: id 8d01, "Twister PN133"
(--) SAVAGE(0): Engine: "Twister"
(--) SAVAGE(0): AGP card detected
(==) SAVAGE(0): Using AGP DMA
(==) SAVAGE(0): Will try command and vertex DMA mode
(==) SAVAGE(0): Using AGP 1x mode
(==) SAVAGE(0): Using 16 MB AGP aperture
(==) SAVAGE(0): Write-combining range (0xf0000000,0x8000000)
(==) SAVAGE(0): Using gamma correction (1.0, 1.0, 1.0)
(--) SAVAGE(0): probed videoram:  16384k
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"(II) Module "ddc" already built-in
(--) SAVAGE(0): No DDC signal
(II) Loading sub module "i2c"
(II) LoadModule: "i2c"(II) Module "i2c" already built-in
(II) SAVAGE(0): I2C bus "I2C bus" initialized.
(II) SAVAGE(0): I2C device "I2C bus:ddc2" registered at address 0xA0.
(II) SAVAGE(0): I2C device "I2C bus:ddc2" removed.
(--) SAVAGE(0): Detected current MCLK value of 14.318 MHz
(--) SAVAGE(0): 1024x768 TFT LCD panel detected and active
(--) SAVAGE(0): - Limiting video mode to 1024x768
(--) SAVAGE(0): Found 13 modes at this depth:
    [10f] 320 x 200, 70Hz
    [112] 640 x 480, 60Hz, 72Hz, 75Hz, 85Hz
    [115] 800 x 600, 60Hz, 72Hz, 75Hz, 85Hz
    [118] 1024 x 768, 60Hz, 70Hz, 75Hz, 85Hz
    [11b] 1280 x 1024, 60Hz, 75Hz
    [11e] 640 x 400, 70Hz
    [124] 1600 x 1200, 60Hz
    [134] 320 x 240, 72Hz
    [13e] 1400 x 1050, 60Hz, 75Hz
    [144] 400 x 300, 72Hz
    [154] 512 x 384, 70Hz
    [175] 720 x 480, 75Hz
    [17f] 720 x 576, 75Hz
(II) SAVAGE(0): Monitor0: Using hsync range of 28.00-96.00 kHz
(II) SAVAGE(0): Monitor0: Using vrefresh value of 60.00 Hz
(II) SAVAGE(0): Monitor0: Using maximum pixel clock of 63.50 MHz
(II) SAVAGE(0): Clock range:  10.00 to 220.00 MHz
(--) SAVAGE(0): No suitable BIOS mode found for 640x350 85Hz.
(II) SAVAGE(0): Not using default mode "640x350" (no mode of this name)
(--) SAVAGE(0): No suitable BIOS mode found for 320x175 85Hz.
(II) SAVAGE(0): Not using default mode "320x175" (no mode of this name)
(--) SAVAGE(0): Chose mode 11e at 70Hz.
(II) SAVAGE(0): Not using default mode "640x400" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 10f at 70Hz.
(II) SAVAGE(0): Not using default mode "320x200" (vrefresh out of range)
(--) SAVAGE(0): No suitable BIOS mode found for 720x400 85Hz.
(II) SAVAGE(0): Not using default mode "720x400" (no mode of this name)
(--) SAVAGE(0): No suitable BIOS mode found for 360x200 85Hz.
(II) SAVAGE(0): Not using default mode "360x200" (no mode of this name)
(--) SAVAGE(0): Chose mode 112 at 60Hz.
(--) SAVAGE(0): Chose mode 134 at 72Hz.
(--) SAVAGE(0): Chose mode 112 at 72Hz.
(II) SAVAGE(0): Not using default mode "640x480" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 134 at 72Hz.
(II) SAVAGE(0): Not using default mode "320x240" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 112 at 75Hz.
(II) SAVAGE(0): Not using default mode "640x480" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 134 at 72Hz.
(II) SAVAGE(0): Not using default mode "320x240" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 112 at 85Hz.
(II) SAVAGE(0): Not using default mode "640x480" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 134 at 72Hz.
(II) SAVAGE(0): Not using default mode "320x240" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 115 at 60Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(II) SAVAGE(0): Not using default mode "400x300" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 115 at 60Hz.
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(--) SAVAGE(0): Chose mode 115 at 72Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(II) SAVAGE(0): Not using default mode "400x300" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 115 at 75Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(II) SAVAGE(0): Not using default mode "400x300" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 115 at 85Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(II) SAVAGE(0): Not using default mode "400x300" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 118 at 85Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(II) SAVAGE(0): Not using default mode "512x384" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 118 at 60Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (mode clock too high)
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(--) SAVAGE(0): Chose mode 118 at 70Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(II) SAVAGE(0): Not using default mode "512x384" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 118 at 75Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(II) SAVAGE(0): Not using default mode "512x384" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 118 at 85Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (vrefresh out of range)
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(II) SAVAGE(0): Not using default mode "512x384" (vrefresh out of range)
(II) SAVAGE(0): Not using default mode "1152x864" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 576x432 75Hz.
(II) SAVAGE(0): Not using default mode "576x432" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1280x960" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 112 at 60Hz.
(II) SAVAGE(0): Not using default mode "1280x960" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 112 at 85Hz.
(II) SAVAGE(0): Not using default mode "640x480" (vrefresh out of range)
(II) SAVAGE(0): Not using default mode "1280x1024" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 640x512 60Hz.
(II) SAVAGE(0): Not using default mode "640x512" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1280x1024" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 640x512 75Hz.
(II) SAVAGE(0): Not using default mode "640x512" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1280x1024" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 640x512 85Hz.
(II) SAVAGE(0): Not using default mode "640x512" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1600x1200" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 115 at 60Hz.
(II) SAVAGE(0): Not using default mode "800x600" (mode clock too high)
(II) SAVAGE(0): Not using default mode "1600x1200" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 115 at 60Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(II) SAVAGE(0): Not using default mode "1600x1200" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 115 at 72Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(II) SAVAGE(0): Not using default mode "1600x1200" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 115 at 75Hz.
(II) SAVAGE(0): Not using default mode "800x600" (vrefresh out of range)
(II) SAVAGE(0): Not using default mode "1600x1200" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): Chose mode 115 at 85Hz.
(II) SAVAGE(0): Not using default mode "800x600" (hsync out of range)
(II) SAVAGE(0): Not using default mode "1792x1344" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 896x672 60Hz.
(II) SAVAGE(0): Not using default mode "896x672" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1792x1344" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 896x672 75Hz.
(II) SAVAGE(0): Not using default mode "896x672" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1856x1392" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 928x696 60Hz.
(II) SAVAGE(0): Not using default mode "928x696" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1856x1392" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 928x696 75Hz.
(II) SAVAGE(0): Not using default mode "928x696" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1920x1440" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 960x720 60Hz.
(II) SAVAGE(0): Not using default mode "960x720" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1920x1440" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 960x720 75Hz.
(II) SAVAGE(0): Not using default mode "960x720" (no mode of this name)
(--) SAVAGE(0): No suitable BIOS mode found for 832x624 74Hz.
(II) SAVAGE(0): Not using default mode "832x624" (no mode of this name)
(--) SAVAGE(0): No suitable BIOS mode found for 416x312 74Hz.
(II) SAVAGE(0): Not using default mode "416x312" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1280x768" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 640x384 60Hz.
(II) SAVAGE(0): Not using default mode "640x384" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1280x800" (exceeds panel dimensions)
(--) SAVAGE(0): Chose mode 11e at 70Hz.
(II) SAVAGE(0): Not using default mode "1152x768" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 576x384 54Hz.
(II) SAVAGE(0): Not using default mode "576x384" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1152x864" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 576x432 85Hz.
(II) SAVAGE(0): Not using default mode "576x432" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1400x1050" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 700x525 59Hz.
(II) SAVAGE(0): Not using default mode "700x525" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1400x1050" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 700x525 70Hz.
(II) SAVAGE(0): Not using default mode "700x525" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1400x1050" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 700x525 74Hz.
(II) SAVAGE(0): Not using default mode "700x525" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1400x1050" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 700x525 85Hz.
(II) SAVAGE(0): Not using default mode "700x525" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1440x900" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 720x450 60Hz.
(II) SAVAGE(0): Not using default mode "720x450" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1600x1024" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 800x512 60Hz.
(II) SAVAGE(0): Not using default mode "800x512" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1680x1050" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 840x525 60Hz.
(II) SAVAGE(0): Not using default mode "840x525" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1920x1200" (exceeds panel dimensions)
(--) SAVAGE(0): No suitable BIOS mode found for 960x600 60Hz.
(II) SAVAGE(0): Not using default mode "960x600" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1920x1200" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 960x600 72Hz.
(II) SAVAGE(0): Not using default mode "960x600" (no mode of this name)
(II) SAVAGE(0): Not using default mode "1920x1440" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): No suitable BIOS mode found for 960x720 85Hz.
(II) SAVAGE(0): Not using default mode "960x720" (no mode of this name)
(II) SAVAGE(0): Not using default mode "2048x1536" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): Chose mode 118 at 60Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (mode clock too high)
(II) SAVAGE(0): Not using default mode "2048x1536" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): Chose mode 118 at 75Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (hsync out of range)
(II) SAVAGE(0): Not using default mode "2048x1536" (bad mode clock/interlace/doublescan)
(--) SAVAGE(0): Chose mode 118 at 85Hz.
(II) SAVAGE(0): Not using default mode "1024x768" (hsync out of range)
(--) SAVAGE(0): Chose mode 118 at 60Hz.
(--) SAVAGE(0): Chose mode 118 at 60Hz.
(--) SAVAGE(0): Chose mode 115 at 60Hz.
(--) SAVAGE(0): Chose mode 112 at 60Hz.
(--) SAVAGE(0): Chose mode 112 at 60Hz.
(--) SAVAGE(0): Chose mode 11e at 70Hz.
(--) SAVAGE(0): Chose mode 154 at 70Hz.
(--) SAVAGE(0): Chose mode 144 at 72Hz.
(--) SAVAGE(0): Chose mode 134 at 72Hz.
(--) SAVAGE(0): Virtual size is 1024x768 (pitch 1024)
(**) SAVAGE(0): *Driver mode "1024x768": 56.0 MHz, 47.3 kHz, 59.9 Hz
(II) SAVAGE(0): Modeline "1024x768"x59.9   56.00  1024 1072 1104 1184  768 771 775 790 +hsync -vsync (47.3 kHz)
(**) SAVAGE(0):  Default mode "800x600": 40.0 MHz, 37.9 kHz, 60.3 Hz
(II) SAVAGE(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz)
(**) SAVAGE(0):  Default mode "640x480": 54.0 MHz, 60.0 kHz, 60.0 Hz (D)
(II) SAVAGE(0): Modeline "640x480"x60.0   54.00  640 688 744 900  480 480 482 500 doublescan +hsync +vsync (60.0 kHz)
(**) SAVAGE(0):  Default mode "640x480": 25.2 MHz, 31.5 kHz, 59.9 Hz
(II) SAVAGE(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz)
(**) SAVAGE(0):  Default mode "640x400": 41.7 MHz, 49.7 kHz, 60.0 Hz (D)
(II) SAVAGE(0): Modeline "640x400"x60.0   41.73  640 672 740 840  400 400 402 414 doublescan (49.7 kHz)
(**) SAVAGE(0):  Default mode "512x384": 32.5 MHz, 48.4 kHz, 60.0 Hz (D)
(II) SAVAGE(0): Modeline "512x384"x60.0   32.50  512 524 592 672  384 385 388 403 doublescan -hsync -vsync (48.4 kHz)
(**) SAVAGE(0):  Default mode "400x300": 20.0 MHz, 37.9 kHz, 60.3 Hz (D)
(II) SAVAGE(0): Modeline "400x300"x60.3   20.00  400 420 484 528  300 300 302 314 doublescan +hsync +vsync (37.9 kHz)
(**) SAVAGE(0):  Default mode "320x240": 12.6 MHz, 31.5 kHz, 60.1 Hz (D)
(II) SAVAGE(0): Modeline "320x240"x60.1   12.59  320 328 376 400  240 245 246 262 doublescan -hsync -vsync (31.5 kHz)
(==) SAVAGE(0): DPI set to (96, 96)
(II) Loading sub module "fb"
(II) LoadModule: "fb"
(II) Loading /usr/lib/xorg/modules//libfb.so
(II) Module fb: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.0.0
	ABI class: X.Org ANSI C Emulation, version 0.3
(II) Loading sub module "xaa"
(II) LoadModule: "xaa"
(II) Loading /usr/lib/xorg/modules//libxaa.so
(II) Module xaa: vendor="X.Org Foundation"
	compiled for 1.4.0.90, module version = 1.2.0
	ABI class: X.Org Video Driver, version 2.0
(II) Loading sub module "ramdac"
(II) LoadModule: "ramdac"(II) Module "ramdac" already built-in
(--) Depth 24 pixmap format is 32 bpp
(II) do I need RAC?  No, I don't.
(II) resource ranges after preInit:
	[0] 0	0	0xf0000000 - 0xf7ffffff (0x8000000) MS[B]
	[1] 0	0	0xe8100000 - 0xe817ffff (0x80000) MS[B]
	[2] -1	0	0x00100000 - 0x13ffffff (0x13f00000) MX[B]E(B)
	[3] -1	0	0x000f0000 - 0x000fffff (0x10000) MX[B]
	[4] -1	0	0x000c0000 - 0x000effff (0x30000) MX[B]
	[5] -1	0	0x00000000 - 0x0009ffff (0xa0000) MX[B]
	[6] -1	0	0x14000000 - 0x14001fff (0x2000) MX[B]
	[7] -1	0	0xe8004c00 - 0xe8004fff (0x400) MX[B]
	[8] -1	0	0xe8000000 - 0xe8003fff (0x4000) MX[B]
	[9] -1	0	0xe8004000 - 0xe80047ff (0x800) MX[B]
	[10] -1	0	0xec000000 - 0xebffffff (0x0) MX[B]O
	[11] -1	0	0xf0000000 - 0xf7ffffff (0x8000000) MX[B](B)
	[12] -1	0	0xe8100000 - 0xe817ffff (0x80000) MX[B](B)
	[13] -1	0	0xe8004800 - 0xe80048ff (0x100) MX[B]
	[14] 0	0	0x000a0000 - 0x000affff (0x10000) MS[B](OprD)
	[15] 0	0	0x000b0000 - 0x000b7fff (0x8000) MS[B](OprD)
	[16] 0	0	0x000b8000 - 0x000bffff (0x8000) MS[B](OprD)
	[17] -1	0	0x0000ffff - 0x0000ffff (0x1) IX[B]
	[18] -1	0	0x00000000 - 0x000000ff (0x100) IX[B]
	[19] -1	0	0x00001c00 - 0x00001cff (0x100) IX[B]
	[20] -1	0	0x00001010 - 0x00001013 (0x4) IX[B]
	[21] -1	0	0x00001014 - 0x00001017 (0x4) IX[B]
	[22] -1	0	0x00001400 - 0x000014ff (0x100) IX[B]
	[23] -1	0	0x00001020 - 0x0000103f (0x20) IX[B]
	[24] -1	0	0x00001000 - 0x0000100f (0x10) IX[B]
	[25] -1	0	0x00001800 - 0x000018ff (0x100) IX[B]
	[26] -1	0	0x00001018 - 0x0000101f (0x8) IX[B]
	[27] 0	0	0x000003b0 - 0x000003bb (0xc) IS[B](OprU)
	[28] 0	0	0x000003c0 - 0x000003df (0x20) IS[B](OprU)
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/lib/xorg/modules//libint10.so
(II) SAVAGE(0): initializing int10
(II) SAVAGE(0): Primary V_BIOS segment is: 0xc000
(II) SAVAGE(0): VESA BIOS detected
(II) SAVAGE(0): VESA VBE Version 2.0
(II) SAVAGE(0): VESA VBE Total Mem: 15296 kB
(II) SAVAGE(0): VESA VBE OEM: S3 Incorporated. Twister BIOS
(II) SAVAGE(0): VESA VBE OEM Software Rev: 1.0
(II) SAVAGE(0): VESA VBE OEM Vendor: S3 Incorporated.
(II) SAVAGE(0): VESA VBE OEM Product: VBE 2.0
(II) SAVAGE(0): VESA VBE OEM Product Rev: Rev 1.1
(==) SAVAGE(0): Write-combining range (0xf0000000,0x8000000)
(II) SAVAGE(0): 9348 kB of Videoram needed for 3D; 16384 kB of Videoram available
(II) SAVAGE(0): Sufficient Videoram available for 3D
(II) SAVAGE(0): [drm] bpp: 32 depth: 24
(II) SAVAGE(0): [drm] Sarea 2200+284: 2484
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
drmOpenByBusid: Searching for BusID pci:0000:01:00.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 8, (OK)
drmOpenByBusid: drmOpenMinor returns 8
drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0
(II) [drm] loaded kernel module for "savage" driver.
(II) [drm] DRM interface version 1.3
(II) [drm] DRM open master succeeded.
(II) SAVAGE(0): [drm] Using the DRM lock SAREA also for drawables.
(II) SAVAGE(0): [drm] framebuffer handle = 0xf0000000
(II) SAVAGE(0): [drm] added 1 reserved context for kernel
(II) SAVAGE(0): X context handle = 0x1
(II) SAVAGE(0): [drm] installed DRM signal handler
(II) SAVAGE(0): [agp] Mode 0x1f000201 [AGP 0x1106/0x0605; Card 0x5333/0x8d01]
(II) SAVAGE(0): [agp] 16384 kB allocated with handle 0x00000001
(II) SAVAGE(0): [agp] command DMA handle = 0xec000000
(II) SAVAGE(0): [agp] agpTextures handle = 0xec100000
(II) SAVAGE(0): [drm] aperture handle = 0xf2000000
(II) SAVAGE(0): [drm] Enabling ShadowStatus for DRI.
(II) SAVAGE(0): [drm] Status handle = 0x0a9d6000
(II) SAVAGE(0): [drm] Status page mapped at 0xb7cb3000
(II) SAVAGE(0): [dri] visual configs initialized
(**) SAVAGE(0): DRI is enabled
(--) SAVAGE(0): Chose mode 118 at 60Hz.
(II) SAVAGE(0): virtualX:1024,virtualY:768
(II) SAVAGE(0): bpp:32,tiledwidthBytes:4096,tiledBufferSize:3145728 
(II) SAVAGE(0): bpp:32,widthBytes:4096,BufferSize:3145728 
(II) SAVAGE(0): videoRambytes:0x01000000 
(II) SAVAGE(0): textureSize:0x004df000 
(II) SAVAGE(0): textureSize:0x004df000 
(II) SAVAGE(0): textureOffset:0x00b00000 
(II) SAVAGE(0): depthOffset:0x00800000,depthPitch:4096
(II) SAVAGE(0): backOffset:0x00500000,backPitch:4096
(II) SAVAGE(0): Reserved back buffer at offset 0x500000
(II) SAVAGE(0): Reserved depth buffer at offset 0x800000
(II) SAVAGE(0): Reserved 4988 kb for textures at offset 0xb00000
(II) SAVAGE(0): Using 511 lines for offscreen memory.
(II) SAVAGE(0): Using XFree86 Acceleration Architecture (XAA)
	Screen to screen bit blits
	Solid filled rectangles
	8x8 mono pattern filled rectangles
	Indirect CPU to Screen color expansion
	Solid Lines
	Image Writes
	Offscreen Pixmaps
	Setting up tile and stipple cache:
		24 128x128 slots
(==) SAVAGE(0): Backing store disabled
(**) Option "dpms" "true"
(**) SAVAGE(0): DPMS enabled
(II) SAVAGE(0): [DRI] installation complete
(II) SAVAGE(0): [junkers]pSAVAGEDRIServer:
(II) SAVAGE(0): [junkers]	reserved_map_agpstart:0x00000000
(II) SAVAGE(0): [junkers]	reserved_map_idx:0x00000000
(II) SAVAGE(0): [junkers]	sarea_priv_offset:0x00000000
(II) SAVAGE(0): [junkers]	chipset:0x00000000
(II) SAVAGE(0): [junkers]	sgram:0x00000000
(II) SAVAGE(0): [junkers]	frontbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	frontOffset:0x00000000
(II) SAVAGE(0): [junkers]	frontPitch:0x00001000
(II) SAVAGE(0): [junkers]	backbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	backOffset:0x00500000
(II) SAVAGE(0): [junkers]	backPitch:0x00001000
(II) SAVAGE(0): [junkers]	depthbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	depthOffset:0x00800000
(II) SAVAGE(0): [junkers]	depthPitch:0x00001000
(II) SAVAGE(0): [junkers]	textureOffset:0x00b00000
(II) SAVAGE(0): [junkers]	textureSize:0x004df000
(II) SAVAGE(0): [junkers]	textureSize:0x004df000
(II) SAVAGE(0): [junkers]	logTextureGranularity:0x00000000
(II) SAVAGE(0): [junkers]	agp:handle:0x00000001
(II) SAVAGE(0): [junkers]	agp:offset:0x01000000
(II) SAVAGE(0): [junkers]	agp:size:0x01000000
(II) SAVAGE(0): [junkers]	agp:map:0x00000000
(II) SAVAGE(0): [junkers]	registers:handle:0xe8100000
(II) SAVAGE(0): [junkers]	registers:offset:0x00000000
(II) SAVAGE(0): [junkers]	registers:size:0x00080000
(II) SAVAGE(0): [junkers]	registers:map:0x00000000
(II) SAVAGE(0): [junkers]	status:handle:0x0a9d6000
(II) SAVAGE(0): [junkers]	status:offset:0x00000000
(II) SAVAGE(0): [junkers]	status:size:0x00001000
(II) SAVAGE(0): [junkers]	status:map:0xb7cb3000
(II) SAVAGE(0): [junkers]	agpTextures:handle:0xec100000
(II) SAVAGE(0): [junkers]	agpTextures:offset:0x00100000
(II) SAVAGE(0): [junkers]	agpTextures:size:0x00f00000
(II) SAVAGE(0): [junkers]	apgTextures:map:0x00000000
(II) SAVAGE(0): [junkers]	logAgpTextureGranularity:0x00000000
(II) SAVAGE(0): [junkers]	cmdDma:handle:0xec000000
(II) SAVAGE(0): [junkers]	cmdDma:offset:0x00000000
(II) SAVAGE(0): [junkers]	cmdDma:size:0x00100000
(II) SAVAGE(0): [junkers]	cmdDma:map:0x00000000
(II) SAVAGE(0): [junkers]pSAVAGEDRI:
(II) SAVAGE(0): [junkers]	chipset:0x00000005
(II) SAVAGE(0): [junkers]	width:0x00000400
(II) SAVAGE(0): [junkers]	height:0x00000300
(II) SAVAGE(0): [junkers]	mem:0x01000000
(II) SAVAGE(0): [junkers]	cpp:4
(II) SAVAGE(0): [junkers]	zpp:4
(II) SAVAGE(0): [junkers]	agpMode:1
(II) SAVAGE(0): [junkers]	bufferSize:65536
(II) SAVAGE(0): [junkers]	frontbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	frontOffset:0x00000000
(II) SAVAGE(0): [junkers]	backbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	backOffset:0x00500000
(II) SAVAGE(0): [junkers]	depthbufferSize:0x00300000
(II) SAVAGE(0): [junkers]	depthOffset:0x00800000
(II) SAVAGE(0): [junkers]	textureOffset:0x00b00000
(II) SAVAGE(0): [junkers]	textureSize:0x00480000
(II) SAVAGE(0): [junkers]	logTextureGranularity:0x00000013
(II) SAVAGE(0): [junkers]	agpTextureHandle:0xec100000
(II) SAVAGE(0): [junkers]	agpTextureSize:0x00f00000
(II) SAVAGE(0): [junkers]	logAgpTextureGranularity:0x00000014
(II) SAVAGE(0): [junkers]	apertureHandle:0xf2000000
(II) SAVAGE(0): [junkers]	apertureSize:0x05000000
(II) SAVAGE(0): [junkers]	aperturePitch:0x00002000
(II) SAVAGE(0): [junkers]	statusHandle:0x0a9d6000
(II) SAVAGE(0): [junkers]	statusSize:0x00001000
(II) SAVAGE(0): [junkers]	sarea_priv_offset:0x00000898
(II) SAVAGE(0): Direct rendering enabled
(==) RandR enabled
(II) Initializing built-in extension MIT-SHM
(II) Initializing built-in extension XInputExtension
(II) Initializing built-in extension XTEST
(II) Initializing built-in extension XKEYBOARD
(II) Initializing built-in extension XC-APPGROUP
(II) Initializing built-in extension XAccessControlExtension
(II) Initializing built-in extension SECURITY
(II) Initializing built-in extension XINERAMA
(II) Initializing built-in extension XFIXES
(II) Initializing built-in extension XFree86-Bigfont
(II) Initializing built-in extension RENDER
(II) Initializing built-in extension RANDR
(II) Initializing built-in extension COMPOSITE
(II) Initializing built-in extension DAMAGE
(II) Initializing built-in extension XEVIE
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 9, (OK)
drmOpenByBusid: Searching for BusID pci:0000:01:00.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 9, (OK)
drmOpenByBusid: drmOpenMinor returns 9
drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0
(WW) AIGLX: 3D driver claims to not support visual 0x23
(WW) AIGLX: 3D driver claims to not support visual 0x24
(WW) AIGLX: 3D driver claims to not support visual 0x25
(WW) AIGLX: 3D driver claims to not support visual 0x26
(WW) AIGLX: 3D driver claims to not support visual 0x27
(WW) AIGLX: 3D driver claims to not support visual 0x28
(WW) AIGLX: 3D driver claims to not support visual 0x29
(WW) AIGLX: 3D driver claims to not support visual 0x2a
(WW) AIGLX: 3D driver claims to not support visual 0x2b
(WW) AIGLX: 3D driver claims to not support visual 0x2c
(WW) AIGLX: 3D driver claims to not support visual 0x2d
(WW) AIGLX: 3D driver claims to not support visual 0x2e
(WW) AIGLX: 3D driver claims to not support visual 0x2f
(WW) AIGLX: 3D driver claims to not support visual 0x30
(WW) AIGLX: 3D driver claims to not support visual 0x31
(WW) AIGLX: 3D driver claims to not support visual 0x32
(II) AIGLX: Loaded and initialized /usr/lib/dri/savage_dri.so
(II) GLX: Initialized DRI GL provider for screen 0
(**) Option "CoreKeyboard"
(**) Keyboard0: always reports core events
(**) Option "Protocol" "standard"
(**) Keyboard0: Protocol: standard
(**) Option "AutoRepeat" "500 30"
(**) Option "XkbRules" "xorg"
(**) Keyboard0: XkbRules: "xorg"
(**) Option "XkbModel" "pc105"
(**) Keyboard0: XkbModel: "pc105"
(**) Option "XkbLayout" "de"
(**) Keyboard0: XkbLayout: "de"
(**) Option "XkbVariant" "nodeadkeys"
(**) Keyboard0: XkbVariant: "nodeadkeys"
(**) Option "CustomKeycodes" "off"
(**) Keyboard0: CustomKeycodes disabled
(**) Option "Protocol" "IMPS/2"
(**) PS/2 Mouse: Device: "/dev/psaux"
(**) PS/2 Mouse: Protocol: "IMPS/2"
(**) Option "SendCoreEvents"
(**) PS/2 Mouse: always reports core events
(**) Option "Device" "/dev/psaux"
(**) Option "Emulate3Buttons" "true"
(**) Option "Emulate3Timeout" "70"
(**) PS/2 Mouse: Emulate3Buttons, Emulate3Timeout: 70
(**) Option "ZAxisMapping" "4 5"
(**) PS/2 Mouse: ZAxisMapping: buttons 4 and 5
(**) PS/2 Mouse: Buttons: 9
(**) PS/2 Mouse: Sensitivity: 1
(II) Synaptics touchpad driver version 0.14.6 (1406)
(--) ALPS TouchPad auto-dev sets device to /dev/input/event4
(**) Option "Device" "/dev/input/event4"
(**) Option "LeftEdge" "120"
(**) Option "RightEdge" "830"
(**) Option "TopEdge" "120"
(**) Option "BottomEdge" "650"
(**) Option "VertScrollDelta" "20"
(**) Option "HorizScrollDelta" "20"
(**) Option "EdgeMotionMinSpeed" "15"
(**) Option "EdgeMotionMaxSpeed" "15"
(**) Option "FingerLow" "14"
(**) Option "FingerHigh" "15"
(**) Option "MaxTapTime" "180"
(**) Option "MaxTapMove" "110"
(**) Option "EmulateMidButtonTime" "75"
(**) Option "UpDownScrolling" "1"
(**) Option "CircularScrolling" "1"
(**) Option "CircScrollTrigger" "2"
(--) ALPS TouchPad touchpad found
(**) Option "CorePointer"
(**) ALPS TouchPad: always reports core events
(II) evaluating device (ALPS TouchPad)
(II) XINPUT: Adding extended input device "ALPS TouchPad" (type: MOUSE)
(II) evaluating device (PS/2 Mouse)
(II) XINPUT: Adding extended input device "PS/2 Mouse" (type: MOUSE)
(II) evaluating device (Keyboard0)
(II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD)
(--) ALPS TouchPad auto-dev sets device to /dev/input/event4
(**) Option "Device" "/dev/input/event4"
(--) ALPS TouchPad touchpad found
(II) PS/2 Mouse: ps2EnableDataReporting: succeeded


-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.25-4.slh.3-sidux-686 (SMP w/1 CPU core; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages xserver-xorg-video-savage depends on:
ii  libc6              2.7-11                GNU C Library: Shared libraries
ii  xserver-xorg-core  2:1.4.1~git20080517-1 Xorg X server - core server

xserver-xorg-video-savage recommends no packages.

-- no debconf information
commit fd2a598e64a522c028a20444379fa200a5724e62
Author: Alex Deucher <alex@botch2.(none)>
Date:   Sat Jan 19 12:00:16 2008 -0500

    Fix reversed logic in SavageMapMem()

diff --git a/src/savage_driver.c b/src/savage_driver.c
index 9d4209a..8209afe 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3156,8 +3156,8 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
         }
 
         psav->ApertureMap = (psav->IsSecondary)
-            ? psav->ApertureRegion.memory
-            : psav->ApertureRegion.memory + 0x1000000;
+            ? psav->ApertureRegion.memory + 0x1000000
+            : psav->ApertureRegion.memory;
     }
 
     if (psav->MmioRegion.memory == NULL) {
--- b/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -40,7 +40,6 @@
 #endif
 
 #include <unistd.h>
-#include <errno.h>
 
 #include "xf86RAC.h"
 #include "shadowfb.h"
@@ -73,13 +72,7 @@
 
 static const OptionInfoRec * SavageAvailableOptions(int chipid, int busid);
 static void SavageIdentify(int flags);
-#ifdef XSERVER_LIBPCIACCESS
-static Bool SavagePciProbe(DriverPtr drv, int entity_num,
-			   struct pci_device *dev, intptr_t match_data);
-#else
 static Bool SavageProbe(DriverPtr drv, int flags);
-static int LookupChipID(PciChipsets* pset, int ChipID);
-#endif
 static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags);
 
 static Bool SavageEnterVT(int scrnIndex, int flags);
@@ -139,38 +132,18 @@
 
 int gSavageEntityIndex = -1;
 
+_X_EXPORT DriverRec SAVAGE =
+{
+    SAVAGE_VERSION,
+    SAVAGE_DRIVER_NAME,
+    SavageIdentify,
+    SavageProbe,
+    SavageAvailableOptions,
+    NULL,
+    0,
+    NULL
+};
-#ifdef XSERVER_LIBPCIACCESS
-#define SAVAGE_DEVICE_MATCH(d, i) \
-    { 0x5333, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) }
-
-static const struct pci_id_match savage_device_match[] = {
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE4,         S3_SAVAGE4),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE3D,        S3_SAVAGE3D),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE3D_MV,     S3_SAVAGE3D),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE2000,      S3_SAVAGE2000),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE_MX_MV,    S3_SAVAGE_MX),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE_MX,       S3_SAVAGE_MX),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE_IX_MV,    S3_SAVAGE_MX),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SAVAGE_IX,       S3_SAVAGE_MX),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_PROSAVAGE_PM,    S3_PROSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_PROSAVAGE_KM,    S3_PROSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_S3TWISTER_P,     S3_TWISTER),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_S3TWISTER_K,     S3_TWISTER),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_MX128,    S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_MX64,     S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_MX64C,    S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IX128SDR, S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IX128DDR, S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IX64SDR,  S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IX64DDR,  S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IXCSDR,   S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_SUPSAV_IXCDDR,   S3_SUPERSAVAGE),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_PROSAVAGE_DDR,   S3_PROSAVAGEDDR),
-    SAVAGE_DEVICE_MATCH(PCI_CHIP_PROSAVAGE_DDRK,  S3_PROSAVAGEDDR),
 
-    { 0, 0, 0 },
-};
-#endif
 
 /* Supported chipsets */
 
@@ -213,7 +186,6 @@
     { -1,		NULL }
 };
 
-#ifndef XSERVER_LIBPCIACCESS
 /* This table maps a PCI device ID to a chipset family identifier. */
 
 static PciChipsets SavagePciChipsets[] = {
@@ -242,7 +214,6 @@
     { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IXCDDR,	RES_SHARED_VGA },
     { -1,		-1,			RES_UNDEFINED }
 };
-#endif
 
 typedef enum {
      OPTION_PCI_BURST
@@ -314,28 +285,6 @@
     { -1,		NULL,		OPTV_NONE,    {0}, FALSE }
 };
 
-_X_EXPORT DriverRec SAVAGE =
-{
-    SAVAGE_VERSION,
-    SAVAGE_DRIVER_NAME,
-    SavageIdentify,
-#ifdef XSERVER_LIBPCIACCESS
-    NULL,
-#else
-    SavageProbe,
-#endif
-    SavageAvailableOptions,
-    NULL,
-    0,
-    NULL,
-
-#ifdef XSERVER_LIBPCIACCESS
-    savage_device_match,
-    SavagePciProbe
-#endif
-};
-
-
 
 static const char *vgaHWSymbols[] = {
     "vgaHWBlankScreen",
@@ -839,82 +788,6 @@
 }
 
 
-#ifdef XSERVER_LIBPCIACCESS
-static Bool SavagePciProbe(DriverPtr drv, int entity_num,
-			   struct pci_device *dev, intptr_t match_data)
-{
-    ScrnInfoPtr pScrn;
-
-
-    if ((match_data < S3_SAVAGE3D) || (match_data > S3_SAVAGE2000)) {
- 	return FALSE;
-    }
-
-    pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL,
-				RES_SHARED_VGA, NULL, NULL, NULL, NULL);
-    if (pScrn != NULL) {
-	EntityInfoPtr pEnt;
-	SavagePtr psav;
-
-
-	pScrn->driverVersion = SAVAGE_VERSION;
-	pScrn->driverName = SAVAGE_DRIVER_NAME;
-	pScrn->name = "SAVAGE";
-	pScrn->Probe = NULL;
-	pScrn->PreInit = SavagePreInit;
-	pScrn->ScreenInit = SavageScreenInit;
-	pScrn->SwitchMode = SavageSwitchMode;
-	pScrn->AdjustFrame = SavageAdjustFrame;
-	pScrn->EnterVT = SavageEnterVT;
-	pScrn->LeaveVT = SavageLeaveVT;
-	pScrn->FreeScreen = NULL;
-	pScrn->ValidMode = SavageValidMode;
-
-	if (!SavageGetRec(pScrn))
-	    return FALSE;
-
-	psav = SAVPTR(pScrn);
-
-	psav->PciInfo = dev;
-	psav->Chipset = match_data;
-
-	pEnt = xf86GetEntityInfo(entity_num);
-
-	/* MX, IX, SuperSavage cards support Dual-Head, mark the entity as
-	 * sharable.
-	 */
-	if (pEnt->chipset == S3_SAVAGE_MX || pEnt->chipset == S3_SUPERSAVAGE) {
-	    DevUnion   *pPriv;
-	    SavageEntPtr pSavageEnt;
-
-	    xf86SetEntitySharable(entity_num);
-
-	    if (gSavageEntityIndex == -1)
-	        gSavageEntityIndex = xf86AllocateEntityPrivateIndex();
-
-	    pPriv = xf86GetEntityPrivate(pEnt->index, gSavageEntityIndex);
-	    if (!pPriv->ptr) {
-		int j;
-		int instance = xf86GetNumEntityInstances(pEnt->index);
-
-		for (j = 0; j < instance; j++)
-		    xf86SetEntityInstanceForScreen(pScrn, pEnt->index, j);
-
-		pPriv->ptr = xnfcalloc(sizeof(SavageEntRec), 1);
-		pSavageEnt = pPriv->ptr;
-		pSavageEnt->HasSecondary = FALSE;
-	    } else {
-		pSavageEnt = pPriv->ptr;
-		pSavageEnt->HasSecondary = TRUE;
-	    }
-	}
-    }
-
-    return (pScrn != NULL);
-}
-
-#else
-
 static Bool SavageProbe(DriverPtr drv, int flags)
 {
     int i;
@@ -953,8 +826,6 @@
 						    NULL, NULL, NULL, NULL);
 
             if (pScrn != NULL) {
-		SavagePtr psav;
-
  	        pScrn->driverVersion = SAVAGE_VERSION;
 	        pScrn->driverName = SAVAGE_DRIVER_NAME;
 	        pScrn->name = "SAVAGE";
@@ -968,23 +839,6 @@
 	        pScrn->FreeScreen = NULL;
 	        pScrn->ValidMode = SavageValidMode;
 	        foundScreen = TRUE;
-
-		if (!SavageGetRec(pScrn))
-		    return FALSE;
-
-		psav = SAVPTR(pScrn);
-
-		psav->PciInfo = xf86GetPciInfoForEntity(pEnt->index);
-		if (pEnt->device->chipset && *pEnt->device->chipset) {
-		    psav->Chipset = xf86StringToToken(SavageChipsets,
-						      pEnt->device->chipset);
-		} else if (pEnt->device->chipID >= 0) {
-		    psav->Chipset = LookupChipID(SavagePciChipsets,
-						 pEnt->device->chipID);
-		} else {
-		    psav->Chipset = LookupChipID(SavagePciChipsets, 
-						 psav->PciInfo->chipType);
-		}
 	    }
 
             pEnt = xf86GetEntityInfo(usedChips[i]);
@@ -1038,7 +892,6 @@
 
     return -1;
 }
-#endif
 
 static void SavageDoDDC(ScrnInfoPtr pScrn)
 {
@@ -1553,6 +1406,7 @@
 	psav->pVbe = VBEInit(NULL, pEnt->index);
     }
 
+    psav->PciInfo = xf86GetPciInfoForEntity(pEnt->index);
     xf86RegisterResources(pEnt->index, NULL, ResNone);
     xf86SetOperatingState(resVgaIo, pEnt->index, ResUnusedOpr);
     xf86SetOperatingState(resVgaMem, pEnt->index, ResDisableOpr);
@@ -1561,9 +1415,11 @@
     if (pEnt->device->chipset && *pEnt->device->chipset) {
 	pScrn->chipset = pEnt->device->chipset;
 	psav->ChipId = pEnt->device->chipID;
+	psav->Chipset = xf86StringToToken(SavageChipsets, pScrn->chipset);
 	from = X_CONFIG;
     } else if (pEnt->device->chipID >= 0) {
 	psav->ChipId = pEnt->device->chipID;
+	psav->Chipset = LookupChipID(SavagePciChipsets, psav->ChipId);
 	pScrn->chipset = (char *)xf86TokenToString(SavageChipsets,
 						   psav->Chipset);
 	from = X_CONFIG;
@@ -1571,7 +1427,8 @@
 		   pEnt->device->chipID);
     } else {
 	from = X_PROBED;
+	psav->ChipId = psav->PciInfo->chipType;
+	psav->Chipset = LookupChipID(SavagePciChipsets, psav->ChipId);
-	psav->ChipId = DEVICE_ID(psav->PciInfo);
 	pScrn->chipset = (char *)xf86TokenToString(SavageChipsets,
 						   psav->Chipset);
     }
@@ -1584,7 +1441,7 @@
 	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n",
 		   psav->ChipRev);
     } else
+	psav->ChipRev = psav->PciInfo->chipRev;
-	psav->ChipRev = CHIP_REVISION(psav->PciInfo);
 
     xf86DrvMsg(pScrn->scrnIndex, from, "Engine: \"%s\"\n", pScrn->chipset);
 
@@ -1593,22 +1450,13 @@
 
     xfree(pEnt);
 
-#ifndef XSERVER_LIBPCIACCESS
     psav->PciTag = pciTag(psav->PciInfo->bus, psav->PciInfo->device,
 			  psav->PciInfo->func);
-#endif
 
 
     /* Set AGP Mode from config */
     /* We support 1X 2X and 4X  */
 #ifdef XF86DRI
-#ifdef XSERVER_LIBPCIACCESS
-    /* Try to read the AGP capabilty block from the device.  If there is
-     * no AGP info, the device is PCI.
-     */
-
-    psav->IsPCI = (pci_device_get_agp_info(psav->PciInfo) == NULL);
-#else
 				/* AGP/PCI (FK: copied from radeon_driver.c) */
     /* Proper autodetection of an AGP capable device requires examining
      * PCI config registers to determine if the device implements extended
@@ -1667,7 +1515,6 @@
 	    cap_ptr = (cap_id >> 8) & SAVAGE_CAP_PTR_MASK;
 	}
     }
-#endif
 
     xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "%s card detected\n",
 	       (psav->IsPCI) ? "PCI" : "AGP");
@@ -3061,132 +2908,97 @@
 static Bool SavageMapMem(ScrnInfoPtr pScrn)
 {
     SavagePtr psav = SAVPTR(pScrn);
+    int mode;
+    unsigned i;
-    int err;
 
     TRACE(("SavageMapMem()\n"));
 
     if( S3_SAVAGE3D_SERIES(psav->Chipset) ) {
+	psav->MmioRegion.bar = 0;
+	psav->MmioRegion.offset = SAVAGE_NEWMMIO_REGBASE_S3;
+
+	psav->FbRegion.bar = 0;
+	psav->FbRegion.offset = 0;
+
+	psav->last_bar = 0;
-#ifdef XSERVER_LIBPCIACCESS
-        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S3
-            + psav->PciInfo->regions[0].base_addr;
-        psav->FbRegion.base = psav->PciInfo->regions[0].base_addr;
-#else
-        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S3
-            + psav->PciInfo->memBase[0];
-        psav->FbRegion.base = psav->PciInfo->memBase[0];
-#endif
     } else {
+	psav->MmioRegion.bar = 0;
+	psav->MmioRegion.offset = SAVAGE_NEWMMIO_REGBASE_S4;
+
+	psav->FbRegion.bar = 1;
+	psav->FbRegion.offset = 0;
+
+	psav->last_bar = 1;
-#ifdef XSERVER_LIBPCIACCESS
-        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S4
-            + psav->PciInfo->regions[0].base_addr;
-        psav->FbRegion.base = psav->PciInfo->regions[1].base_addr;
-#else
-        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S4 
-            + psav->PciInfo->memBase[0];
-        psav->FbRegion.base = psav->PciInfo->memBase[1];
-#endif
     }
 
-    psav->MmioRegion.size = SAVAGE_NEWMMIO_REGSIZE;
-    psav->FbRegion.size = psav->videoRambytes;
-
     /* On Paramount and Savage 2000, aperture 0 is PCI base 2.  On other
      * chipsets it's in the same BAR as the framebuffer.
      */
     if ((psav->Chipset == S3_SUPERSAVAGE) 
+	|| (psav->Chipset == S3_SAVAGE2000)) {
+	psav->ApertureRegion.bar = 2;
+	psav->ApertureRegion.offset = 0;
+
+	psav->last_bar = 2;
-        || (psav->Chipset == S3_SAVAGE2000)) {
-#ifdef XSERVER_LIBPCIACCESS
-        psav->ApertureRegion.base = psav->PciInfo->regions[2].base_addr;
-#else
-        psav->ApertureRegion.base = psav->PciInfo->memBase[2];
-#endif
     } else {
+	psav->ApertureRegion.bar = psav->FbRegion.bar;
+	psav->ApertureRegion.offset = 0x02000000;
-        psav->ApertureRegion.base = psav->FbRegion.base + 0x02000000;
     }
 
-    psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
-        ? (0x01000000 * 2) : (0x01000000 * 5);
 
+    psav->MmioBase = psav->PciInfo->memBase[ psav->MmioRegion.bar ]
+      + psav->MmioRegion.offset;
+
+    psav->FrameBufferBase = psav->PciInfo->memBase[ psav->FbRegion.bar ]
+      + psav->FbRegion.offset;
 
+    psav->ApertureBase = psav->PciInfo->memBase[ psav->FbRegion.bar ]
+      + psav->ApertureRegion.offset;
+
+
+    /* FIXME: This seems fine even on Savage3D where the same BAR contains the
+     * FIXME: MMIO space and the framebuffer.  Write-combining gets fixed up
+     * FIXME: later.  Someone should investigate this, though.  And kick S3
+     * FIXME: for doing something so silly.
+     */
+    mode = VIDMEM_MMIO;
+    for (i = 0; i <= psav->last_bar; i++) {
+	psav->bar_mappings[i] = xf86MapPciMem(pScrn->scrnIndex, mode,
+					      psav->PciTag,
+					      psav->PciInfo->memBase[i],
+					      (1U << psav->PciInfo->size[i]));
+	if (!psav->bar_mappings[i]) {
+	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+		       "Internal error: cound not map PCI region %u, last BAR = %u\n",
+		       i, psav->last_bar);
+	    return FALSE;
+	}
+
+	mode = VIDMEM_FRAMEBUFFER;
-    if (psav->FbRegion.size != 0) {
-#ifdef XSERVER_LIBPCIACCESS
-        err = pci_device_map_range(psav->PciInfo, psav->FbRegion.base,
-                                   psav->FbRegion.size,
-                                   (PCI_DEV_MAP_FLAG_WRITABLE
-                                    | PCI_DEV_MAP_FLAG_WRITE_COMBINE),
-                                   & psav->FbRegion.memory);
-#else
-        psav->FbRegion.memory = 
-            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
-                          psav->PciTag, psav->FbRegion.base,
-                          psav->FbRegion.size);
-        err = (psav->FbRegion.memory == NULL) ? errno : 0;
-#endif
-        if (err) {
-            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map framebuffer range (%d, %s).\n",
-                       err, strerror(err));
-            return FALSE;
-        }
-
-        psav->FBBase = psav->FbRegion.memory;
-        psav->FBStart = (psav->IsSecondary)
-            ? psav->FBBase + 0x1000000 : psav->FBBase;
     }
 
+    psav->MapBase = psav->bar_mappings[ psav->MmioRegion.bar ]
+      + psav->MmioRegion.offset;
+
+    psav->BciMem = psav->MapBase + 0x10000;
+
+    SavageEnableMMIO(pScrn);
+
+    psav->FBBase = psav->bar_mappings[ psav->FbRegion.bar ]
+      + psav->FbRegion.offset;
-    if (psav->ApertureRegion.memory == NULL) {
-#ifdef XSERVER_LIBPCIACCESS
-        err = pci_device_map_range(psav->PciInfo, psav->ApertureRegion.base,
-                                   psav->ApertureRegion.size,
-                                   (PCI_DEV_MAP_FLAG_WRITABLE
-                                    | PCI_DEV_MAP_FLAG_WRITE_COMBINE),
-                                   & psav->ApertureRegion.memory);
-#else
-        psav->ApertureRegion.memory = 
-            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
-                          psav->PciTag, psav->ApertureRegion.base,
-                          psav->ApertureRegion.size);
-        err = (psav->ApertureRegion.memory == NULL) ? errno : 0;
-#endif
-        if (err) {
-            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map aperture range (%d, %s).\n",
-                       err, strerror(err));
-            return FALSE;
-        }
-
-        psav->ApertureMap = (psav->IsSecondary)
-            ? psav->ApertureRegion.memory
-            : psav->ApertureRegion.memory + 0x1000000;
-    }
 
+    psav->FBStart = (psav->IsSecondary)
+      ? psav->FBBase + 0x1000000 : psav->FBBase;
-    if (psav->MmioRegion.memory == NULL) {
-#ifdef XSERVER_LIBPCIACCESS
-        err = pci_device_map_range(psav->PciInfo, psav->MmioRegion.base,
-                                   psav->MmioRegion.size,
-                                   (PCI_DEV_MAP_FLAG_WRITABLE),
-                                   & psav->MmioRegion.memory);
-#else
-        psav->MmioRegion.memory = 
-            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
-                          psav->PciTag, psav->MmioRegion.base,
-                          psav->MmioRegion.size);
-        err = (psav->MmioRegion.memory == NULL) ? errno : 0;
-#endif
-        if (err) {
-            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map MMIO range (%d, %s).\n",
-                       err, strerror(err));
-            return FALSE;
-        }
 
+    psav->ApertureMap = psav->bar_mappings[ psav->ApertureRegion.bar ]
+      + psav->ApertureRegion.offset;
-        psav->MapBase = psav->MmioRegion.memory;
-        psav->BciMem = psav->MapBase + 0x10000;
 
+    if (psav->IsSecondary) {
+	psav->ApertureMap += 0x1000000;
-        SavageEnableMMIO(pScrn);
     }
 
+    pScrn->memPhysBase = psav->PciInfo->memBase[0];
+
-    pScrn->memPhysBase = psav->FbRegion.base;
     return TRUE;
 }
 
@@ -3194,55 +3006,30 @@
 static void SavageUnmapMem(ScrnInfoPtr pScrn, int All)
 {
     SavagePtr psav = SAVPTR(pScrn);
+    unsigned i;
 
     TRACE(("SavageUnmapMem(%x,%x)\n", psav->MapBase, psav->FBBase));
 
     if (psav->PrimaryVidMapped) {
+	vgaHWUnmapMem(pScrn);
+	psav->PrimaryVidMapped = FALSE;
-        vgaHWUnmapMem(pScrn);
-        psav->PrimaryVidMapped = FALSE;
     }
 
     SavageDisableMMIO(pScrn);
 
+    for (i = (All) ? 0 : 1; i <= psav->last_bar; i++) {
+	if (psav->bar_mappings[i]) {
+	    xf86UnMapVidMem(pScrn->scrnIndex, psav->bar_mappings[i],
+			    (1U << psav->PciInfo->size[i]));
+	    psav->bar_mappings[i] = NULL;
+	}
-    if (All && (psav->MmioRegion.memory != NULL)) {
-#ifdef XSERVER_LIBPCIACCESS
-        pci_device_unmap_range(psav->PciInfo,
-                               psav->MmioRegion.memory,
-                               psav->MmioRegion.size);
-#else
-        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->MapBase,
-                        SAVAGE_NEWMMIO_REGSIZE);
-#endif
-
-        psav->MmioRegion.memory = NULL;
-        psav->MapBase = 0;
-        psav->BciMem = 0;
-    }
-
-    if (psav->FbRegion.memory != NULL) {
-#ifdef XSERVER_LIBPCIACCESS
-        pci_device_unmap_range(psav->PciInfo,
-                               psav->FbRegion.memory,
-                               psav->FbRegion.size);
-#else
-        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->FbRegion.base,
-                        psav->FbRegion.size);
-#endif
     }
 
+    if (All) {
+	psav->MapBase = 0;
+	psav->BciMem = 0;
-    if (psav->ApertureRegion.memory != NULL) {
-#ifdef XSERVER_LIBPCIACCESS
-        pci_device_unmap_range(psav->PciInfo,
-                               psav->ApertureRegion.memory,
-                               psav->ApertureRegion.size);
-#else
-        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->ApertureRegion.base,
-                        psav->ApertureRegion.size);
-#endif
     }
+    
-
-    psav->FbRegion.memory = NULL;
-    psav->ApertureRegion.memory = NULL;
     psav->FBBase = 0;
     psav->FBStart = 0;
     psav->ApertureMap = 0;
@@ -3331,7 +3118,7 @@
 
     if( psav->ShadowStatus ) {
 	psav->ShadowPhysical = 
+	    psav->FrameBufferBase + psav->CursorKByte*1024 + 4096 - 32;
-	    psav->FbRegion.base + psav->CursorKByte*1024 + 4096 - 32;
 	
 	psav->ShadowVirtual = (CARD32 *)
 	    (psav->FBBase + psav->CursorKByte*1024 + 4096 - 32);
#--- b/ChangeLog
#+++ a/ChangeLog
#@@ -1,82 +1,3 @@
#-commit 9c959f53ca8376aa136a9d434c3383cdb20487c2
#-Author: Alex Deucher <alex@botch2.(none)>
#-Date:   Fri Sep 14 20:21:12 2007 -0400
#-
#-    fix the build for the non-pci-rework case (compile tested only)
#-
#-commit 846a69f70d189c486448df269a512b8d42fab0c2
#-Author: Alex Deucher <alex@botch2.(none)>
#-Date:   Fri Sep 14 20:13:33 2007 -0400
#-
#-    fix segfault from pScrn->currentMode
#-    
#-    should fix bug 12260
#-
#-commit 53a2088c5590bb96ce9a7ad30d908c7ea1d54027
#-Merge: 7da1a03... 0287432...
#-Author: James Cloos <cloos@jhcloos.com>
#-Date:   Mon Sep 3 06:08:13 2007 -0400
#-
#-    Merge branch 'master' of ssh://git.freedesktop.org/git/xorg/driver/xf86-video-savage
#-
#-commit 7da1a03d4b8b40483001b1f6e56dae655a1797f4
#-Author: James Cloos <cloos@jhcloos.com>
#-Date:   Mon Sep 3 05:52:43 2007 -0400
#-
#-    Add *~ to .gitignore to skip patch/emacs droppings
#-
#-commit 0287432c65231460fadff7d8d7b332208e345a31
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Fri Aug 31 13:07:17 2007 -0700
#-
#-    Fix odd typo.
#-
#-commit 514dc647d108e179965adb1377b1d4c011afa367
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Thu Aug 30 17:53:11 2007 -0700
#-
#-    Update to use new libpciaccess interfaces for mapping with MTRR support.
#-
#-commit 1eec792391d9ce9127817107100a53382f167749
#-Merge: 4a87cab... ffc5ba7...
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Thu Aug 23 18:21:37 2007 -0700
#-
#-    Merge branch 'pci-rework'
#-
#-commit 4a87cab2765df548a3b5d796e19568a2576306b8
#-Author: James Cloos <cloos@jhcloos.com>
#-Date:   Thu Aug 23 19:25:53 2007 -0400
#-
#-    Rename .cvsignore to .gitignore
#-
#-commit ffc5ba7f0b1cdefdcecf6bd47018b6a4924bfc44
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Wed Aug 22 12:38:14 2007 -0700
#-
#-    Merge PCI-rework support and "classic" PCI interface support into one tree
#-    
#-    First pass at merging both trees.  So far, this has only been compile
#-    tested.  I need to dig out a savage card to put in a system for
#-    testing, so it may take another hour or two.
#-
#-commit 68ceead721aeb75b9faed6297407a320a83499e4
#-Merge: da23218... bf5e2a5...
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Wed Aug 22 11:45:43 2007 -0700
#-
#-    Merge branch 'master' into pci-rework
#-    
#-    Conflicts:
#-    
#-    	src/savage_driver.h
#-
#-commit da23218b067d9b1808fc1168737c79b3349af09e
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Wed Aug 22 11:42:47 2007 -0700
#-
#-    dos2unix
#-
# commit bf5e2a5d33fbab07bc3606927c58a3a04a5c9b1e
# Author: Julien Cristau <jcristau@debian.org>
# Date:   Fri Aug 17 03:25:48 2007 +0200
#@@ -179,17 +100,6 @@
#     SavageCloseScreen() unmaps memory, but SavageScreenInit()
#     never maps it again.
# 
#-commit 36c444e80324c82f7d02d9d95372123c923336a0
#-Merge: f2191d4... e361a95...
#-Author: Ian Romanick <idr@us.ibm.com>
#-Date:   Mon Dec 11 13:16:53 2006 -0800
#-
#-    Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/driver/xf86-video-savage into pci-rework
#-    
#-    Conflicts:
#-    
#-    	src/savage_driver.c
#-
# commit 37240b81daa4ed46c27e439d22b6fd9909dac249
# Author: Alex Deucher <alex@t41p.(none)>
# Date:   Wed Nov 22 11:56:41 2006 -0500
#@@ -228,12 +138,6 @@
# 
#     re-order SavageMapMem() so that ram detection works again.
# 
#-commit f2191d412832312b494f313841d094f87f64a5ff
#-Author: Ian Romanick <idr@umwelt.(none)>
#-Date:   Tue Aug 8 16:49:51 2006 -0700
#-
#-    Minimal change set to convert driver to the new PCI interfaces.  Enjoy.
#-
# commit 5108d1dd581a6e649f89812affba8481491e1bd7
# Author: Ian Romanick <idr@umwelt.(none)>
# Date:   Tue Aug 8 12:21:11 2006 -0700
--- b/configure.ac
+++ a/configure.ac
@@ -95,18 +95,6 @@
         AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
 fi
 
-save_CFLAGS="$CFLAGS"
-CFLAGS="$XORG_CFLAGS"
-AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
-              [XSERVER_LIBPCIACCESS=yes], [XSERVER_LIBPCIACCESS=no],
-              [#include "xorg-server.h"])
-CFLAGS="$save_CFLAGS"
-
-if test "x$XSERVER_LIBPCIACCESS" = xyes; then
-    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.10.0])
-fi
-AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
-
 AC_SUBST([DRI_CFLAGS])
 AC_SUBST([XORG_CFLAGS])
 AC_SUBST([moduledir])
--- b/src/savage_dga.c
+++ a/src/savage_dga.c
@@ -391,7 +391,7 @@
     SavagePtr psav = SAVPTR(pScrn);
 
     *name = NULL;	 /* no special device */
+    *mem = (unsigned char*)psav->FrameBufferBase;
-    *mem = (unsigned char*)psav->FbRegion.base;
     *size = psav->videoRambytes;
     *offset = 0;
     *flags = DGA_NEED_ROOT;
--- b/src/savage_dri.c
+++ a/src/savage_dri.c
@@ -467,8 +467,8 @@
    xf86DrvMsg( pScreen->myNum, X_INFO,
 	       "[agp] Mode 0x%08lx [AGP 0x%04x/0x%04x; Card 0x%04x/0x%04x]\n",
 	       mode, vendor, device,
+	       psav->PciInfo->vendor,
+	       psav->PciInfo->chipType );
-	       VENDOR_ID(psav->PciInfo),
-	       DEVICE_ID(psav->PciInfo));
 
    if ( drmAgpEnable( psav->drmFD, mode ) < 0 ) {
       xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n" );
@@ -624,7 +624,7 @@
    pSAVAGEDRIServer->registers.size = SAVAGEIOMAPSIZE;
 
    if ( drmAddMap( psav->drmFD,
+		   (drm_handle_t)psav->MmioBase,
-		   (drm_handle_t)psav->MmioRegion.base,
 		   pSAVAGEDRIServer->registers.size,
 		   DRM_REGISTERS,0,
 		   &pSAVAGEDRIServer->registers.handle ) < 0 ) {
@@ -636,7 +636,7 @@
    pSAVAGEDRIServer->aperture.size = 5 * 0x01000000;
    
    if ( drmAddMap( psav->drmFD,
+		   (drm_handle_t)(psav->ApertureBase),
-		   (drm_handle_t)(psav->ApertureRegion.base),
 		   pSAVAGEDRIServer->aperture.size,
 		   DRM_FRAME_BUFFER,0,
 		   &pSAVAGEDRIServer->aperture.handle ) < 0 ) {
@@ -882,18 +882,14 @@
       sprintf(pDRIInfo->busIdString,
               "PCI:%d:%d:%d",
               psav->PciInfo->bus,
-#ifdef XSERVER_LIBPCIACCESS
-              psav->PciInfo->dev,
-#else
               psav->PciInfo->device,
-#endif
               psav->PciInfo->func);
    }
    pDRIInfo->ddxDriverMajorVersion = SAVAGE_VERSION_MAJOR;
    pDRIInfo->ddxDriverMinorVersion = SAVAGE_VERSION_MINOR;
    pDRIInfo->ddxDriverPatchVersion = SAVAGE_PATCHLEVEL;
 
+   pDRIInfo->frameBufferPhysicalAddress = (pointer) psav->FrameBufferBase;
-   pDRIInfo->frameBufferPhysicalAddress = (pointer) psav->FbRegion.base;
    pDRIInfo->frameBufferSize = psav->videoRambytes;
    pDRIInfo->frameBufferStride = pScrn->displayWidth*(pScrn->bitsPerPixel/8);
    pDRIInfo->ddxDrawableTableEntry = SAVAGE_MAX_DRAWABLES;
--- b/src/savage_driver.h
+++ a/src/savage_driver.h
@@ -33,19 +33,6 @@
 #include <string.h>
 #include <math.h>
 
-#ifdef XSERVER_LIBPCIACCESS
-#include <pciaccess.h>
-#define VENDOR_ID(p)      (p)->vendor_id
-#define DEVICE_ID(p)      (p)->device_id
-#define SUBSYS_ID(p)      (p)->subdevice_id
-#define CHIP_REVISION(p)  (p)->revision
-#else
-#define VENDOR_ID(p)      (p)->vendor
-#define DEVICE_ID(p)      (p)->chipType
-#define SUBSYS_ID(p)      (p)->subsysCard
-#define CHIP_REVISION(p)  (p)->chipRev
-#endif
-
 #define MODE_24 24
 
 #include "compiler.h"
@@ -280,14 +267,8 @@
 } StatInfoRec,*StatInfoPtr;
 
 struct savage_region {
+    unsigned        bar;
+    unsigned long   offset;
-#ifdef XSERVER_LIBPCIACCESS
-    pciaddr_t       base;
-    pciaddr_t       size;
-#else
-    unsigned long   base;
-    unsigned long   size;
-#endif
-    void          * memory;
 };
 
 typedef struct _Savage {
@@ -311,12 +292,18 @@
     int			endfb;
 
     /* These are physical addresses. */
+    unsigned long	FrameBufferBase;
+    unsigned long	MmioBase;
+    unsigned long	ApertureBase;
     unsigned long	ShadowPhysical;
 
     /* These are linear addresses. */
     struct savage_region   MmioRegion;
     struct savage_region   FbRegion;
     struct savage_region   ApertureRegion;
+    unsigned               last_bar;
+
+    unsigned char*         bar_mappings[3];
 
     unsigned char*	MapBase;
     unsigned char*	BciMem;
@@ -376,12 +363,8 @@
     int			TVSizeY;
 
     CloseScreenProcPtr	CloseScreen;
-#ifdef XSERVER_LIBPCIACCESS
-    struct pci_device * PciInfo;
-#else
     pciVideoPtr		PciInfo;
     PCITAG		PciTag;
-#endif
     int			Chipset;
     int			ChipId;
     int			ChipRev;
--- b/src/savage_hwmc.c
+++ a/src/savage_hwmc.c
@@ -202,7 +202,7 @@
     return FALSE;
   }
 
+  offset = pSAVAGE->hwmcOffset + pSAVAGE->FrameBufferBase;
-  offset = pSAVAGE->hwmcOffset + pSAVAGE->FbRegion.base;
 
   if(drmAddMap(pSAVAGE->drmFD, offset, pSAVAGE->hwmcSize,
                DRM_FRAME_BUFFER, 0, &pSAVAGEDriPriv->xvmcSurfHandle) < 0)
commit 88141fd21214c501cafed73b1bba084b8a2bb929
Author: Alex Villací­s Lasso <a_villacis@palosanto.com>
Date:   Sat Jan 19 12:02:56 2008 -0500

    Make sure MMIO region is mapped VIDMEM_MMIO, not VIDMEM_FRAMEBUFFER

diff --git a/src/savage_driver.c b/src/savage_driver.c
index 8209afe..ed30efc 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3168,7 +3168,7 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
                                    & psav->MmioRegion.memory);
 #else
         psav->MmioRegion.memory = 
-            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
+            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO,
                           psav->PciTag, psav->MmioRegion.base,
                           psav->MmioRegion.size);
         err = (psav->MmioRegion.memory == NULL) ? errno : 0;
commit 908b155161ebb6cd506f43a3987e4d146ef5b330
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Mar 7 17:10:52 2008 +0100

    fixup pciaccess version detect

diff --git a/configure.ac b/configure.ac
index d596b7a..a326f92 100644
--- a/configure.ac
+++ b/configure.ac
@@ -103,7 +103,7 @@ AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
 CFLAGS="$save_CFLAGS"
 
 if test "x$XSERVER_LIBPCIACCESS" = xyes; then
-    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.10.0])
+    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.10])
 fi
 AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
 
commit 69eca3b8340966874ee3ffdc0d0a3f73de7a816a
Author: Dave Airlie <airlied@linux.ie>
Date:   Sat May 10 14:58:14 2008 +1000

    savage: fix typos in error message

diff --git a/src/savage_driver.c b/src/savage_driver.c
index eb06519..5fd7d66 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3128,7 +3128,7 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
 #endif
         if (err) {
             xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map framebuffer range (%d, %s).\n",
+                       "Internal error: could not map framebuffer range (%d, %s).\n",
                        err, strerror(err));
             return FALSE;
         }
@@ -3154,7 +3154,7 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
 #endif
         if (err) {
             xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map aperture range (%d, %s).\n",
+                       "Internal error: could not map aperture range (%d, %s).\n",
                        err, strerror(err));
             return FALSE;
         }
@@ -3179,7 +3179,7 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
 #endif
         if (err) {
             xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                       "Internal error: cound not map MMIO range (%d, %s).\n",
+                       "Internal error: could not map MMIO range (%d, %s).\n",
                        err, strerror(err));
             return FALSE;
         }
commit a01c9d12938f977a4310e0547866f01517059a3e
Author: Dave Airlie <airlied@linux.ie>
Date:   Sat May 10 15:06:18 2008 +1000

    savage/pciaccess: don't try to map aperture larger than region window

diff --git a/src/savage_driver.c b/src/savage_driver.c
index 5fd7d66..2205dc8 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3097,10 +3097,16 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
     /* On Paramount and Savage 2000, aperture 0 is PCI base 2.  On other
      * chipsets it's in the same BAR as the framebuffer.
      */
+
+    psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
+        ? (0x01000000 * 2) : (0x01000000 * 5);
+
     if ((psav->Chipset == S3_SUPERSAVAGE) 
         || (psav->Chipset == S3_SAVAGE2000)) {
 #ifdef XSERVER_LIBPCIACCESS
         psav->ApertureRegion.base = psav->PciInfo->regions[2].base_addr;
+        if (psav->ApertureRegion.size > psav->PciInfo->regions[2].size)
+            psav->ApertureRegion.size = psav->PciInfo->regions[2].size;
 #else
         psav->ApertureRegion.base = psav->PciInfo->memBase[2];
 #endif
@@ -3108,8 +3114,6 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
         psav->ApertureRegion.base = psav->FbRegion.base + 0x02000000;
     }
 
-    psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
-        ? (0x01000000 * 2) : (0x01000000 * 5);
 
 
     if (psav->FbRegion.size != 0) {
#23_commit-de3350e7937240686a90e51243e701b51a7f5249.patch --reverse -p1
#21_commit-97a9d2476868befc989b7ddb8067ac791bf2672e.patch --reverse -p1
#20_commit-fd20f5ddc2ef5945a757f6afedff5fb6214b607e.patch --reverse -p1
#19_commit-09c4dcc658b07f2672388eb4ab5fee3ebe190fc9.patch --reverse -p1
18_commit-a01c9d12938f977a4310e0547866f01517059a3e.patch --reverse -p1
17_commit-69eca3b8340966874ee3ffdc0d0a3f73de7a816a.patch --reverse -p1
#16_commit-9cb124b3542c942622a54d0ce429661516b1e2f4.patch --reverse -p1
#15_commit-d0cbce17e1d1e99dbecda339c6704b96606b20d3.patch --reverse -p1
#14_commit-6adc23cb19bfd331221df8dccb2dc88b8fc77821.patch --reverse -p1
#13_commit-371d8fbae6f077d5a6dd845fad129fa9c7b0a701.patch --reverse -p1
#12_commit-dc6a410290ab5103812a49273b27e3c72a7b2a98.patch --reverse -p1
11_commit-908b155161ebb6cd506f43a3987e4d146ef5b330.patch --reverse -p1
#10_commit-eeea6468df31ee770c8d7c9dab4fac7ff0865bba.patch --reverse -p1
#09_commit-d838ed93a23b4e9dc438ad17875423e8b90f0015.patch --reverse -p1
#08_commit-583051fce0d39fd2b8b5022016599e88d0af9041.patch --reverse -p1
#07_commit-52029dede1924c25275a1c6f20f68e98ba210e22.patch --reverse -p1
#06_commit-efd4ae6fda22a9283663cde23e6deead13130f6f.patch --reverse -p1
#05_commit-ee5b54a66495e51fb2a27b4ecb5875dae776b3c9.patch --reverse -p1
#04_commit-1169cb5bd96f7a4ac0deea6d085133d446ec0d6a.patch --reverse -p1
#03_commit-ce182d1883bba35491858b47291c8240441443d0.patch --reverse -p1
02_commit-88141fd21214c501cafed73b1bba084b8a2bb929.patch --reverse -p1
01_commit-fd2a598e64a522c028a20444379fa200a5724e62.patch --reverse -p1

01_gen_pci_ids.diff -p1
02_temporary_revert_pciaccess.diff -p1
03_request_16bit_depth.diff -p1

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: